Grafo de áudio XAudio2

O conjunto de todas as vozes, com seus efeitos contidos e suas interconexões, é chamado de grafo de processamento de áudio. O grafo usa um conjunto de fluxos de áudio do cliente como entrada, os processa e entrega o resultado final para um dispositivo de áudio. Todo o processamento de áudio ocorre em um thread separado com uma periodicidade definida pelo quantum do grafo (atualmente 10 milissegundos no Microsoft Windows e 5 milissegundos 1/3 no Xbox 360). Cada milissegundo quântico, o thread acorda e dispersa milissegundos quânticos de dados de áudio por meio de todo o grafo. Para obter um exemplo de criação de um grafo de áudio básico, consulte Como criar um grafo básico de processamento de áudio.

Um grafo de áudio simples:

um grafo de áudio simples

O cliente pode controlar o estado do grafo dinamicamente enquanto ele está em execução. As ações de controle podem incluir adicionar e remover entradas e saídas, alterar os efeitos internos e interconexões, definir parâmetros sobre os efeitos, habilitar e desabilitar partes do grafo e assim por diante. Para obter um exemplo de alteração dinâmica de um grafo de áudio, consulte Como adicionar ou remover vozes dinamicamente de um grafo de áudio.

Processando o Grafo

Qualquer chamada de método que afete qualquer objeto no grafo é considerada uma alteração de estado de grafo. As alterações de estado do grafo incluem o seguinte:

  • Criando e destruindo vozes
  • Iniciar ou parar vozes
  • Alterando os destinos de uma voz
  • Modificando cadeias de efeito
  • Habilitar ou desabilitar efeitos
  • Definindo parâmetros sobre os efeitos ou nos SRCs internos, filtros, volumes e misturadores

Qualquer conjunto de alterações de estado de grafo pode ser combinado e executado como uma transação atômica. Essas operações atômicas são conhecidas como conjuntos de operações. Eles são discutidos na visão geral dos Conjuntos de Operações XAudio2 .

Representação de dados interna

Os dados de áudio no grafo XAudio2 são sempre armazenados e processados no formato PCM de ponto flutuante de 32 bits. No entanto, a contagem de canais e a taxa de exemplo podem variar dentro do grafo. O formato no qual uma determinada voz processa áudio é determinado pelo tipo de voz e parâmetros usados para criar a voz.

Tipo de voz Parâmetros
IXAudio2SourceVoice A contagem de canais e a taxa de exemplo das vozes para as quais a voz de origem envia áudio.
IXAudio2SubmixVoice e IXAudio2MasteringVoice Os argumentos InputChannels e InputSampleRate usados para criar a voz de submix/mastering.

 

Conversão de formato

O XAudio2 manipula qualquer taxa de exemplo ou conversões de canal necessárias à medida que o áudio viaja de uma voz para outra, com as seguintes limitações:

  • Todas as vozes de destino para uma voz específica devem estar em execução na mesma taxa de exemplo
  • Efeitos em uma cadeia de efeitos podem alterar a contagem de canais do áudio, mas não sua taxa de exemplo
  • A contagem de canais de saída de uma cadeia de efeitos deve corresponder à das vozes às quais ela envia
  • Nenhuma alteração dinâmica de grafo pode ser feita, o que quebraria as regras acima

No lado de entrada, as vozes de origem podem ler dados em qualquer formato PCM válido ou em qualquer um dos formatos compactados compatíveis com XAudio2. Se os dados de entrada forem compactados, eles serão decodificados para o PCM de ponto flutuante antes que qualquer processamento adicional seja feito.

No lado da saída, as vozes de domínio só podem produzir dados do PCM. Esses dados sempre atenderão às mesmas restrições descritas acima para dados pcm de entrada.

Grafos de áudio

Guia de Programação em XAudio2

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

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

Como: Usar vozes de submixagem

Como: Criar uma cadeia de efeitos