ファイルに再保存する前に、ExtAudioFileRead の出力の振幅を減らしたいと考えています。これが私の元のコードです:
AudioBufferList convertedData;
convertedData.mNumberBuffers=1;
convertedData.mBuffers[0].mNumberChannels=mySettings->outputFormat.mChannelsPerFrame;
convertedData.mBuffers[0].mDataByteSize=outputBufferSize;
convertedData.mBuffers[0].mData=outputBuffer;
frameCount=packetsPerBuffer;
CheckError(ExtAudioFileRead(mySettings->inputFile,
&frameCount,
&convertedData)
私は、convertedData.mBuffers[0].mData をループして、各サンプルに分数を乗算することを考えていましたが、それは "void" 型です。読んでくれてありがとう!
編集:
これが私が今下っているパスです:
UInt8 *littleBuffer=(UInt8*)malloc(sizeof(UInt8)*outputBufferSize);
Float32 *signalData=(Float32*)convertedData.mBuffers[0].mData;
for (int i=0;i<outputBufferSize;i++){
Float32 frameData=signalData[i];
littleBuffer[i]=0.5*(UInt8)frameData;
}
出力ファイルは間違いなく入力のスケーリングされたバージョンではありませんが、これは上記の誤った変数の選択が原因である可能性があると思います.