3

リモートオーディオユニットを使用するiPhone用のオーディオ録音アプリを構築しています。着信バッファーでいくつかのオーディオ分析を実行した後、次を使用してバッファーをディスクに書き込みます。

ExtAudioFileWriteAsync

ただし、私が抱えている問題は、記録されたバッファーが思ったよりも静かであることです。

ディスクに書き込む直前に手動でボリューム係数を掛けてバッファのボリュームを増やしたいと思います。誰かがこれを行うための最良の方法を私に説明してもらえますか?

(さまざまな理由から、オーディオ ユニットのプロパティを変更するよりも、最終段階で手動で調整する方が魅力的です。それ以外の場合は、私のアプリケーションではうまく機能します。)

前もって感謝します!!

4

2 に答える 2

7

を使用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);
}
于 2012-07-20T10:51:56.720 に答える
0

あなたはこの問題を考えすぎているかもしれません。:-) バッファ内の値をループして、それぞれに目的のゲイン係数を掛けるだけです。

于 2012-07-20T08:31:26.320 に答える