XAudio2 音訊效果
音訊效果是接受傳入音訊資料的物件,並在傳遞資料之前對資料執行一些作業。 您可以使用效果來執行各種工作,包括將殘響新增至音訊串流,以及監視尖峰音量等級。
效果鏈結
任何 XAudio2 語音都可以裝載音訊效果鏈結。 您可以使用 XAUDIO2_EFFECT_DESCRIPTOR 結構的陣列來指定效果鏈結。 每個描述項都包含用戶端所提供之效果物件的指標。 這些物件必須實作 APO) 介面 (音訊處理物件。 如需 APO 模型的詳細資訊,請參閱 XAPO 概觀。
當 XAudio2 引擎執行) 時,用戶端可以動態 (修改效果鏈結,可以個別啟用或停用效果,而且效果參數可以變更,全都不需要中斷音訊。 每當效果圖形的任何層面變更時,XAudio2 會再次優化圖形,以避免不必要的處理。 請參閱 IXAudio2Voice::SetEffectChain、 IXAudio2Voice::EnableEffect和 IXAudio2Voice::SetEffectParameters。
將效果附加至 XAudio2 語音之後,XAudio2 會控制效果,而且用戶端不應該再呼叫它。 若要確保這一點,最簡單的方法是釋放效果的所有指標。
指定 XAudio2 語音效果鏈結中的效果必須取用並產生該語音處理取樣率的浮點音訊。 它們可以變更的音訊格式唯一層面是通道計數 (例如,殘響效果可以將單聲道資料轉換成 5.1) 。 用戶端可以使用 XAUDIO2_EFFECT_DESCRIPTOR。OutputChannels 欄位,指定每個效果應該產生的通道數目。 如果有任何效果無法滿足這些需求,或效果會產生一些無法處理下一個效果的通道,效果鏈結就會失敗。 任何會導致效果鏈結停止滿足這些需求的 IXAudio2Voice::EnableEffect 或 IXAudio2Voice::D isableEffect 呼叫都會失敗。
XAudio2 中使用的 APO 介面必須是 破壞性的。 這表示它們一律會覆寫他們在輸出緩衝區中找到的任何資料。 否則,產生的音訊可能不正確,因為 XAudio2 無法保證這些緩衝區先前已以無聲方式初始化。
XAudio2 內建效果
下表列出 XAudio2 所提供的一組內建音訊效果及其建立方法。
效果 | 建立方法 |
---|---|
混響 | XAudio2CreateReverb |
磁片區計量 | XAudio2CreateVolumeMeter |
如需建立和使用音訊效果實例的範例,請參閱 如何:建立效果鏈結。
XAudio2 中的自訂效果
XAPO API 提供一個架構,可讓您建立可在 XAudio2 中使用的自訂音訊效果。 如需使用 XAPO 建立自訂效果的範例,請參閱 如何:建立 XAPO。
XAPO 效果程式庫 (XAPOFX)
XAPOFX 提供額外的 XAPO 程式庫,以及建立它們的共同機制。 如需搭配 XAudio2 使用 XAPOFX 的範例,請參閱 如何:在 XAudio2 中使用 XAPOFX。
相關主題