XAudio2 オーディオ効果
オーディオ効果は、受信したオーディオ データを受け取り、渡す前にデータに対して何らかの操作を実行するオブジェクトです。 エフェクトを使用すると、オーディオ ストリームにリバーブを追加したり、ピーク音量レベルを監視したりするなど、さまざまなタスクを実行できます。
エフェクト チェーン
任意の XAudio2 音声で、オーディオ効果のチェーンをホストできます。 XAUDIO2_EFFECT_DESCRIPTOR 構造体の配列を使用して、エフェクト チェーンを指定できます。 各記述子には、クライアントによって提供される効果オブジェクトへのポインターが含まれています。 これらのオブジェクトは、オーディオ処理オブジェクト (APO) インターフェイスを実装する必要があります。 APO モデルの詳細については、XAPO の概要 を参照してください。
エフェクト チェーンは、クライアントによって動的に変更できます (XAudio2 エンジンの実行中)、エフェクトを個別に有効または無効にしたり、効果パラメーターを変更したりできます。すべてオーディオを中断することなく変更できます。 効果グラフの任意の側面が変更されるたびに、XAudio2 は不要な処理を回避するためにグラフを再び最適化します。 IXAudio2Voice::SetEffectChain 、IXAudio2Voice::EnableEffect、および IXAudio2Voice::SetEffectParametersを参照してください。
効果が XAudio2 音声にアタッチされると、XAudio2 は効果を制御し、クライアントはそれ以上呼び出さないでください。 これを保証する最も簡単な方法は、効果へのすべてのポインターを解放することです。
特定の XAudio2 音声のエフェクト チェーンのエフェクトは、その音声の処理サンプル レートで浮動小数点オーディオを使用して生成する必要があります。 変更できるオーディオフォーマットの唯一の側面は、チャンネル数です(たとえば、リバーブエフェクトはモノラルデータを5.1に変換できます)。 クライアントは、XAUDIO2_EFFECT_DESCRIPTORを使用できます。OutputChannels フィールドを使用して、各エフェクトが生成する必要があるチャネルの数を指定します。 効果チェーンは、効果のいずれかがこれらの要件を満たすことができない場合、または効果が次の効果で処理できない多数のチャネルを生成する場合に失敗します。 IXAudio2Voice::EnableEffect、または IXAudio2Voice::D isableEffect呼び出しをすると、エフェクト チェーンがこれらの要件を満たさなくなります。
XAudio2 で使用される APO インターフェイスは、破壊的な する必要があります。 つまり、出力バッファー内で見つけたデータは常に上書きされます。 そうしないと、XAudio2 では、これらのバッファーが以前に無音で初期化されたことは保証されないため、結果のオーディオが正しくない可能性があります。
XAudio2 組み込み効果
次の表に、XAudio2 によって提供される一連の組み込みのオーディオ効果とその作成方法を示します。
影響 | 作成方法 |
---|---|
リバーブ | XAudio2CreateReverbをする |
ボリューム メーター | XAudio2CreateVolumeMeterの |
オーディオエフェクトのインスタンスを作成および使用する例については、「方法: エフェクトチェーンを作成する」を参照してください。
XAudio2 のカスタム効果
XAPO API は、XAudio2 で使用できるカスタム オーディオ効果を作成するためのフレームワークを提供します。 XAPO を使用してカスタム効果を作成する例については、「方法: XAPOを作成する」を参照してください。
XAPO 効果ライブラリ (XAPOFX)
XAPOFX には、XAPO の追加ライブラリと、それらを作成するための一般的なメカニズムが用意されています。 XAudio2 で XAPOFX を使用する例については、「方法: XAudio2で XAPOFX を使用する」を参照してください。
関連トピック
-
オーディオエフェクト を する