Instrukcje: używanie XAPOFX w XAudio2
W tym temacie pokazano, jak używać jednego z efektów zawartych w XAPOFX w łańcuchu efektu XAudio2.
Aby użyć efektu z XAPOFX w łańcuchu efektów XAudio2
Utwórz efekt, przekazując identyfikator CLSID efektu XAPOFX do funkcji CreateFX.
W tym przypadku jest tworzony uproszczony efekt reverb FXReverb.
IUnknown * pXAPO; CreateFX(__uuidof(FXReverb),&pXAPO);
Wypełnij strukturę XAUDIO2_EFFECT_DESCRIPTOR danymi.
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
Wypełnij strukturę XAUDIO2_EFFECT_CHAIN danymi.
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
Zastosuj łańcuch efektu do głosu XAudio2 za pomocą funkcji SetEffectChain.
pVoice->SetEffectChain(&chain);
Notatka
Łańcuch efektów można również zastosować do głosu podczas tworzenia głosu, przekazując łańcuch jako parametr do IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoicelub IXAudio2::CreateMasteringVoice.
Zwolnij efekt za pomocą metody IUnknown::Release. Podczas tworzenia obiektu XAPO będzie on mieć liczbę odwołań równą 1. Po przekazaniu obiektu XAPO do klasy XAudio2 przy użyciu SetEffectChain, XAudio2 zwiększa licznik odwołań dla obiektu XAPO. Zwolnienie klienta z odniesienia do XAPO pozwala XAudio2 przejąć na własność XAPO. Jeśli XAudio2 ma jedyne odwołanie do obiektu XAPO, to odwołanie jest usuwane, gdy nie jest już używane przez XAudio2. Jeśli kod klienta musi zachować odwołanie do obiektu XAPO — na przykład do ponownego użycia później — możesz pominąć ten krok.
pXAPO->Release();
Wypełnij strukturę parametrów, jeśli istnieje, skojarzona z efektem.
W tym przypadku struktura FXREVERB_PARAMETERS służy do ustawiania rozmiaru dyfuzji i pomieszczenia, którego powinien używać efekt reverb.
FXREVERB_PARAMETERS XAPOParameters; XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION; XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
Przekaż strukturę parametrów efektu do efektu, wywołując SetEffectParameters funkcji na głosie, do którego jest dołączony efekt.
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( FXREVERB_PARAMETERS ) );
Tematy pokrewne
-
przewodnik programowania XAudio2