Bagikan melalui


Efek Audio XAudio2

Efek audio adalah objek yang mengambil data audio masuk, dan melakukan beberapa operasi pada data sebelum meneruskannya. Anda dapat menggunakan efek untuk melakukan berbagai tugas, termasuk menambahkan gaung ke aliran audio dan memantau tingkat volume puncak.

Rantai Efek

Suara XAudio2 apa pun dapat menghosting rantai efek audio. Anda dapat menggunakan array struktur XAUDIO2_EFFECT_DESCRIPTOR untuk menentukan rantai efek. Setiap deskriptor berisi penunjuk ke objek efek yang disediakan oleh klien. Objek ini harus mengimplementasikan antarmuka Objek Pemrosesan Audio (APO). Lihat Gambaran Umum XAPO untuk informasi selengkapnya tentang model APO.

Rantai efek dapat dimodifikasi oleh klien secara dinamis (saat mesin XAudio2 berjalan), efek dapat diaktifkan atau dinonaktifkan secara individual, dan parameter efek dapat diubah—semua tanpa gangguan audio. Setiap kali aspek grafik efek berubah, XAudio2 mengoptimalkan grafik lagi untuk menghindari pemrosesan yang tidak perlu. Lihat IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect, dan IXAudio2Voice::SetEffectParameters.

Setelah efek melekat pada suara XAudio2, XAudio2 mengendalikan efeknya, dan klien tidak boleh melakukan panggilan lebih lanjut ke dalamnya. Cara paling sederhana untuk memastikan hal ini adalah dengan melepaskan semua penunjuk ke efeknya.

Efek dalam rantai efek suara XAudio2 tertentu harus mengonsumsi dan menghasilkan audio floating-point pada laju sampel pemrosesan suara tersebut. Satu-satunya aspek format audio yang dapat mereka ubah adalah jumlah saluran (misalnya, efek gaung dapat mengonversi data mono menjadi 5.1). Klien dapat menggunakan XAUDIO2_EFFECT_DESCRIPTOR. Bidang OutputChannels untuk menentukan jumlah saluran yang harus dihasilkan setiap efek. Rantai efek gagal jika salah satu efek tidak dapat memenuhi persyaratan ini, atau jika efek menghasilkan sejumlah saluran yang tidak dapat ditangani efek berikutnya. Setiap panggilan IXAudio2Voice::EnableEffect atau IXAudio2Voice::D isableEffect yang menyebabkan rantai efek berhenti memenuhi persyaratan ini akan gagal.

Antarmuka APO yang digunakan dalam XAudio2 harus merusak. Ini berarti mereka selalu menimpa data apa pun yang mereka temukan di buffer output mereka. Jika tidak, audio yang dihasilkan mungkin salah karena XAudio2 tidak menjamin bahwa buffer ini telah diinisialisasi sebelumnya dengan keheningan.

Efek Bawaan XAudio2

Tabel berikut mencantumkan kumpulan efek audio bawaan yang disediakan oleh XAudio2 dan metode pembuatannya.

Efek Metode Pembuatan
Reverb XAudio2CreateReverb
Volume Meter XAudio2CreateVolumeMeter

 

Untuk contoh membuat dan menggunakan instans efek audio, lihat Cara: Membuat Rantai Efek.

Efek Kustom di XAudio2

XAPO API menyediakan kerangka kerja untuk membuat efek audio kustom yang dapat Anda gunakan di XAudio2. Untuk contoh pembuatan efek kustom dengan XAPO, lihat Cara: Membuat XAPO.

Pustaka Efek XAPO (XAPOFX)

XAPOFX menyediakan pustaka XPO tambahan dan mekanisme umum untuk membuatnya. Untuk contoh penggunaan XAPOFX dengan XAudio2, lihat Cara: Menggunakan XAPOFX di XAudio2.

Efek Audio

Panduan Pemrograman XAudio2