Pular para o conteúdo principal

SetShapeFiltVolCommand

Inicializa um comando FLTVOL do SHAPE.

Sintaxe

Parâmetros

command   _Inout_
Tipo: SHAPE_FLOWGRAPH_COMMAND*
O comando SHAPE_FLOWGRAPH_COMMAND a ser inicializado. contextId   
Tipo: UINT32
ID do contexto Filter/Volume (índice) que esse comando referenciará. inputMixBuffer   
Tipo: UINT32
ID do buffer de mixagem de entrada. outputMixBuffer   
Tipo: UINT32
ID do buffer de mixagem de saída.

Valor retornado

Tipo: HRESULT Se a função for bem-sucedida, ela retornará S_OK. Se um ou mais argumentos forem inválidos, a função retornará E_INVALIDARG.

Comentários

O bloco Filter/Volume (FLTVOL) é usado para modelar a oclusão de sons, ou seja, o som contornando ou atravessando um objeto, e distribui a energia sonora para vários alto-falantes para modelar a direção de onde o som chega. O bloco FLTVOL recebe um único canal de dados de entrada de um buffer de mixagem, filtra e dimensiona o volume e grava a saída em um buffer de mixagem. Normalmente, vários controles FLTVOL são usados para gerar um pan de uma entrada e várias saídas, como um pan de som surround. O panner normalmente é usado para pegar um som e realizar um pan para n alto-falantes, além de um ou mais efeitos de reverberação. A adição do filtro de variável de estado permite que um título crie facilmente efeitos de distância aprimorados, bem como efeitos de oclusão e obstrução no estilo I3DL2. O filtro de variável de estado, por sua natureza, pode criar ressonâncias que fazem com que valores intermediários excedam 1,0 (ou -1,0). Para mitigar os problemas criados pela saturação de valores intermediários, o bloco FLTVOL tem uma quantidade programável de dimensionamento de headroom que é aplicada ao sinal de entrada e depois compensada na saída. O dimensionamento é obtido deslocando aritmeticamente os dados para a direita em um determinado número de bits. O campo headroom do contexto especifica o número de bits de deslocamento para a direita que o sinal de entrada recebe antes do processamento FLTVOL (0, 1, 2 ou 3). Portanto, ao especificar um valor de headroom de 3, o filtro de variável de estado pode manter 3 bits extras (18 dB) de headroom para ressonâncias criadas internamente e estouro. Naturalmente, deslocar os dados de entrada para a direita necessariamente reduz a precisão na extremidade inferior. Os bits de headroom mais baixos do sinal de áudio de entrada são perdidos para sempre. Portanto, os bits de headroom geralmente devem ser especificados como diferentes de zero apenas se for determinado que ocorreu saturação interna no filtro de variável de estado. Isso pode ser feito verificando o valor do bit Internal Overflow no contexto FLTVOL. No caso em que os dados de origem originais são de 16 bits, como quando os dados de origem originais são XBOX Media Audio (XMA), os bits de headroom geralmente podem ser definidos com o máximo (3) sem uma alteração perceptível no som, já que os bits de ordem inferior são preenchidos com zeros de qualquer maneira. A implementação flexível do filtro de variável de estado também permite que a filtragem ressonante seja aplicada a uma voz para ajudar na criação de efeitos de áudio interessantes e na criação de variação. Os parâmetros do filtro e os atributos de volume são ajustados gradualmente por amostra para fornecer uma transição suave entre os pontos de ajuste de entrada e saída. O bloco FLTVOL é implementado como um filtro Chamberlin. O filtro fornece três modos, passa-alta, passa-baixa e passa-banda, com um controle variável de Q (largura de banda). Os parâmetros do filtro Chamberlin são calculados da seguinte maneira.
Os parâmetros f e q são calculados por software fora do bloco do SHAPE (Scalable Hardware Audio Processing Engine). Quando um coeficiente é atualizado, ele é ajustado gradualmente até o novo valor ao longo de um quadro de áudio. Bits de controle são usados para determinar qual saída (rejeita-banda, passa-alta, passa-banda ou passa-baixa) é usada como a saída final do bloco FLTVOL. Os dados de contexto de cada canal ou fluxo são armazenados na memória do sistema. Embora o desempenho seja limitado a 2560 fluxos simultâneos de 48 kHz, o que significa que o SHAPE pode processar até 2560 contextos FLTVOL por quadro de áudio, o número de contextos endereçáveis na memória é maior para simplificar cenários de reutilização de fluxos. O comportamento de filtragem foi projetado para ser idêntico ao do XAudio2.

Requisitos

Cabeçalho: shapeflowgraph.h Plataformas com suporte: consoles da família XBOX One e consoles XBOX Series

Confira também

Visão geral do ACP Visão geral do SHAPE shapeflowgraph
Última modificação em 6 de outubro de 2026