XAudio2 オーディオ グラフ

含まれている効果とその相互接続を含むすべての音声のセットは、オーディオ処理グラフと呼ばれます。 グラフは、クライアントから一連のオーディオ ストリームを入力として受け取り、それらを処理し、最終的な結果をオーディオ デバイスに配信します。 すべてのオーディオ処理は、グラフの量子によって定義された周期性を持つ別のスレッドで行われます (現在、Microsoft Windows では 10 ミリ秒、Xbox 360 では 5 1/3 ミリ秒)。 量子ミリ秒ごとに、スレッドはウェイクアップし、グラフ全体を介して量子ミリ秒のオーディオ データを分散します。 基本的なオーディオ グラフを作成する例については、「方法: 基本的なオーディオ処理グラフを作成する」を参照してください。

単純なオーディオ グラフ:

シンプルなオーディオ グラフ

クライアントは、実行中にグラフの状態を動的に制御できます。 制御アクションには、入力と出力の追加と削除、内部効果と相互接続の変更、効果のパラメーターの設定、グラフの一部の有効化と無効化などが含まれます。 オーディオ グラフを動的に変更する例については、「 方法: オーディオ グラフから音声を動的に追加または削除する」を参照してください。

グラフの処理

グラフ内のオブジェクトに影響を与えるメソッド呼び出しは、グラフの状態の変化に影響していると見なされます。 グラフの状態の変更には、次のものがあります。

  • 音声の作成と破棄
  • 音声の開始または停止
  • 音声の宛先を変更する
  • エフェクト チェーンの変更
  • 効果の有効化または無効化
  • エフェクトまたは組み込みの SCC、フィルター、ボリューム、ミキサーにパラメーターを設定する

グラフの状態の変更のセットを組み合わせて、アトミック トランザクションとして実行できます。 これらのアトミック操作は、操作セットと呼ばれます。 これらは、「 XAudio2 操作セット の概要」で説明されています。

内部データ表現

XAudio2 グラフ内のオーディオ データは、常に 32 ビット浮動小数点 PCM 形式で格納および処理されます。 ただし、チャンネル数とサンプルレートはグラフ内で異なる場合があります。 特定の音声がオーディオを処理する形式は、音声の作成に使用される音声の種類とパラメーターによって決まります。

音声の種類 パラメーター
IXAudio2SourceVoice ソース音声がオーディオを送信する音声のチャネル数とサンプル レート。
IXAudio2SubmixVoiceIXAudio2MasteringVoice サブミックス/マスタリング音声の作成に使用される InputChannels 引数と InputSampleRate 引数。

 

書式変換

XAudio2 は、オーディオが音声間を移動する場合に必要なサンプル レートまたはチャネル変換を処理します。次の制限があります。

  • 特定の音声のすべての宛先音声が同じサンプル レートで実行されている必要があります
  • エフェクトチェーン内のエフェクトはオーディオのチャンネル数を変更できますが、サンプルレートは変更できません
  • エフェクト チェーンの出力チャネル数は、送信先の音声と一致する必要があります
  • 上記のルールを破る動的なグラフ変更は行われません

入力側では、ソース音声は、任意の有効な PCM 形式、または XAudio2 でサポートされている圧縮形式のいずれかでデータを読み取ることができます。 入力データが圧縮されている場合、それ以降の処理が行われる前に、浮動小数点 PCM にデコードされます。

出力側では、マスタリング音声は PCM データのみを生成できます。 このデータは、入力 PCM データに関して上記と同じ制限を常に満たします。

オーディオ グラフ

XAudio2 プログラミング ガイド

方法: 基本的なオーディオ処理グラフの作成

方法: オーディオ グラフでのボイスの動的な追加または削除

方法: サブミックス ボイスの使用

方法: エフェクト チェーンの作成