Я в процессе переключения с AVAudioPlayer на OpenAL с использованием звукового движка Finch. Мне нужно делать измерения, т. Е. Получать средние пиковые уровни. Звуковой движок Finch не дает этого, и я полностью новичок в OpenAL. Как я могу это сделать? Любые примеры будут действительно оценены.Как я могу выполнить измерение/средний пиковый уровень мощности в OpenAL?
ответ
Я предполагаю, что вы ищете замену метода peakPowerForChannel:
AVAudioPlayer. К сожалению, их нет. Вам придется сворачивать самостоятельно.
OpenAL «звуки» представляют собой комбинацию «буфера» (ваши выборочные данные, загруженные в память) и «источник», который представляет что-то вроде свойств, которые вы хотите применить к вашим данным образца.
Простой подход к воспроизведению OpenAL - загрузить весь файл в память и просто воспроизвести все это за один вызов. Тем не менее, вы можете использовать NSInputStream для чтения в куске данных образца PCM из файла в буфер OpenAL, использовать alBufferData() для вычисления максимальной мощности с помощью вашей собственной функции, воспроизведения фрагмента с использованием вашего источника, а затем повторения до EOF ,
Я знаю, что вы намерены использовать Finch, но вы должны дать AudioQueues реальный близкий поиск (если измерение является важной особенностью для вас). Он гораздо лучше разработан для такого типа приложений. В частности, свойство kAudioQueueProperty_CurrentLevelMeterDB предоставит вам либо пиковый RMS (mPeakPower), либо средний уровень RMS (mAveragePower), который вы можете читать так часто, как вам нравится.
Удачи и счастливой кодировки!
Некоторые ресурсы, которые могут быть полезны:
- http://kcat.strangesoft.net/openal-tutorial.html
- http://connect.creativelabs.com/openal/Documentation/OpenAL_Programmers_Guide.pdf
- http://www.hydrogenaudio.org/forums/index.php?showtopic=78578
- http://developer.apple.com/mac/library/documentation/MusicAudio/Reference/AudioQueueReference/Reference/reference.html
Тьфу, я надеялся избежать AudioQueues. Никогда не мог это понять. Но спасибо за ответ, очень мало информации, которую я мог найти! – Thaurin