Я делаю приложение для iPhone, которое включает учебники по гитарным весам.Цель состоит в том, чтобы у меня было много звуков, которые воспроизводит моя функция, пока не будет выполнена шкала.
Вот случайная шкала: FGABCD E. Я записал звуки, такие как C.mp3, D, E, F, G,A, B, C2, D2, E2 ... 2 - высшая нота.Вот код, который я использую:
- (IBAction) playScale {
NSLog(@"s: %i", s);
NSLog(@"p: %i", pressed);
[self.player prepareToPlay];
components = [self.scale componentsSeparatedByString:@", "];
ns_NoteToPlay = [components objectAtIndex:s];
NSString *path = [[NSBundle mainBundle] pathForResource:ns_NoteToPlay ofType:@"m4a"];
NSLog(@"Path : %@", path);
self.player.delegate = self;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[self.player play];
mChord.text = ns_NoteToPlay;
NSLog(@"Nombre de notes ds Array : %i", components.count);
if ( s == 0) {
int clean;
clean = components.count + 1;
[NSTimer scheduledTimerWithTimeInterval:clean target:self selector:@selector(cleanDots) userInfo:nil repeats:NO];
}
nsNowPlayingNote = ns_NoteToPlay;
[self instrument];
s = s+1;
if ((s < components.count) && (pressed == 0)) {
[self performSelector:@selector(playScale) withObject:nil afterDelay:0.8];
}
}
Это работает.Функция воспроизводит шкалу, но я не могу найти способ определить, когда вызывать более высокую ноту C2.Следовательно, когда он воспроизводит D, тогда C, C должен быть C2, но все равно вызывает C, что ниже.