我正在研究自制游戏引擎,目前正在研究音频引擎的实现。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,因此我可以根据需要在 OpenAL、XAudio2 或其他平台之间切换。我也希望这段代码是可重用的,所以我试图让它尽可能完整,并让各种系统实现尽可能多的功能。目前,我专注于 XAudio2 实现,并且可能会在以后转向 OpenAL 实现。
在过去的几个月里,我读了很多关于 3D 处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、阻塞和直达声的文章。我希望能够在音频播放中使用任何这些效果。虽然我已经尽我所能研究了这些主题,但我找不到任何关于如何实际实现遮挡(直接和反射信号消音)、阻塞(直接信号消音)或排斥(反射信号消音)的示例。阅读 MSDN 文档似乎是对遮挡的被动引用,但没有直接涉及实现。我发现的最好的是通用的“使用低通滤波器”,这对我没有多大帮助
所以我的问题是:使用 XAudio2,如何实现音频反射信号消音(排除)和音频直接信号消音(阻塞)或同时实现(阻塞)?音频图会是什么样子,这些与混响环境效果有何关系?
编辑 2013-03-26:
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
图表是否应该是:源 → 效果(子混音)→ 母带
-或 -
图表是否应该一般如下所示:
↗→ Direct → Effects ↘
Source →Mastering
↘→ Reflections → Effects ↗
第二个图将分割图,以便可以分别计算排除和阻塞;我的部分困惑是如何独立处理它们。
那么,我认为来自 3D 音频 DSP 结构的混响设置将应用于反射路径;多普勒将应用于直接路径或直接路径和反射路径;并且混响环境效果只会影响反射路径。这是否接近正确的音频图模型?