Создание лучшего позиционного звука [AudioQueue манипуляции] - PullRequest
1 голос
/ 11 сентября 2009

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

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

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

и

б) особенности того, как AudioQueue реализует эту теорию

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


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

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

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

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

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

Ответы [ 2 ]

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

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

0 голосов
/ 02 января 2010

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

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

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

...