У меня есть приложение для барабанов, которое я создал, основываясь на AVAudioPlayer
вместо обычных звуков системы, чтобы иметь немного контроля.Приложение для барабанов - лагги-звуки ... Как исправить?
Проблема заключается в том, что, когда сразу воспроизводятся два или более звука, он мешает и останавливает все звуки, поэтому ваш удар барабана становится прерывистым и случайным образом остановлен.
Например: бум бум бум бум chhhhh ч --- бум бо ---- chhhhh
Если вы можете сказать вообще от этого звукоподражания.
Вот звуковой код, у меня есть массив предварительно загруженного AVAudioPlayer
, так что он загружается быстрее.
- (void)triggerSound:(NSInteger)soundNumber {
NSInteger deltaNum = soundNumber*numberOfBuffers;
AVAudioPlayer *lowBuffer = [bufferBox objectAtIndex:deltaNum];
Boolean soundFired = FALSE;
// Find an unused buffer if possible, otherwise play sound from first buffer.
for (int i=0; i<numberOfBuffers; i++) {
NSLog(@"Buffer loop: %d", i);
NSLog(@"Buffer to load: %d", deltaNum);
AVAudioPlayer *tempBuffer = [bufferBox objectAtIndex:deltaNum+i];
if (!tempBuffer.playing) {
tempBuffer.currentTime = 0;
[tempBuffer play];
soundFired = TRUE;
break;
} else if (lowBuffer.currentTime>tempBuffer.currentTime) {
lowBuffer = tempBuffer;
}
}
if (!soundFired) {
lowBuffer.currentTime = 0;
[lowBuffer play];
soundFired = TRUE;
}
}
Этот метод вызывается нажатием кнопки IBAction. ex: [triggerObject triggerSound: 3].
Вся помощь оценивается!
Спасибо, я рассмотрю это вместо этого! Cheers –
* note * OpenAL не поддерживает сжатие AAC или MP3 из коробки. Вам придется вручную распаковывать и передавать их в буферы OpenAL. – Till