Bagikan melalui


Cara: Menggunakan XAPOFX di XAudio2

Topik ini menunjukkan kepada Anda cara menggunakan salah satu efek yang disertakan dalam XAPOFX dalam rantai efek XAudio2.

Untuk menggunakan efek dari XAPOFX dalam rantai efek XAudio2

  1. Buat efek dengan meneruskan CLSID efek XAPOFX ke fungsi CreateFX .

    Dalam hal ini, efek reverb yang disederhanakan FXReverb sedang dibuat.

    IUnknown * pXAPO;
    CreateFX(__uuidof(FXReverb),&pXAPO);
    
  2. Isi struktur XAUDIO2_EFFECT_DESCRIPTOR dengan data.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  3. Isi struktur XAUDIO2_EFFECT_CHAIN dengan data.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  4. Terapkan rantai efek ke suara XAudio2 dengan fungsi SetEffectChain .

    pVoice->SetEffectChain(&chain);
    

    Catatan

    Anda juga dapat menerapkan rantai efek ke suara saat membuat suara dengan meneruskan rantai sebagai parameter ke IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice, atau IXAudio2::CreateMasteringVoice.

     

  5. Lepaskan efeknya dengan IUnknown::Release. Ketika Anda membuat XAPO, itu akan memiliki jumlah referensi 1. Ketika XAPO diteruskan ke XAudio2 dengan SetEffectChain, XAudio2 menambah jumlah referensi pada XAPO. Merilis referensi klien ke XAPO memungkinkan XAudio2 untuk mengambil kepemilikan XAPO. Jika XAudio2 memiliki satu-satunya referensi ke XAPO, referensi ini dibuang ketika tidak lagi digunakan oleh XAudio2. Jika kode klien perlu mempertahankan referensi ke XAPO—misalnya, untuk digunakan kembali nanti—Anda dapat melewati langkah ini.

    pXAPO->Release();
    
  6. Isi struktur parameter, jika ada, yang terkait dengan efeknya.

    Dalam hal ini, struktur FXREVERB_PARAMETERS digunakan untuk mengatur diffusion dan ukuran ruangan yang harus digunakan efek gaung.

    FXREVERB_PARAMETERS XAPOParameters;
    XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION;
    XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;
    
  7. Teruskan struktur parameter efek ke efek dengan memanggil fungsi SetEffectParameters pada suara tempat efek terpasang.

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

Efek Audio

Panduan Pemrograman XAudio2