Procédure : Utiliser un XAPO dans XAudio2

Cette rubrique vous montre comment utiliser un effet créé avec l’API XAPO dans une chaîne d’effet XAudio2.

  1. Créez le XAPO comme décrit dans How to : Create a XAPO.

    Vous pouvez également implémenter des fonctionnalités de paramètre au moment de l’exécution, comme décrit dans Comment : ajouter la prise en charge des paramètres d’exécution à un XAPO.

  2. Créez une instance de XAPO.

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. Remplir une structure de _ _ descripteur d’effet XAUDIO2 avec des données.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  4. Remplir une structure de _ _ chaîne d’effet XAUDIO2 avec des données.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. Appliquez la chaîne d’effet à une voix XAudio2 avec la fonction SetEffectChain .

    pVoice->SetEffectChain(&chain);
    

    Notes

    Une chaîne d’effet peut également être appliquée à une voix lorsque la voix est créée en passant la chaîne en tant que paramètre à IXAudio2 :: CreateSourceVoice, IXAudio2 :: CreateSubmixVoiceou IXAudio2 :: CreateMasteringVoice.

  6. Libérer l’effet avec IUnknown :: Release.

    Lorsque vous créez un XAPO, il aura un nombre de références de 1. Lorsque XAPO est passé à XAudio2 avec SetEffectChain, XAudio2 incrémente le décompte de références sur le XAPO. Le fait de libérer la référence du client au XAPO permet à XAudio2 de prendre possession du XAPO. Si XAudio2 a la seule référence à XAPO, il sera supprimé lorsqu’il n’est plus utilisé par XAudio2. Si le code client doit conserver une référence à XAPO pour une réutilisation ultérieure, par exemple, vous devez ignorer cette étape.

    pXAPO->Release();
    
  7. Renseignez la structure de paramètre, le cas échéant, associée à l’effet. Dans ce cas, pourcentage de la puissance totale à laquelle l’effet doit être appliqué.

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. Transmettez la structure du paramètre Effect à l’effet en appelant la fonction SetEffectParameters sur la voix à laquelle l’effet est attaché.

    hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
    

Effets audio

Présentation de XAPO

Guide de programmation XAudio2