XAudio2 の音量とピッチの制御
このトピックでは、XAudio2 ボリュームとピッチの制御について説明します。
ボリュームコントロール
ボリューム レベルは、-XAUDIO2_MAX_VOLUME_LEVELとXAUDIO2_MAX_VOLUME_LEVEL (-224 ~ 224) の間の浮動小数点振幅乗算器として表され、最大ゲインは 144.5 dB です。 1.0 のボリュームは、減衰またはゲインがないことを意味します。0 は無音を意味します。負のレベルは、オーディオの位相を反転するために使用できます。 XAudio2.h には、ボリューム単位を変換するための 2 つのインライン関数が用意されています。 XAudio2DecibelsToAmplitudeRatio と XAudio2AmplitudeRatioToDecibels。
ボリューム レベルは、XAudio2 グラフを流れる複数のポイントでオーディオに適用できます。
- すべての音声の種類では、入力に全体的なボリューム レベルが適用され、 IXAudio2Voice::SetVolume メソッドを使用して制御されます。 サブミックスとマスタリング音声では、音声の組み込みのフィルターとエフェクト チェーンの直前に、全体的な音量レベルが適用されます。 ソース音声では、音声の組み込みのフィルターとエフェクト チェーンの後に、全体的な音量レベルが適用されます。
- 音声は、 IXAudio2Voice::SetChannelVolumes メソッドを使用して制御するチャネルごとのボリューム レベルを出力に適用します。 チャネルごとのボリューム レベルは、音声の最終的なサンプル レート変換の直後、および他の音声に送信される前に適用されます。
- 1 つの音声と別の音声の間のすべての接続には、 IXAudio2Voice::SetOutputMatrix メソッドを使用して制御される各ソース チャネルから各ターゲット チャネルにオーディオを送信するために使用されるレベルのテーブルがあります。
すべてのボリュームとチャネル ボリュームの既定値は、最初は 1.0 です。 すべての送信レベル マトリックスは、信号の電力とチャネルの位置を可能な限り正確に保持する適切な値に既定で設定されます。 詳細については、 XAudio2 の既定のチャネル マッピング の概要に関するページを参照してください。
注意
XAudio2 は、ボリューム レベルをユーザーのスピーカーの設定に基づいて自動的に調整して、構成全体を通して一貫性のあるボリューム レベルを維持します。 ユーザーの設定が物理的な構成と一致しない場合、正確な設定のシステムと比較してボリュームが大きすぎるか小さすぎるかのいずれかになります。 たとえば、5.1 サラウンド サウンド スピーカー用に構成されたシステムが 2 つのスピーカーにしか接続されていなければ、サウンドは小さすぎる結果となります。 XAudio2 は、ユーザーのスピーカー設定が物理的なセットアップに適合しているかどうかを判定できません。
ピッチ コントロール
ピッチは、1/1,024 から 1,024/1 の間の入力レート/出力レート比として表されます。含まれます。 比率が 1/1,024 の場合、ピッチは 10 オクターブ下がり、1,024/1 の比率では 10 オクターブ上げます。 IXAudio2SourceVoice::SetFrequencyRatio メソッドを使用して、ソース音声にピッチ調整を適用し、XAUDIO2_VOICE_NOPITCH フラグで作成されていない場合にのみ使用できます。 既定の周波数比は 1/1 です。つまり、ピッチは変更されません。 XAudio2.h には、周波数比と半音の間で変換する 2 つのインライン関数が用意されています。 XAudio2FrequencyRatioToSemitones と XAudio2SemitonesToFrequencyRatio。
関連トピック