Я не знаком с аудиооборудованием самого iPhone, но, поскольку он не предоставляет никаких процедур внутреннего синтеза, я не удивлюсь, если не удастся захватить исходящий звук для повторной обработки.
Я подозреваю, что вам будет гораздо проще, особенно если вы не знакомы непосредственно с программированием аудиооборудования, вместо этого записывать действия барабана и временные интервалы и воспроизводить аудиофайлы таким же образом, как при первоначальном воспроизведении. Это также имело бы то преимущество, что вы могли редактировать, замедлять, ускорять и выполнять другие трюки без непосредственного изменения звука.
При ударе по барабанам вам нужно будет добавить массив NSMutableArray. Приведенный ниже пример основан на drumType (например, тег для нажатия кнопки ударных) и drumNextDelay, который представляет собой задержку (NSTimeInterval) до следующего удара ударных. Очевидно, есть больше способов справиться с этим, но это всего лишь пример.
Грубая версия воспроизведения может быть реализована путем многократного вызова executeSelector со следующим интервалом времени, что-то вроде следующего:
- (void) startPerformance {
self.drumIndex = -1;
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:0];
}
- (void) playDrumBeat {
self.drumIndex++;
[self playDrum:[[drumBeats objectAtIndex:self.drumIndex] drumType]];
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:[[drumBeats objectAtIndex:self.drumIndex] drumNextDelay]];
}
Это может привести к проблемам с синхронизацией с ОС, но я бы попробовал что-то подобное для первого среза и посмотрю, работает ли он.
Barney