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’effets XAudio2.
Pour utiliser un effet de XAPOFX dans une chaîne d’effets XAudio2
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 en cours de création.
IUnknown * pXAPO; CreateFX(__uuidof(FXReverb),&pXAPO);
Remplissez une structure XAUDIO2_EFFECT_DESCRIPTOR avec des données.
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
Remplir une structure de XAUDIO2_EFFECT_CHAIN avec des données.
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
Appliquez la chaîne d’effets à une voix XAudio2 avec la fonction SetEffectChain .
pVoice->SetEffectChain(&chain);
Notes
Vous pouvez également appliquer une chaîne d’effets à une voix lorsque vous créez la voix en passant la chaîne en tant que paramètre à IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice ou IXAudio2::CreateMasteringVoice.
Relâchez l’effet avec IUnknown::Release. Lorsque vous créez un XAPO, il a un nombre de références de 1. Lorsque le XAPO est passé à XAudio2 avec SetEffectChain, XAudio2 incrémente le nombre de références sur le XAPO. La publication de la référence du client à l’objet XAPO permet à XAudio2 de s’approprier le 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();
Renseignez la structure de paramètre, le cas échéant, associée à l’effet.
Dans ce cas, la structure FXREVERB_PARAMETERS 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;
Passez la structure du paramètre d’effet à l’effet en appelant la fonction SetEffectParameters sur la voix à laquelle l’effet est attaché.
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( FXREVERB_PARAMETERS ) );
Rubriques connexes