我希望在将 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)
我曾想过循环通过 convertData.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;
}
输出文件绝对不是输入的缩放版本,但我认为这可能是由于上面的变量选择不正确。