XAudio2遮挡处理

时间:2013-03-26 03:30:29

标签: audio directx audio-processing xaudio2 occlusion

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

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

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

修改2013-03-26
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
图表应该是:Source→Effects(Submix)→Mastering
- 或 -
该图表是否应如下所示:

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

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

1 个答案:

答案 0 :(得分:0)

您希望图表看起来像以下几行:

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

您可以调整低通滤波器,因为信号源会受到更多阻碍。您还可以使用低通滤波器增益来模拟吸收。最佳设置过滤器设置,以便它们以可由声音设计器调整的方式曝光。

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

就此而言,然后通过图表传递了诸如混响之类的环境影响,你只想让它们更深入到图表中:

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

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

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