2010-09-17 2 views
0

Я пытаюсь воспроизвести очень маленький аудиофайл - это примерно 0.05s в длину, и это несжатый WAV-файл.Звук тика должен храниться в памяти. AVAudioPlayer? SystemSounds? Core Audio?

Rgiht сейчас, я использую AVAudioPlayer для воспроизведения звука.

Я намерен играть звук с высокой быстротой рядом с прядильщиком, a la Price Is Right или Wheel of Fortune. Если я создаю экземпляр AVAudioPlayer с числом циклов 100, он действительно играет звук очень быстро, как я ожидал.

Если я выполняю [audioPlayer play] на каждом «тике» счетчика, однако звук сильно падает позади. Я предполагаю, что, в отличие от установки максимального количества циклов, [audioPlayer play] требует полной настройки и удаления памяти аудиоклипа для каждого воспроизведения.

Есть ли способ заставить клип оставаться в памяти в течение более длительного времени? Это очень частый звук, и в этом случае также будет хорошо поддерживать его во время всего запуска приложения.

ответ

0

Если вы зависите от более точного времени, вы можете попробовать использовать один из других звуковых API. Аудиоустройство RemoteIO сложнее, но позволяет наиболее точно определять время воспроизведения несжатых звуков. OpenAL и Audio Queues - это два других варианта.

+0

У вас есть мысли о плюсах и минусах этих трех? – MikeyWard

+1

RemoteIO - это базовый API для всех встроенных звуковых сигналов ввода-вывода и даст вам самую низкую задержку, но является самым сложным API. Звуковые очереди легче настраивать и использовать, но имеют более высокую задержку. OpenAL - это API более высокого уровня с большим количеством функций (3D-панорамирование и т. Д.), Но все же с подходящим контролем для игровых звуков. – hotpaw2

+0

Благодарим вас за эту информацию. Прямо сейчас я просматриваю RemoteIO и AudioQueues и отправлю туда, где я использую и почему/как. – MikeyWard

Смежные вопросы