Procédure : utiliser un XAPOFX dans XAudio2

Cette rubrique vous montre comment utiliser l’un des effets inclus dans XAPOFX dans une chaîne d’effet XAudio2.

Pour utiliser un effet à partir de XAPOFX dans une chaîne d’effet XAudio2

  1. Créez l’effet en passant le CLSID d’un effet XAPOFX à la fonction CreateFX .

    Dans ce cas, l’effet de réverbération simplifié FXReverb est créé.

    IUnknown * pXAPO;
    CreateFX(__uuidof(FXReverb),&pXAPO);
    
  2. 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;
    
  3. Remplir une structure de _ _ chaîne d’effet XAUDIO2 avec des données.

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

    pVoice->SetEffectChain(&chain);
    

    Notes

    Vous pouvez également appliquer une chaîne d’effet à une voix quand vous créez la voix en passant la chaîne en tant que paramètre à IXAudio2 :: CreateSourceVoice, IXAudio2 :: CreateSubmixVoiceou IXAudio2 :: CreateMasteringVoice.

  5. 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, cette référence est supprimée lorsqu’elle n’est plus utilisée par XAudio2. Si le code client doit conserver une référence à XAPO, par exemple, pour une réutilisation ultérieure, vous pouvez ignorer cette étape.

    pXAPO->Release();
    
  6. Renseignez la structure de paramètre, le cas échéant, associée à l’effet.

    Dans ce cas, la structure de _ paramètres FXREVERB est utilisée pour définir la diffusion et la taille de la salle que l’effet de réverbération doit utiliser.

    FXREVERB_PARAMETERS XAPOParameters;
    XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION;
    XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
    
  7. 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( FXREVERB_PARAMETERS ) );
    

Effets audio

Guide de programmation XAudio2