Комментарии 12
Не пробовали использовать сторонние библиотеки, например fmod?
Основная задача была получать и проигрывать звук как можно ближе к железу, а так же оценивать задержку, которая при этом возникает. Поэтому от дополнительных промежуточных библиотек особой пользы не было бы. При работе с системным API напрямую больше контроля и проще решать проблемы, связанные, например, с различиями в работе на разных устройствах и версиях iOS.
fmod — не промежуточная библиотека, не обертка над существующими апи. Это кроссплатформенная библиотека для софтварного проигрывания, микширования и риалтайм обработки звука. Для больших проектов стоит $15к (это не аргумент, конечно, но подразумевает серьезность )
На виндовс ее использование дало мне меньшие задержки (по сравнению с XNA), и идеальное микширование нескольких звуковых дорожек. До iOS я пока еще не добрался и поэтому мне интересно было сравнение fmod с нативным апи.
Я далеко не профи в обработке звука — просто сейчас пишу музыкальную игру, но советовал бы посмотреть в сторону fmod если еще не щупали (не сочтите за рекламу).
На виндовс ее использование дало мне меньшие задержки (по сравнению с XNA), и идеальное микширование нескольких звуковых дорожек. До iOS я пока еще не добрался и поэтому мне интересно было сравнение fmod с нативным апи.
Я далеко не профи в обработке звука — просто сейчас пишу музыкальную игру, но советовал бы посмотреть в сторону fmod если еще не щупали (не сочтите за рекламу).
На iOS это практически наверняка обертка над AudioUnit. Не думаю, что Apple пустил их на уровень драйверов и системных сервисов. К тому же у VoIP приложений специфика немного другая, чем у игр либо музыкальных приложений. Много каналов микшировать не нужно, обработка идет в основном на 16kHz. Упор больше на алгоритмы компрессий, компенсации задержек, шумо и эхо-подавление.
В iOS 5, 6 все еще нужны пляски с бубном, чтобы заставить работать VoiceProcessingIO?
Звук у вас в приложении классный, был приятно удивлен. Еще хорошо, что когда у одного из абонентов штатный gprs, а у второго 3g, разговор можно довольно комфортно вести хоть и с 2-ух секундной задержкой.
Спасибо за статью. А для синтеза звука с минимальной задержкой (относительно тач-нажатия, естественно) какой на ваш взгляд API целесообразней использовать? Так же буду рад, если кто подскажет библиотеки для синтеза/процессинга многоканального звука в iOS.
AudioUnit дает минимальную задержку в любом случае, им так же можно микшировать несколько каналов и применять эквалайзер к каждому из каналов. Если нужно 3D позиционирование источников звука — то OpenAL проще. Не уверен правда насчет масштабируемости этих API на 10ки каналов на iOS. Насчет библиотек не подскажу, выше упоминали fmod, но использовать его не приходилось.
После ресемплирования на выходе получится целое число семплов, а дробный остаток будет храниться в виде коэффициентов фильтра ресемплера.
Маленький терминологический баг.
Дробный остаток в явном виде не хранится, по крайней мере в коэффициентах.
Фильтры, конечно, можно по-разному организовать, но правильнее сказать, что он «накапливается» в линии задержки. Накопили на целый сэмпл — выдали.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Программирование звука с низкой задержкой в iOS