Finch サウンド エンジンを使用して、AVAudioPlayer から OpenAL に切り替えようとしています。メータリングを行う必要があります。つまり、平均ピーク レベルを取得します。Finch サウンド エンジンはこれを提供しません。私は OpenAL をまったく初めて使用します。これどうやってするの?どんな例でも本当に感謝しています。
1 に答える
AVAudioPlayerのpeakPowerForChannel:
メソッドのドロップイン置換を探していると思います。残念ながら、何もありません。あなたはあなた自身を転がさなければならないでしょう。
OpenALの「サウンド」は、「バッファ」(メモリにロードされたサンプルデータ)と「ソース」の組み合わせであり、サンプルデータに適用するプロパティのようなものを表します。
OpenAL再生への簡単なアプローチは、ファイル全体をメモリにロードし、1回の呼び出しですべてを再生することです。ただし、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