2009-09-11 2 views
1

Я создаю приложение, в котором есть требование для действительно точного позиционного звука, вплоть до уровня моделирования интервала между временными интервалами (ITD), небольшой разницы в задержке между стереоканалами, которые изменяется в зависимости от положения звука относительно слушателя. К сожалению, реализация iPhone Openal не имеет этой функции, а также не является аудиоустройством задержки, поставляемым в SDK.Создание лучшего позиционного звука [манипуляция AudioQueue]

После небольшого чтения, я решил, что лучший способ подойти к этой проблеме - реализовать собственную задержку, манипулируя AudioQueue (я также могу увидеть некоторые проекты в будущем, которые могут потребовать изучения этого материала, так что это хороший повод учиться как любой). Тем не менее, у меня нет никакого опыта в низкоуровневом аудиопрограмме вообще, и, конечно же, ни с AudioQueue. Попытка узнать, как:

а) общая теория обработки звука

и

б) специфика как звуковых сообщений реализует эту теорию

оказывается слишком много, чтобы принять все в один раз :(


Итак, мои вопросы:

1) где хорошее место, чтобы начать изучать DSP и как работает генерация и обработка звука в целом (вплоть до того, как аудиоданные структурированы в памяти, как работает микширование, что-то вроде этого)?

2) что такое хороший способ узнать, как это делает AudioQueue? Есть ли хорошие примеры того, как получить это чтение из сгенерированного кольцевого буфера, а просто для того, чтобы просто загружать биты файла по требованию с AudioFileReadPackets, например, пример Apple SpeakHere?

и, самое главное

3) есть более простой способ сделать это, что я упускать из виду?

ответ

1
  1. Я думаю, что Ричард Лайонс «Понимание цифровой обработки сигналов» широко почитается как хорошая книга DSP стартера, хотя это все математика и код.
  2. Если время настолько важно, вы, скорее всего, захотите использовать аудиоустройство удаленного ввода-вывода, а не аудиопамять с более высокой задержкой. Некоторые примеры аудиоустройств могут быть полезны для вас здесь, например, пример «aurioTouch», который использует модуль удаленного ввода-вывода для захвата и выполняет БПФ на нем для получения частот.
  3. Если встроенный AL не собирается делать это за вас, я думаю, вы выбрали «сумасшедший жесткий» уровень сложности.

Похоже, что вы, вероятно, должны быть в списке coreaudio-api (lists.apple.com), где разъезжаются инженеры Apple Core Audio.

0

Еще один отличный ресурс для изучения фундаментальных основ DSP и их приложений - Ученый и инженер-программист по цифровой обработке сигналов Стивена У. Смита. Он доступен онлайн бесплатно по номеру http://www.dspguide.com/, но вы также можете заказать печатную копию.

Мне очень нравится, как автор строит фундаментальную теорию таким образом, чтобы она была очень приятной.

Кроме того, вы должны ознакомиться с утилитой Core Audio Public Utility, которую вы найдете в/Developer/Extras/CoreAudio/PublicUtility. Он охватывает множество базовых структур, которые вам понадобятся для работы с CoreAudio.