我正在研究家庭釀造遊戲引擎,我目前正致力於音頻引擎的實現。這主要是出於自我教育的原因。我想爲通用音頻處理創建一個接口包裝器,因此我可以根據需要在OpenAL,XAudio2或其他平臺之間切換。我也希望這個代碼是可重用的,所以我試圖儘可能地完成它,並且讓不同的系統實現儘可能多的功能。目前,我關注的是XAudio2的實現,並可能會在稍後的日期繼續進行OpenAL實施。XAudio2遮擋處理
在過去的幾個月裏,我在3D處理(聽衆/發射器),環境影響(混響),排斥,遮擋,障礙和直接聲音方面閱讀了很多。我希望能夠在音頻播放中使用這些效果中的任何一種。儘管我已經盡我所能研究了這些主題,但我無法找到任何有關如何實際實現遮擋(直接和反射信號消聲),阻塞(直接信號消聲)或排除(反射信號消聲)的任何示例。閱讀MSDN文檔似乎被動地引用了遮擋,但沒有直接涉及到實現。我發現最好的是一個通用的「使用低通濾波器」,這並沒有多大幫助我
所以我的問題是這樣的:使用XAudio2,如何將實現音頻反射信號消音(排除)和音頻直接信號消聲(阻塞)還是兩者同時(阻塞)?音頻圖是什麼樣子的,這些與混響環境效應有什麼關係?
編輯2013年3月26日:
論圖進一步的思考,我意識到,我可以不看,從正確的角度看圖形。
如果圖形顯示爲:源→效果(次混音)→掌握
- 或 -
應的曲線出現一般如下:
↗→ Direct → Effects ↘
Source →Mastering
↘→ Reflections → Effects ↗
第二圖表將拆分圖表,使得排除阻塞可以分開計算;我的一部分困惑是如何獨立處理它們。
那麼我會認爲3D音頻DSP結構中的混響設置會應用到反射路徑;多普勒將適用於直接或直接和反射路徑;而混響環境效應只會影響反射路徑。這是否接近正確的音頻圖模型?
感謝您的回答。閱讀後,它似乎不適合我的問題的實施方面。我用一些想法編輯了我的問題,但我可能對此感到困惑。從本質上講,僅僅傾銷低通濾波器似乎會影響直接和反射,我想知道如何單獨應用。 – 2013-03-26 17:57:38
低通濾波器近似直接和間接信號的總和。如果你想分開他們,我會在輸入階段做到這一點。如前所述,間接信號通過低通濾波器等。直接信號在輸入端分開,並饋入增益(以便可以改變直接/間接平衡),然後重新加入輸出階段的主信號路徑(就在混響之前)。當混響正在建模您正在聽的位置(而不是聲音來自的位置)時,您希望兩者都輸入到混響中。 – MikeJones 2013-03-27 15:49:43