[英]Audio Unit recording: increased volume of buffers
我正在為iPhone開發一個錄音應用程序,其中使用了遠程音頻單元。 在對傳入緩沖區進行一些音頻分析之后,我使用以下方法將緩沖區寫入磁盤:
ExtAudioFileWriteAsync
但是,我的問題是記錄的緩沖區比我想要的安靜。
我想通過在寫入磁盤之前手動將它們乘以體積因子來增加緩沖區的容量。 誰能告訴我最好的方法嗎?
(由於各種原因,在最后階段進行手動調整比更改任何音頻單元屬性更具吸引力,否則對於我的應用程序效果很好。)
提前致謝!!
您可以使用Accelerate.framework
輕松快速地執行此操作。 由於您使用的是AudioUnits,因此我假設您已經對浮動緩沖區進行了去交織,所以這樣的方法應該可以工作:
float desiredGain = 1.06f; // or whatever linear gain you'd like
AudioBufferList *ioData; // audio from somewhere
for(UInt32 bufferIndex = 0; bufferIndex < ioData->mNumberBuffers; ++bufferIndex) {
float *rawBuffer = (float *)ioData->mBuffers[bufferIndex].mData;
vDSP_Length frameCount = ioData->mBuffers[bufferIndex].mDataByteSize / sizeof(float); // if you don't have it already
vDSP_vsmul(rawBuffer, 1, &desiredGain, rawBuffer, 1, frameCount);
}
該鏈接很好地演示了如何解決我的問題:
您可能會考慮這個問題。 :-)您只需要遍歷緩沖區中的值,然后將每個值乘以所需的增益系數即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.