Compartilhar via


Como: Adicionar ou remover dinamicamente vozes de um gráfico de áudio

Você pode alterar grafos de áudio a qualquer momento para adicionar ou remover vozes ou subgrafos inteiros. Este tópico mostra como adicionar ou remover vozes de submixagem de um grafo que foi criado seguindo as etapas em Como criar um gráfico de processamento de áudio básico. Uma única voz pode enviar sua saída para várias vozes ou para uma longa cadeia de vozes. Remover ou adicionar uma única voz pode ter um grande efeito em um grafo de áudio.

Para alterar dinamicamente um grafo de áudio

Adicionar e remover vozes de um grafo de áudio é muito semelhante a adicionar ou remover nós de uma lista ou grafo vinculado único.

  • Para adicionar uma voz ou subgrafo a um grafo de áudio

    Defina a saída de uma voz no grafo, a voz pai, como a voz a ser adicionada usando a função SetOutputVoices . Defina a saída da nova voz como o filho original da voz pai.

    XAUDIO2_SEND_DESCRIPTOR send = {0, pNewVoice};
    XAUDIO2_VOICE_SENDS sendlist = {1, &send};
    pParentVoice->SetOutputVoices(&sendlist);
    send.pOutputVoice = pChildVoice;
    pNewVoice->SetOutputVoices(&sendlist);
    
  • Para remover uma voz ou subgrafo de um grafo de áudio

    Defina a voz de saída do pai da voz que está sendo removida para o filho da voz que está sendo removida. Se a voz que está sendo removida estiver no final do grafo, a voz pai deverá ser alterada para apontar para a voz master.

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

Observe que, para maior clareza, cada pai tem apenas um filho nesses exemplos. Se um nó pai tiver vários filhos, sua lista de remetente conterá uma matriz de vozes em vez de um ponteiro para apenas uma voz.

Gráficos de áudio

Guia de Programação em XAudio2

Como: Compilar um gráfico de processamento de áudio básico

Como: Usar vozes de submixagem

Como: Criar uma cadeia de efeitos