Как я могу сделать измерение / средний пиковый уровень мощности в OpenAL? - PullRequest
1 голос
/ 02 апреля 2010

Я нахожусь в процессе переключения с AVAudioPlayer на OpenAL с использованием звукового движка Finch. Мне нужно сделать замер, то есть получить средние пиковые уровни. Звуковой двигатель Финча не обеспечивает этого, и я совершенно новичок в OpenAL. Как я могу это сделать? Любые примеры будут по достоинству оценены.

1 Ответ

2 голосов
/ 03 апреля 2010

Я предполагаю, что вы ищете замену метода AVAudioPlayer peakPowerForChannel:. К сожалению, нет. Тебе придется свернуть свое.

"Звуки" OpenAL - это комбинация "буфера" (данных сэмпла, загруженного в память) и "источника", который представляет собой нечто вроде свойств, которые вы хотите применить к данным сэмпла.

Простой подход к воспроизведению OpenAL заключается в загрузке всего файла в память и просто воспроизведении всего этого за один вызов. Однако вы можете использовать NSInputStream для считывания фрагмента данных выборки PCM из файла в буфер OpenAL, использования alBufferData () для вычисления вашей пиковой мощности с использованием собственной функции, воспроизведения фрагмента с использованием источника и повторения до EOF. .

Я знаю, что вы собираетесь использовать Finch, но вы должны дать AudioQueues действительно пристальный обзор (если измерение является для вас критической функцией). Это намного лучше разработано для этого типа заявления. В частности, свойство kAudioQueueProperty_CurrentLevelMeterDB предоставит вам либо пиковые среднеквадратичные значения (mPeakPower), либо средние среднеквадратичные уровни (mAveragePower), которые вы можете читать столько раз, сколько захотите.

Удачи и удачного кодирования!

Некоторые ресурсы, которые могут быть полезны:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...