#iphone #ios #openal
#iPhone #iOS #openal
Вопрос:
Есть ли какой-либо возможный способ выполнить реверберацию с использованием OpenAL на iOS? У кого-нибудь есть какие-либо фрагменты кода для достижения этого эффекта? Я знаю, что это не включено в библиотеку OpenAL для iOS, но я думаю, что все еще есть способ запрограммировать это.
Спасибо.
Ответ №1:
Реверберация теперь поддерживается в OpenAL (начиная с iOS 5.0). Вы можете просмотреть пример реализации в проекте ObjectAL:
https://github.com/kstenerud/ObjectAL-for-iPhone
Просто возьмите самый последний исходный код из этого репозитория, загрузите «ObjectAL.xcodeproj» и запустите цель ObjectALDemo на любом устройстве iOS 5.0 (также должно работать на симуляторе).
Фактическая реализация заключается в двух местах:
- https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/OpenAL/ALListener.m
- https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/OpenAL/ALSource.m
Найдите слово «реверберация» в этих файлах (и соответствующих файлах заголовков), чтобы найти название свойств и констант OpenAL, используемых для установки эффекта реверберации и управления им.
Удачи!
Ответ №2:
Вы могли бы использовать предварительно обработанный звук, если ситуация позволяет. Если вы хотите сделать это в режиме реального времени, посмотрите на DSP. Насколько мне известно, нет способа сделать это из коробки.
Дополнительные настольные API, такие как EFX и EAX, используют аппаратную обработку сигналов. Возможно, в будущем в этих портативных устройствах будут реализованы полные API OpenAL и OpenGL, но пока у нас есть урезанные версии по практическим соображениям, таким как стоимость и время автономной работы и т.д.
Я уверен, что есть способ, но это будет нелегко.