Condividi tramite


Requisiti di Node-Ordering DirectSound

Un pin del mixer DirectSound 2D o 3D deve avere una catena di nodi contenente la sequenza di nodi seguente:

I nodi di questo elenco vengono visualizzati nell'ordine in cui vengono rilevati dal flusso di dati nel pin. Altri nodi possono essere interleavedi tra questi nodi senza causare problemi, a condizione che l'ordinamento precedente venga mantenuto.

Un pin 2D richiede tutti i nodi nell'elenco precedente, ad eccezione del nodo 3D, che è facoltativo. Un pin 3D richiede tutti i nodi nell'elenco, incluso il nodo 3D.

Il nodo SRC (conversione a frequenza di esempio) deve precedere il nodo SUM. I nodi SRC e SUM sono in genere adiacenti, anche se questo non è un requisito. Il metodo IDirectSoundBuffer::SetFrequency (vedere Microsoft Windows SDK documentazione) modifica la frequenza di rimpling del nodo SRC.

Un mixer che contiene solo nodi SRC e SUM è sufficiente per combinare i flussi gestiti dai driver di sistema, ad esempio SWMidi e Redbook (vedere SWMidi System Driver e Redbook System Driver), ma DirectSound richiede inoltre che due nodi del volume e un nodo supermixer precedono il nodo SUM. DirectSound invia modifiche al volume risultanti dalle chiamate IDirectSoundBuffer::SetVolume al primo nodo del volume e invia effetti di panoramica da IDirectSoundBuffer::SetPan chiamate al secondo nodo del volume.

DirectSound può produrre effetti 3D su un pin 2D usando le chiamate SetVolume, SetPan e SetFrequency per controllare il volume e i nodi SRC:

  • Le chiamate SetVolume possono simulare le modifiche a distanza di un'origine sonora dal listener.

  • Le chiamate SetPan possono simulare modifiche nell'orientamento di un'origine sonora rispetto al listener.

  • Le chiamate SetFrequency possono simulare effetti Doppler e HRTFs (funzioni di trasferimento head-related).

Il nodo supermixer è una matrice incrociata che connette i canali di input M ai canali di output N, dove N deve essere uguale al numero di canali nel flusso di output finale del dispositivo.

Il nodo 3D facoltativo è necessario per gestire gli effetti 3D accelerati dall'hardware (vedere Supporto dell'accelerazione 3D DirectSound in WDM Audio), ma non è necessario per l'elaborazione 3D emulata dal software. La maggior parte delle implementazioni esistenti inserisce il nodo 3D prima del nodo SRC e tra il primo nodo del volume e il nodo supermixer, ma sono possibili altre configurazioni.

Il flusso di input nel nodo 3D contiene in genere un singolo canale. In DirectSound 8.0 e versioni successive è possibile creare solo buffer PCM mono con effetti 3D. Le versioni precedenti di DirectSound, tuttavia, supportano nodi 3D con flussi di input mono e stereo e i driver devono supportare entrambi per garantire la compatibilità con le applicazioni precedenti.