DirectSound Node-Ordering Anforderungen

Ein DirectSound 2D- oder 3D-Mixer-Pin sollte über eine Knotenkette verfügen, die die folgende Sequenz von Knoten enthält:

Die Knoten in dieser Liste werden in der Reihenfolge angezeigt, in der sie vom Datenstreaming in den Pin gefunden werden. Andere Knoten können zwischen diesen Knoten ohne Probleme verschachtelt werden, sofern die obige Reihenfolge beibehalten wird.

Ein 2D-Pin erfordert alle Knoten in der vorherigen Liste, mit Ausnahme des optionalen 3D-Knotens. Ein 3D-Pin erfordert alle Knoten in der Liste, einschließlich des 3D-Knotens.

Der SRC-Knoten (Samplerate Conversion) sollte dem SUM-Knoten vorangehen. Die SRC- und SUM-Knoten sind in der Regel nebeneinander, obwohl dies keine Anforderung ist. Die IDirectSoundBuffer::SetFrequency-Methode (siehe Microsoft Windows SDK Dokumentation) stört die Neusamplingrate des SRC-Knotens.

Ein Mixer, der nur SRC- und SUM-Knoten enthält, reicht aus, um Datenströme zu mischen, die von Systemtreibern wie SWMidi und Redbook verwaltet werden (siehe SWMidi-Systemtreiber und Redbook-Systemtreiber). DirectSound erfordert jedoch zusätzlich, dass zwei Volumeknoten und ein Supermixerknoten vor dem SUM-Knoten stehen. DirectSound sendet Volumeänderungen, die sich aus IDirectSoundBuffer::SetVolume-Aufrufen an den ersten Volumeknoten ergeben, und sendet Schwenkeffekte von IDirectSoundBuffer::SetPan-Aufrufen an den zweiten Volumeknoten.

DirectSound kann 3D-Effekte auf einem 2D-Pin erzeugen, indem die Aufrufe SetVolume, SetPan und SetFrequency verwendet werden, um die Volume- und SRC-Knoten zu steuern:

  • SetVolume-Aufrufe können Änderungen im Abstand einer Soundquelle vom Listener simulieren.

  • SetPan-Aufrufe können Änderungen in der Ausrichtung einer Soundquelle relativ zum Listener simulieren.

  • SetFrequenzaufrufe können Dopplereffekte und HRTFs (headbezogene Übertragungsfunktionen) simulieren.

Der Supermixerknoten ist eine Kreuzleistenmatrix, die M-Eingabekanäle mit N-Ausgabekanälen verbindet, wobei N der Anzahl der Kanäle im endgültigen Ausgabestream Ihres Geräts entsprechen sollte.

Der optionale 3D-Knoten ist erforderlich, um hardwarebeschleunigte 3D-Effekte zu verwalten (siehe Unterstützung der 3D-DirectSound-Beschleunigung in WDM Audio), ist aber für die software emulierte 3D-Verarbeitung nicht erforderlich. Die meisten vorhandenen Implementierungen platzieren den 3D-Knoten vor dem SRC-Knoten und zwischen dem ersten Volumeknoten und dem Supermixerknoten, aber andere Konfigurationen sind möglich.

Der Eingabedatenstrom zum 3D-Knoten enthält in der Regel einen einzelnen Kanal. In DirectSound 8.0 und höher können nur Mono-PCM-Puffer mit 3D-Effekten erstellt werden. Frühere Versionen von DirectSound unterstützen jedoch 3D-Knoten mit Mono- und Stereo-Eingabestreams, und Treiber sollten beide unterstützen, um die Kompatibilität mit älteren Anwendungen sicherzustellen.