次の方法で共有


XAudio2 音量とピッチコントロール

このトピックでは、XAudio2 ボリュームとピッチコントロールについて説明します。

ボリュームコントロール

ボリューム レベルは、最大ゲインが 144.5 dB の -XAUDIO2_MAX_VOLUME_LEVEL とXAUDIO2_MAX_VOLUME_LEVEL (-224 ~ 224) の間の浮動小数点振幅乗数として表されます。 ボリュームが 1.0 の場合は、減衰またはゲインがないことを意味します。0 は無音を意味します。負のレベルを使用して、オーディオの位相を反転できます。 ボリューム ユニット間で変換する 2 つのインライン関数が XAudio2.h に用意されています。XAudio2DecibelsToAmplitudeRatio と XAudio2AmplitudeRatioToDecibels

ボリューム レベルは、XAudio2 グラフを通過する際に複数のポイントでオーディオに適用できます。

  • すべての音声の種類は、入力に全体的なボリューム レベルを適用し、IXAudio2Voice::SetVolume メソッドを使用して制御します。 サブミックスおよびマスタリング音声では、音声の組み込みのフィルターとエフェクト チェーンの直前に全体的な音量レベルが適用されます。 ソース ボイスでは、音声の組み込みのフィルターとエフェクト チェーンの後に全体的なボリューム レベルが適用されます。
  • 音声は、IXAudio2Voice::SetChannelVolumes メソッドを使用して制御する、チャネルごとのボリューム レベルを出力に適用します。 チャネルごとのボリューム レベルは、音声の最終的なサンプル レート変換の直後、および他の音声に送信される前に適用されます。
  • 1 つの音声と別の音声の間のすべての接続には、各ソース チャネルから各ターゲット チャネルにオーディオを送信するために使用されるレベルのテーブルがあり、IXAudio2Voice::SetOutputMatrix メソッドを使用して制御されます。

すべてのボリュームとチャネル ボリュームは、最初は既定で 1.0 です。 すべての送信レベル マトリックスは、信号の電力とチャネルの位置をできるだけ正確に保持する適切な値に既定で設定されます。 詳細については、XAudio2 の既定のチャネル マッピング の概要を参照してください。

手記

XAudio2 では、ユーザーのスピーカー設定に基づいてボリューム レベルが自動的に調整され、構成全体で一貫したボリューム レベルが維持されます。 ユーザーの設定が物理的な構成と一致しない場合、ボリュームは、正確な設定を持つシステムと比較して大きすぎるか、柔らかすぎます。 たとえば、2 つのスピーカーしか接続されていない 5.1 サラウンド サウンド スピーカー用に構成されたシステムは、ソフトすぎる音になります。 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

音量とピッチコントロールの

XAudio2 プログラミング ガイド

方法: 音声ピッチの を変更する

方法: 音声ボリュームの を変更する