Freigeben über


So wird's gemacht: Verwenden eines XAPOs in XAudio2

In diesem Thema erfahren Sie, wie Sie einen Effekt verwenden, der mit der XAPO-API in einer XAudio2-Effektkette erstellt wurde.

  1. Erstellen Sie das XAPO, wie unter Vorgehensweise: Erstellen eines XAPO beschrieben.

    Sie können auch Laufzeitparameterfunktionen implementieren, wie unter Vorgehensweise: Hinzufügen von Laufzeitparameterunterstützung zu einem XAPO beschrieben.

  2. Erstellen Sie eine instance des XAPO.

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. Füllen Sie eine XAUDIO2_EFFECT_DESCRIPTOR-Struktur mit Daten auf.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  4. Füllen Sie eine XAUDIO2_EFFECT_CHAIN-Struktur mit Daten auf.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. Wenden Sie die Effektkette mit der SetEffectChain-Funktion auf eine XAudio2-Stimme an.

    pVoice->SetEffectChain(&chain);
    

    Hinweis

    Eine Effektkette kann auch auf eine Stimme angewendet werden, wenn die Stimme erstellt wird, indem die Kette als Parameter an IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice oder IXAudio2::CreateMasteringVoice übergeben wird.

     

  6. Lassen Sie den Effekt mit IUnknown::Release frei.

    Wenn Sie ein XAPO erstellen, wird die Verweisanzahl 1 angegeben. Wenn das XAPO mit SetEffectChain an XAudio2 übergeben wird, erhöht XAudio2 die Verweisanzahl für XAPO. Durch das Freigeben des Verweises des Clients auf XAPO kann XAudio2 den Besitz von XAPO übernehmen. Wenn XAudio2 über den einzigen Verweis auf das XAPO verfügt, wird es verworfen, wenn es von XAudio2 nicht mehr verwendet wird. Wenn der Clientcode beispielsweise einen Verweis auf das XAPO für die spätere Wiederverwendung beibehalten muss, sollten Sie diesen Schritt überspringen.

    pXAPO->Release();
    
  7. Füllen Sie ggf. die dem Effekt zugeordnete Parameterstruktur auf. In diesem Fall der Prozentsatz der vollen Stärke, bei dem die Wirkung angewendet werden soll.

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. Übergeben Sie die Effektparameterstruktur an den Effekt, indem Sie die SetEffectParameters-Funktion für die Stimme aufrufen, an die der Effekt angefügt ist.

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

Audioeffekte

Übersicht über XAPO

XAudio2-Programmieranleitung