Я сейчас перехожу с AVAudioPlayer на OpenAL, используя звуковой движок Finch. Мне нужно провести замер, т.е. получить средние пиковые уровни. Звуковой движок Finch не обеспечивает этого, и я совершенно новичок в OpenAL. Как я могу это сделать? Любые примеры были бы очень признательны.
Как я могу измерить / измерить средний пиковый уровень мощности в OpenAL?
Ответы (1)
Я предполагаю, что вы ищете замену методу 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