Partager via


Effets audio XAudio2

Un effet audio est un objet qui prend 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 une réverbération à un flux audio et surveiller les niveaux de volume maximal.

Chaînes d’effets

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

Les chaînes d’effets peuvent être modifiées dynamiquement par le client (alors 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, sans interruption de l’audio. Chaque fois qu’un aspect du graphique d’effet change, XAudio2 optimise à nouveau le graphique pour éviter tout traitement inutile. Voir 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 y effectuer d’appels supplémentaires. La façon la plus simple de s’assurer qu’il s’agit de libérer tous les pointeurs vers l’effet.

Les effets d’une chaîne d’effets XAudio2 donnée doivent consommer et produire du son à virgule flottante au taux d’échantillonnage de traitement de cette voix. Le seul aspect du format audio qu’ils peuvent modifier est le nombre de canaux (par exemple, un effet de réverbération peut convertir des données mono en 5.1). Le client peut utiliser le XAUDIO2_EFFECT_DESCRIPTOR.OutputChannels champ pour spécifier le nombre de canaux que chaque effet doit produire. La chaîne d’effets échoue si l’un des effets ne peut pas répondre à ces exigences, ou si un effet produit un certain nombre de canaux que l’effet suivant ne peut pas gérer. Tout IXAudio2Voice ::EnableEffect ou IXAudio2Voice ::D isableEffect appels qui provoquent l’échec de la chaîne d’effet pour arrêter la réalisation de ces exigences.

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. Sinon, l’audio résultant peut être incorrect, car XAudio2 ne garantit pas que ces mémoires tampons ont été initialisées précédemment avec le silence.

Effets intégrés XAudio2

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

Effet Creation, méthode
Réverbe 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 an Effect Chain.

Effets personnalisés dans XAudio2

L’API XAPO fournit une infrastructure permettant de 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 How to : Create an XAPO.

Bibliothèque d’effets XAPO (XAPOFX)

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

effets audio

Guide de programmation XAudio2