ファイルのサンプル レートを変更せずに、WAV ファイルから生のオーディオ サンプル (理想的には float として) を取得する最も簡単な方法は何ですか?
https://stackoverflow.com/a/4572990/1116197の例に従いましたが、からフロートを抽出する方法がわかりませんbuffer
。やるだけbuffer[n]
じゃダメ。basicDescription.mFormatFlags
ファイルによるとkAudioFormatFlagIsSignedInteger
、kAudioFormatFlagIsPacked
float
代わりに使用してデータを(sとして)抽出することができましたがExtAudioFileRef
、それには必要な出力形式を指定する必要がありますが、sampleRateを変更したくありません。例えば、あなたができる
AudioStreamBasicDescription audioFormat;
audioFormat.mSampleRate = 44100;
audioFormat.mFormatID = kAudioFormatLinearPCM;
audioFormat.mFormatFlags = kLinearPCMFormatFlagIsFloat;
audioFormat.mBitsPerChannel = sizeof(Float32) * 8;
audioFormat.mChannelsPerFrame = 1; // Mono
audioFormat.mBytesPerFrame = audioFormat.mChannelsPerFrame * sizeof(Float32); // == sizeof(Float32)
audioFormat.mFramesPerPacket = 1;
audioFormat.mBytesPerPacket = audioFormat.mFramesPerPacket * audioFormat.mBytesPerFrame; // = sizeof(Float32)
ExtAudioFileSetProperty(
fileRef,
kExtAudioFileProperty_ClientDataFormat,
sizeof (AudioStreamBasicDescription),
&audioFormat
),
AudioStreamBasicDescription
最初に using を使用してファイルを取得できたと思いますExtAudioFileGetProperty
が、Apple ドキュメント ( http://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/ExtendedAudioFileServicesReference/Reference/reference.html ) によると、プロパティ IDkExtAudioFileProperty_FileDataFormat
どちらが読み取り専用であるかが必要ですA file’s data format. Value is a read-only AudioStreamBasicDescription struct.
--したがって、変更できません追加mFormatFlags = kLinearPCMFormatFlagIsFloat
したがって、上記を実行して、新しい ASBD を作成し、すべてをコピーできると思いますが、すべてが非常に複雑すぎるように見えるので、間違ったツリーを完全に吠えているのではないでしょうか? これを行う簡単な方法はありますか?!