Effets audio XAudio2

Un effet audio est un objet qui utilise des données audio entrantes et effectue une opération sur les données avant de les transmettre. Vous pouvez utiliser un effet pour effectuer diverses tâches, notamment ajouter un verbe à un flux audio et surveiller les niveaux de volume des pics.

Chaînes d’effet

Toute voix XAudio2 peut héberger une chaîne d’effets audio. Vous pouvez utiliser un tableau de structures de _ _ descripteur d’effet XAUDIO2 pour spécifier des chaînes d’effet. Chaque descripteur contient un pointeur vers un objet Effect fourni par le client. Ces objets doivent implémenter les interfaces d’objet de traitement audio (APO). Pour plus d’informations sur le modèle APO, consultez la vue d’ensemble de XAPO .

Les chaînes d’effet peuvent être modifiées de façon dynamique par le client (pendant que le moteur XAudio2 est en cours d’exécution), les effets peuvent être activés ou désactivés individuellement, et les paramètres d’effet peuvent être modifiés, le tout sans aucune interruption de l’audio. Chaque fois qu’un aspect du graphique d’effet change, XAudio2 optimise le graphique pour éviter tout traitement inutile. Consultez IXAudio2Voice :: SetEffectChain, IXAudio2Voice :: EnableEffectet IXAudio2Voice :: SetEffectParameters.

Une fois qu’un effet est attaché à une voix XAudio2, XAudio2 prend le contrôle de l’effet et le client ne doit pas effectuer d’autres appels à celui-ci. Le moyen le plus simple de s’en assurer consiste à libérer tous les pointeurs vers l’effet.

Les effets de la chaîne d’effet d’une voix XAudio2 donnée doivent consommer et produire un audio à virgule flottante au taux d’échantillonnage de traitement de cette voix. Le seul aspect du format audio qu’il peut modifier est le nombre de canaux (par exemple, un effet de réverbération peut convertir les données mono vers 5,1). Le client peut utiliser le _ _ descripteur d’effet XAUDIO2.Champ OutputChannels pour spécifier le nombre de canaux que chaque effet doit produire. La chaîne d’effet échoue si l’un des effets ne peut pas répondre à ces exigences, ou si un effet produit un nombre de canaux que l’effet suivant ne peut pas gérer. Tous les appels IXAudio2Voice :: EnableEffect ou IXAudio2Voice ::D isableeffect qui empêchent la chaîne d’effet d’arrêter de répondre à ces exigences échoueront.

Les interfaces APO utilisées dans XAudio2 doivent être destructrices. Cela signifie qu’ils remplacent toujours toutes les données qu’ils trouvent dans leurs mémoires tampons de sortie. Dans le cas contraire, l’audio résultant peut être incorrect, car XAudio2 ne garantit pas que ces mémoires tampons ont été précédemment initialisées avec le silence.

Effets intégrés XAudio2

Le tableau suivant répertorie l’ensemble des effets audio intégrés fournis par XAudio2 et leurs méthodes de création.

Effet Méthode de création
Réverbération XAudio2CreateReverb
Compteur de volume XAudio2CreateVolumeMeter

Pour obtenir un exemple de création et d’utilisation d’une instance d’un effet audio, consultez How to : Create a Effect Chain.

Effets personnalisés dans XAudio2

L’API XAPO fournit une infrastructure pour créer des effets audio personnalisés que vous pouvez utiliser dans XAudio2. Pour obtenir un exemple de création d’un effet personnalisé avec XAPO, consultez Comment : créer un XAPO.

Bibliothèque d’effets XAPO (XAPOFX)

XAPOFX fournit une bibliothèque supplémentaire de XAPOs et d’un mécanisme commun pour les créer. Pour obtenir un exemple d’utilisation de XAPOFX avec XAudio2, consultez Comment : utiliser XAPOFX dans XAudio2.

Effets audio

Guide de programmation XAudio2