Нужно ли мне иметь дело с аудиоустройствами, когда мне нужны пользовательские аудиоэффекты, или я могу полагаться на Audio Queue Services? - PullRequest
3 голосов
/ 20 января 2012

Насколько я понимаю, службы Audio Queue Services являются API более высокого уровня, чем Audio Units, которые используют Audio Units. OpenAL также использует аудиоустройства. Так что Audio Units - это аудио API самого низкого уровня в iOS.

Мне нужно записать звук, а затем применить пользовательский фильтр к аудиопотоку и воспроизвести его. Audio Queue Services, кажется, хороши для записи, и их также можно использовать для воспроизведения. Но я все еще не уверен насчет того, позволяют ли они применять собственные алгоритмы к аудиопотоку, как это сделал бы аудиоблок AURemoteIO.

Ответы [ 2 ]

5 голосов
/ 20 января 2012

Из моего личного - а иногда и болезненного - опыта я бы сказал, использовать AudioQueue для приложений потокового типа.Для всего остального используйте AudioUnit.Последний может быть более низкого уровня, но я не вижу большой разницы в сложности.

Если честно, AudioUnit казался намного более простым для работы.

Теоретически, с AudioUnit вы должны бытьвозможность использовать другие плагины для применения эффектов.Однако до iOS 5 AURemoteIO был единственным доступным AudioUnit.Очевидно, в iOS 5 есть еще кое-что. У меня еще не было возможности проверить.

Если вы делаете это вручную, запустив алгоритм против буферов, вы сможете найти довольно много открытыхисходный код DSP.Есть также коммерческие приложения.Одна действительно хорошая библиотека - библиотека Dirac DSP для сдвига высоты тона и растяжения времени.

Вот отличное руководство по использованию AURemoteIO в ответе на этот другой вопрос:

Останов и быстрое воспроизведениеAudioQueue

1 голос
/ 20 января 2012

Если вы записываете и сохраняете несжатый звук, вы можете применять свои собственные звуковые эффекты непосредственно к захваченному звуковому буферу или файлу, не используя аудио APIЗатем воспроизведите результат, используя любой аудио API для iOS.

...