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 l’ajout d’une réverbération à un flux audio et la surveillance des pics de volume.
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’effets. 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 Vue d’ensemble de XAPO .
Les chaînes d’effets peuvent être modifiées dynamiquement par le client (pendant l’exécution du moteur XAudio2), les effets peuvent être activés ou désactivés individuellement, et les paramètres d’effet peuvent être modifiés, le tout sans interruption de l’audio. Chaque fois qu’un aspect du graphique d’effet change, XAudio2 optimise à nouveau le graphe pour éviter un traitement inutile. Consultez IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect et 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’autres appels. Le moyen le plus simple de s’en assurer consiste à libérer tous les pointeurs vers l’effet.
Les effets dans la chaîne d’effets d’une voix XAudio2 donnée doivent consommer et produire de l’audio à 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. Champ OutputChannels 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. Tous les appels IXAudio2Voice::EnableEffect ou IXAudio2Voice::D isableEffect qui entraînent l’arrêt de la chaîne d’effets de répondre à ces exigences échouent.
Les interfaces APO utilisées dans XAudio2 doivent être destructives. Cela signifie qu’ils remplacent toujours toutes les données qu’ils trouvent dans leurs mémoires tampons de sortie. Sinon, l’audio obtenu peut être incorrect, car XAudio2 ne garantit pas que ces mémoires tampons ont été initialisées précédemment en silence.
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 |
---|---|
Reverb | XAudio2CreateReverb |
Compteur de volume | XAudio2CreateVolumeMeter |
Pour obtenir un exemple de création et d’utilisation d’un instance d’un effet audio, consultez Guide pratique pour créer une chaîne d’effets.
L’API XAPO fournit une infrastructure pour la création d’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.
XAPOFX fournit une bibliothèque supplémentaire de XAPOs et un mécanisme commun pour les créer. Pour obtenir un exemple d’utilisation de XAPOFX avec XAudio2, consultez Guide pratique pour utiliser XAPOFX dans XAudio2.