0

我正在研究自制游戏引擎,目前正在研究音频引擎的实现。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,因此我可以根据需要在 OpenAL、XAudio2 或其他平台之间切换。我也希望这段代码是可重用的,所以我试图让它尽可能完整,并让各种系统实现尽可能多的功能。目前,我专注于 XAudio2 实现,并且可能会在以后转向 OpenAL 实现。

在过去的几个月里,我读了很多关于 3D 处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、阻塞和直达声的文章。我希望能够在音频播放中使用任何这些效果。虽然我已经尽我所能研究了这些主题,但我找不到任何关于如何实际实现遮挡(直接和反射信号消音)、阻塞(直接信号消音)或排斥(反射信号消音)的示例。阅读 MSDN 文档似乎是对遮挡的被动引用,但没有直接涉及实现。我发现的最好的是通用的“使用低通滤波器”,这对我没有多大帮助

所以我的问题是:使用 XAudio2,如何实现音频反射信号消音(排除)和音频直接信号消音(阻塞)或同时实现(阻塞)?音频图会是什么样子,这些与混响环境效果有何关系?

编辑 2013-03-26
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
图表是否应该是:源 → 效果(子混音)→ 母带
-或 -
图表是否应该一般如下所示:

       ↗→   Direct   → Effects  ↘
Source                            →Mastering
       ↘→ Reflections → Effects ↗

第二个图将分割图,以便可以分别计算排除和阻塞;我的部分困惑是如何独立处理它们。
那么,我认为来自 3D 音频 DSP 结构的混响设置将应用于反射路径;多普勒将应用于直接路径或直接路径和反射路径;并且混响环境效果只会影响反射路径。这是否接近正确的音频图模型?

4

1 回答 1

0

您希望您的图表看起来类似于:

输入数据--->低通滤波器--->输出

当源变得更受阻时,您可以调整低通滤波器。您还可以使用低通滤波器增益来模拟吸收。最好设置过滤器设置,以便它们以声音设计师可以调整的方式显示。

本文更详细地介绍了声音传播:http: //engineroom.ubi.com/sound-propagation-and-diffraction-simulation/

就这一点而言,然后沿着图表传递环境效果(例如混响),您只希望那些在图表下方更远的地方:

输入--->低通滤波器--->输出--->混响---->主输出

这样,混响的声音将与被遮挡的声音相匹配(否则,混响与直接信号不匹配会听起来很奇怪)。

使用低通滤波器听起来模糊且不完整,但实际上除了过滤高频和调整增益之外,效果并没有太多。对于更高级的环境建模,您想研究诸如“用于复杂场景中动态源的实时声音传播的预计算波模拟”(我无法直接链接,因为我还没有足够的代表!)但它可能远远超出你想要达到的范围。

于 2013-03-26T11:17:45.683 回答