次の方法で共有


DirectSound のノードの順序付け要件

DirectSound 2D または 3D ミキサー ピンには、次の一連のノードを含むノード チェーンが必要です。

この一覧では、ノードは、ピンにストリームされているデータが遭遇する順序で表示されています。 上記の順序が維持されていれば、これらのノードの間に他のノードを挿入しても問題はありません。

2D ピンでは、省略可能な 3D ノードを除き、前の一覧のすべてのノードが必要です。 3D ピンには、3D ノードを含め、リスト内のすべてのノードが必要です。

SRC (サンプル レート変換) ノードは、SUM ノードの前に置く必要があります。 SRC ノードと SUM ノードは通常隣接していますが、これは必須ではありません。 IDirectSoundBuffer::SetFrequency メソッド (Microsoft Windows SDK のドキュメントを参照) は、SRC ノードのリサンプリング レートを示します。

SRC ノードと SUM ノードのみを含むミキサーは、SWMidi や Redbook などのシステム ドライバーによって管理されるストリームをミキシングするには十分ですが (「SWMidi システム ドライバー」と「Redbook システム ドライバー」を参照)、DirectSound ではさらに、2 つのボリューム ノードとスーパーミキサー ノードが SUM ノードより前に置かれている必要があります。 DirectSound は、IDirectSoundBuffer::SetVolume 呼び出しに起因するボリューム変更を最初のボリューム ノードに送信し、IDirectSoundBuffer::SetPan 呼び出しから 2 番目のボリューム ノードにパン効果を送信します。

DirectSound は、SetVolumeSetPan、および SetFrequency 呼び出しを使用してボリュームと SRC ノードを制御することで、2D ピンに対して 3D 効果を生成できます。

  • SetVolume 呼び出しでは、リスナーからのサウンド ソースの距離の変化をシミュレートすることができます。

  • SetPan 呼び出しでは、リスナーに対するサウンド ソースの向きの変化をシミュレートすることができます。

  • SetFrequency 呼び出しでは、ドップラー効果と HRTF (ヘッド関連の転送関数) をシミュレートすることができます。

スーパーミキサー ノードは、M 入力チャンネルを N 個の出力チャンネルに接続するクロスバー マトリックスです。ここでの N は、デバイスの最終的な出力ストリーム内のチャネル数と等しい必要があります。

オプションの 3D ノードは、ハードウェアで高速化された 3D 効果を管理するために必要ですが (「WDM オーディオでの 3D DirectSound アクセラレータのサポート」を参照)、ソフトウェアでエミュレートされた 3D 処理には必要ありません。 ほとんどの既存の実装では、SRC ノードの前、最初のボリューム ノードとスーパーミキサー ノードの間に 3D ノードが配置されますが、他の構成も可能です。

通常、3D ノードへの入力ストリームには 1 つのチャネルが含まれます。 DirectSound 8.0 以降では、3D 効果で作成できるのはモノラル PCM バッファーのみです。 ただし、以前のバージョンの DirectSound では、モノラル入力ストリームとステレオ入力ストリームの両方を持つ 3D ノードがサポートされているため、ドライバーは古いアプリケーションとの互換性を確保するために両方をサポートする必要があります。