Je ne suis pas familier avec le matériel audio dans l'iPhone lui-même, mais comme il ne met pas en routines internes synthétisation je ne serais pas être surpris s'il n'est pas possible de capturer l'audio sortant pour le retraitement. Je pense que vous trouverez beaucoup plus facile, en particulier si vous n'êtes pas familier avec la programmation audio directement, d'enregistrer les actions de batterie et les intervalles de temps et de rejouer les fichiers audio de la même manière qu'initialement joué. Cela aurait également l'avantage de pouvoir éditer, ralentir, accélérer, et d'autres astuces sans altérer l'audio directement. Lorsque la batterie est atteinte, vous devez ajouter un NSMutableArray. L'exemple ci-dessous est basé sur un drumType (une étiquette pour le bouton de batterie étant frappé par exemple), et un drumNextDelay qui est le délai (NSTimeInterval) au prochain coup de batterie. Il y a évidemment plus de façons de gérer cela, mais ce n'est qu'un exemple.
Une version approximative de la lecture pourrait être mis en œuvre en appelant performSelector à plusieurs reprises avec l'intervalle de temps suivant, quelque chose comme ce qui suit:
- (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]];
}
Cela peut être sujette à des problèmes de synchronisation avec le système d'exploitation, mais je poursuivre quelque chose comme ça pour une première coupe et voir si cela fonctionne.
Barney
Je pourrais l'utiliser comme première coupe. et oui cela ne tiendra pas compte du temps et du délai entre les temps réels. il ne ferait que le jouer l'un après l'autre sans aucun motif rythmique. Mais cela ressemble vraiment à la façon de faire. merci beaucoup pour le guide et l'exemple de code. Je l'apprécie vraiment. – Pavan