サウンドファイルを正規化するライブラリ関数はありますか?探し回ったのですが見つかりませんでした。
サウンドファイルを正規化し、それをサウンドファイルに設定して、オンザフライではなく1回だけ実行する必要があるようにしたいと思います。
これはCore-Audioで実行できますか?
サウンドファイルを正規化するライブラリ関数はありますか?探し回ったのですが見つかりませんでした。
サウンドファイルを正規化し、それをサウンドファイルに設定して、オンザフライではなく1回だけ実行する必要があるようにしたいと思います。
これはCore-Audioで実行できますか?
はい、できますが、1回の関数呼び出しではできません。
必要な機能は、実際にはCoreAudioではなくExtendedAudioFile.h
、フレームワークの一部ですAudioToolbox
。これは、iOSとMacOSXの両方で利用できます。これを見つけるのはかなり難しいことを証明できます。
このヘッダーで対象となる関数は、、ExtAudioFileOpenURL()
およびExtAudioFileRead()
ですExtAudioFileWrite()
。
あなたがしていることの概要:
ExtAudioFileOpenURL()
入力ファイルを開くために使用しますExtAudioFileGetProperty()
propertyIdとともに使用して、ファイルを説明するAudioStreamBasicDescriptionkExtAudioFileProperty_FileDataFormat
を取得します。
おそらく、必要な形式を取得するようにASBDを設定します。MacOSXのAudioToolBoxは、iOSよりもこれに適しているようです。
オーディオファイル全体を保持するのに十分な大きさのバッファの割り当てを計算します
ファイル全体を次のように読み取りますExtAudioFileRead()
-注:この呼び出しでは、一度にすべてを読み取ることはできない場合があります-POSIXとほぼ同じように動作しますread()
正規化を実行します
ExtAudioFileCreateWithURL()
出力ファイルの作成に使用ExtAudioFileWrite()
正規化されたサンプルを書き出すために使用します。ドキュメントは、作業コードの提供者として機能できるいくつかのサンプルプロジェクトにリンクしています。サンプルをfloatとして使用すると、正規化をはるかに簡単に行うことができますが、iOSでは、変換を自動的に機能させることができなかったため、自分でフォーマット変換する必要がある場合があります。