Share via


Procedura: Aggiungere o rimuovere dinamicamente voci da un grafico audio

È possibile modificare grafici audio in qualsiasi momento per aggiungere o rimuovere voci o interi sottogrammi. Questo argomento illustra come aggiungere o rimuovere voci di submix da un grafico creato seguendo la procedura descritta in Procedura: Creare un grafico di elaborazione audio di base. Una singola voce può inviare l'output a diverse voci o a una lunga catena di voci. La rimozione o l'aggiunta di una singola voce può avere un effetto notevole su un grafico audio.

Per modificare dinamicamente un grafico audio

L'aggiunta e la rimozione di voci da un grafico audio è molto simile all'aggiunta o alla rimozione di nodi da un singolo elenco o grafico collegato.

  • Per aggiungere una voce o un sottografo a un grafico audio

    Impostare l'output di una voce nel grafico, la voce padre, sulla voce da aggiungere usando la funzione SetOutputVoices . Impostare l'output della nuova voce sul figlio originale della voce padre.

    XAUDIO2_SEND_DESCRIPTOR send = {0, pNewVoice};
    XAUDIO2_VOICE_SENDS sendlist = {1, &send};
    pParentVoice->SetOutputVoices(&sendlist);
    send.pOutputVoice = pChildVoice;
    pNewVoice->SetOutputVoices(&sendlist);
    
  • Per rimuovere una voce o un sottografo da un grafico audio

    Impostare la voce di output dell'elemento padre della voce da rimuovere sul figlio della voce da rimuovere. Se la voce da rimuovere si trova alla fine del grafico, la voce padre deve essere modificata in modo che punti alla voce master.

    XAUDIO2_SEND_DESCRIPTOR send = {0, pChildVoice};
    XAUDIO2_VOICE_SENDS sendlist = {1, &send};
    pParentVoice->SetOutputVoices(&sendlist);
    

Si noti che per maggiore chiarezza ogni padre ha un solo elemento figlio in questi esempi. Se un nodo padre ha più elementi figlio, l'elenco di invio conterrà una matrice di voci anziché un puntatore a una sola voce.

Grafici audio

Guida alla programmazione di XAudio2

Procedura: Creare un grafico di elaborazione audio di base

Procedura: Usare voci di missaggio secondario

Procedura: Creare una catena di effetti