からサンプルを抽出しようとしている私は(客観Cを使用して)配列に格納.wavファイル&からサンプルを入手しようとしています.wavファイル
いずれかがこのことについてに行くための良い方法を知っています?
これまでのところ、libsndfile(http://www.mega-nerd.com/libsndfile/)は実装する必要があるかもしれませんが、どこから始めるべきかわかりません(私は比較的新しいこの)
感謝;)AudioToolbox.frameworkの
からサンプルを抽出しようとしている私は(客観Cを使用して)配列に格納.wavファイル&からサンプルを入手しようとしています.wavファイル
いずれかがこのことについてに行くための良い方法を知っています?
これまでのところ、libsndfile(http://www.mega-nerd.com/libsndfile/)は実装する必要があるかもしれませんが、どこから始めるべきかわかりません(私は比較的新しいこの)
感謝;)AudioToolbox.frameworkの
ExtAudioFile
とAudioFile
APIがあなたのためにこれを行います。まず、AQOfflineRenderTestは良いサンプルかもしれません。
ウェーブファイルの種類が分かっている場合(例えば、48KHzで16ビットモノをサンプリングした場合)、最も簡単な方法は、バイナリファイルとしてウェーブファイルを開き、ヘッダを通過して解析を開始することですサンプルバイト
Cの構造に精通していて、バイト参照のためのオンラインバイトがたくさんある場合、波ヘッダーはこのように見えます。
typedef struct { char chunkID [4]; UINT32 chunkSize; //このフィールドのみを計算する必要があります char format [4]; charサブチャンクID [4]; UINT32 subchunk1Size; UINT16 audioFormat; UINT16 numChannels; UINT32 sampleRate; UINT32 byteRate; UINT16 blockAlign; UINT16 bitsPerSample; charサブチャンクID [4]; UINT32 subchunk2Size; //このフィールドは計算する必要があります } WAVEHEADER;
この時点以降のサンプルは順調です。 monoの場合、ステレオの場合は1つのサンプルが存在し、その1つのチャネルの後にその時間の位置の次のチャネルが続きます。
もちろん、ウェーブファイルの種類やサイズがわからない場合は、ヘッダーを解析することができます。