Я создаю приложение, которое требует действительно точного позиционного звука, вплоть до уровня моделирования межвузовой разницы во времени (ITD), небольшой разницы в задержке между стереоканалами, которая зависит от положения звука относительно слушатель. К сожалению, реализация OpenAL для iPhone не имеет этой функции, а также аудиоустройство задержки, поставляемое в SDK.
После небольшого прочтения я решил, что лучший способ решить эту проблему - реализовать собственную задержку, манипулируя AudioQueue (в моем будущем я также вижу некоторые проекты, которые могут потребовать изучения этого материала, поэтому это хороший повод для изучения, как и любой другой). Тем не менее, у меня нет никакого опыта в низкоуровневом звуковом программировании, и уж точно нет опыта работы с AudioQueue Попытка выучить оба:
а) общая теория обработки звука
и
б) особенности того, как AudioQueue реализует эту теорию
доказывает, что слишком много, чтобы принять все сразу: (
Итак, мои вопросы:
1) где хорошее место, чтобы начать изучение DSP и как генерация и обработка аудио работают в целом (вплоть до уровня того, как аудиоданные структурированы в памяти, как работает микширование, такая вещь)?
2) Какой хороший способ почувствовать, как AudioQueue делает это? Есть ли хорошие примеры того, как получить чтение из сгенерированного кольцевого буфера, а не просто выборку битов файла по запросу с AudioFileReadPackets
, как это делает пример Apple SpeakHere?
и, самое главное
3) есть более простой способ сделать это, что я упустил из виду?