4

iPhone からマイク入力の音量を取得し、それを使用して別のオーディオ ユニット ソースから再生されるサウンドの音量を設定する合理化されたオーディオ アプリケーションを作成しようとしています。

グラフを使用してこれらすべてを行うことをお勧めします。音量レベル以外のマイクからの情報は必要ありません。前述のように、パフォーマンスが高く、コードが最小限の合理化されたソリューションにしたいと考えています。

ドキュメントには、入力または出力、またはその両方に使用できると記載されているサブタイプとして、remoteIO を使用した「出力」オーディオ タイプを使用するソリューションを調査しています。

グラフのみを使用してこれを達成する方法が見つからないようです。以前に AVAudioRecorder で実装しましたが、そのアプローチには満足していません。aurioTouch と aurioTouch2 の例を見てきましたが、どちらもグラフ アプローチを実装していません。Apple のオーディオ ドキュメントには、これが進むべき道であると記載されています。

4

1 に答える 1

4

ノボカインは、マイクからのデータをすぐに取得できるため、おそらく最も簡単なソリューションです。おそらく、それが提供するバッファを取り、そのRMSを計算したいと思うでしょう。これにより、「現在のマイクの音量はどれくらいですか」という大まかな答えが得られます。

AUGraph の観点からあなたの質問に答えるには、リモート IO を AUGraph への入力として使用するのは難しいということです。技術的には、RemoteIO は出力ユニットであり、AUGraph をやや混乱させます。通常、リング バッファを使用して RemoteIO のマイク入力からオーディオをバッファし、後で AUGraph にフィードします (つまり、AUGraph のヘッドがアプリにレンダー コールバックを発行するとき)。もちろん、ここまで来れば AUGraph はまったく必要なく、リング バッファーの段階でオーディオ レベルを確認するだけで済みます。

とはいえ、サンプルが AUGraph に入っているとしましょう。特定の時点での音量をどのように伝えますか? メータリング機能を備えた AUMultiChannelMixer オーディオ ユニットを使用できます。入力スコープでkAudioUnitProperty_MeteringModeプロパティを有効にし、 kMultiChannelMixerParam_PreAveragePowerパラメータをチェックして、その時点でミキサーを通過するオーディオのボリュームを確認します (値は -120 ~ 0 の浮動小数点数で、-120dB ~ 0dB を表します)。

于 2012-10-19T17:46:26.907 に答える