> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SetShapeFiltVolCommand

> SetShapeFiltVolCommand

# SetShapeFiltVolCommand

Initialise une commande FLTVOL SHAPE.

## Syntaxe

```cpp theme={null}
HRESULT SetShapeFiltVolCommand(  
         SHAPE_FLOWGRAPH_COMMAND* command,  
         UINT32 contextId,  
         UINT32 inputMixBuffer,  
         UINT32 outputMixBuffer  
)  
```

### Paramètres

*command*   \_Inout\_\
Type : SHAPE\_FLOWGRAPH\_COMMAND\*

La commande [SHAPE\_FLOWGRAPH\_COMMAND](/fr-CA/reference/audio/shapeflowgraph/structs/shape_flowgraph_command) à initialiser.

*contextId*   \
Type : UINT32

ID (index) du contexte Filtre/Volume auquel cette commande fera référence.

*inputMixBuffer*   \
Type : UINT32

ID du tampon de mixage d'entrée.

*outputMixBuffer*   \
Type : UINT32

ID du tampon de mixage de sortie.

### Valeur de retour

Type : HRESULT

Si la fonction réussit, elle retourne `S_OK`. Si un ou plusieurs des arguments ne sont pas valides, la fonction retourne `E_INVALIDARG`.

## Remarques

Le bloc Filtre/Volume (FLTVOL) sert à modéliser l'occlusion des sons, c'est-à-dire le son qui contourne ou traverse un objet, et distribue l'énergie sonore à plusieurs haut-parleurs pour modéliser la direction d'où provient le son. Le bloc FLTVOL prend un seul canal de données d'entrée d'un tampon de mixage, le filtre et en ajuste le volume, puis écrit la sortie dans un tampon de mixage. En général, plusieurs contrôles FLTVOL sont utilisés pour générer un panoramique à une entrée et plusieurs sorties, comme un panoramique ambiophonique. Le panoramiqueur sert généralement à prendre un son et à effectuer un panoramique sur *n* haut-parleurs, plus un ou plusieurs effets de réverbération. L'ajout du filtre à variables d'état permet à un titre de créer facilement des effets de distance améliorés ainsi que des effets d'occlusion et d'obstruction de style I3DL2.

Par sa nature, le filtre à variables d'état peut créer des résonances qui font dépasser 1,0 (ou -1,0) aux valeurs intermédiaires. Pour atténuer les problèmes causés par la saturation des valeurs intermédiaires, le bloc FLTVOL dispose d'une mise à l'échelle de marge programmable, appliquée au signal entrant puis compensée à la sortie. La mise à l'échelle est réalisée par un décalage arithmétique à droite des données d'un certain nombre de bits. Le champ de marge du contexte spécifie le nombre de bits de décalage à droite que reçoit le signal entrant avant le traitement FLTVOL (0, 1, 2 ou 3). Ainsi, en spécifiant une valeur de marge de 3, le filtre à variables d'état peut conserver 3 bits supplémentaires (18 dB) de marge pour les résonances et les dépassements créés à l'interne.

Bien entendu, le décalage à droite des données entrantes réduit nécessairement la précision dans le bas de l'échelle. Les bits de marge les plus bas du signal audio entrant sont perdus définitivement. Par conséquent, les bits de marge ne devraient généralement être spécifiés à une valeur non nulle que s'il est déterminé qu'une saturation interne s'est produite dans le filtre à variables d'état. Pour ce faire, vérifiez la valeur du bit de dépassement interne dans le contexte FLTVOL. Lorsque les données sources d'origine sont sur 16 bits, par exemple si les données sources d'origine sont au format XBOX Media Audio (XMA), les bits de marge peuvent habituellement être réglés à leur maximum (3) sans changement perceptible du son, puisque les bits de poids faible sont de toute façon complétés par des zéros.

L'implémentation flexible du filtre à variables d'état permet également d'appliquer un filtrage résonant à une voix afin de faciliter la création d'effets audio intéressants et de variations. Les paramètres du filtre et les attributs de volume sont ajustés progressivement, échantillon par échantillon, afin d'offrir une transition fluide entre les points de consigne d'entrée et de sortie. Le bloc FLTVOL est implémenté sous forme de filtre de Chamberlin. Le filtre offre trois modes, passe-haut, passe-bas et passe-bande, avec un contrôle variable de *Q* (bande passante). Les paramètres du filtre de Chamberlin sont calculés comme suit.

```cpp theme={null}
f := 2*Sin( ( PI * FC )/FS)
```

```cpp theme={null}
q := 1/Q, where Q ranges from 0.5 to 5 
```

Les paramètres *f* et *q* sont calculés par logiciel à l'extérieur du bloc du moteur de traitement audio matériel évolutif (SHAPE). Lorsqu'un coefficient est mis à jour, il progresse vers la nouvelle valeur au cours d'une trame audio. Des bits de contrôle servent à déterminer quelle sortie (coupe-bande, passe-haut, passe-bande ou passe-bas) est utilisée comme sortie finale du bloc FLTVOL.

Les données de contexte de chaque canal ou flux sont stockées en mémoire système. Bien que les performances soient limitées à 2560 flux simultanés à 48 kHz, ce qui signifie que SHAPE peut traiter jusqu'à 2560 contextes FLTVOL par trame audio, le nombre de contextes adressables en mémoire est plus grand afin de simplifier les scénarios de réutilisation de flux.

Le comportement de filtrage est conçu pour être identique à celui de [XAudio2](/fr-CA/build/console-features/audio/overviews/xaudio2-overview).

## Configuration requise

**En-tête :** shapeflowgraph.h

**Plateformes prises en charge :** consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[Vue d'ensemble de l'ACP](/fr-CA/build/console-features/audio/overviews/acp-overview)

[Vue d'ensemble de SHAPE](/fr-CA/build/console-features/audio/overviews/shape-overview)

[shapeflowgraph](/fr-CA/reference/audio/shapeflowgraph/shapeflowgraph_members)


## Related topics

- [SetShapeFiltVolCommand](/reference/audio/shapeflowgraph/functions/setshapefiltvolcommand.md)
- [ShapeFlowGraph](/reference/audio/shapeflowgraph/shapeflowgraph_members.md)
- [SetShapeFiltVolQ](/reference/audio/shapefiltvolcontext/functions/setshapefiltvolq.md)
- [SetShapeFiltVolQTarget](/reference/audio/shapefiltvolcontext/functions/setshapefiltvolqtarget.md)
- [SetShapeFiltVolFrequency](/reference/audio/shapefiltvolcontext/functions/setshapefiltvolfrequency.md)
