Requisitos de Node-Ordering do DirectSound
Um pino de mixer 2D ou 3D do DirectSound deve ter uma cadeia de nós que contenha a seguinte sequência de nós:
Nó de volume ( consulte KSNODETYPE_VOLUME.)
Nó 3D (este nó é opcional. Confira KSNODETYPE_3D_EFFECTS.)
Nó supermixer (consulte KSNODETYPE_SUPERMIX.)
Nó de volume (para efeitos de movimento panorâmico)
Nó SRC (consulte KSNODETYPE_SRC.)
Nó SOMA ( consulte KSNODETYPE_SUM.)
Os nós nessa lista aparecem na ordem em que são encontrados pelo streaming de dados para o pino. Outros nós podem ser intercalados entre esses nós sem causar problemas, desde que a ordenação acima seja preservada.
Um pin 2D requer todos os nós na lista anterior, exceto o nó 3D, que é opcional. Um pino 3D requer todos os nós na lista, incluindo o nó 3D.
O nó SRC (conversão de taxa de amostra) deve preceder o nó SOMA. Os nós SRC e SUM normalmente são adjacentes, embora isso não seja um requisito. O método IDirectSoundBuffer::SetFrequency (consulte SDK do Microsoft Windows documentação) perturba a taxa de resampling do nó SRC.
Um mixer que contém apenas nós SRC e SUM é suficiente para misturar fluxos gerenciados por drivers do sistema, como SWMidi e Redbook (consulte Driver do Sistema SWMidi e Driver do Sistema Redbook), mas o DirectSound também exige que dois nós de volume e um nó de supermixer precedam o nó SOMA. O DirectSound envia alterações de volume resultantes de chamadas IDirectSoundBuffer::SetVolume para o primeiro nó de volume e envia efeitos panorâmicos de chamadas IDirectSoundBuffer::SetPan para o segundo nó de volume.
O DirectSound pode produzir efeitos 3D em um pin 2D usando as chamadas SetVolume, SetPan e SetFrequency para controlar o volume e os nós SRC:
As chamadas SetVolume podem simular alterações na distância de uma fonte de som do ouvinte.
As chamadas SetPan podem simular alterações na orientação de uma fonte de som em relação ao ouvinte.
As chamadas SetFrequency podem simular efeitos do Doppler e HRTFs (funções de transferência relacionadas à cabeça).
O nó supermixer é uma matriz de barras cruzadas que conecta canais de entrada M a N canais de saída, em que N deve ser igual ao número de canais no fluxo de saída final do dispositivo.
O nó 3D opcional é necessário para gerenciar efeitos 3D acelerados por hardware (consulte Suporte à aceleração de DirectSound 3D no áudio WDM), mas não é necessário para processamento 3D emulado por software. A maioria das implementações existentes coloca o nó 3D antes do nó SRC e entre o primeiro nó de volume e o nó do supermixer, mas outras configurações são possíveis.
O fluxo de entrada para o nó 3D normalmente contém um único canal. No DirectSound 8.0 e posterior, somente buffers PCM mono podem ser criados com efeitos 3D. No entanto, as versões anteriores do DirectSound dão suporte a nós 3D com fluxos de entrada mono e estéreo, e os drivers devem dar suporte a ambos para garantir a compatibilidade com aplicativos mais antigos.