首页 > 解决方案 > XAudio2 与 OpenAL 音量

问题描述

我正在用 C++ 编写一段音频包装代码,以便在 XAudio2 和 OpenAL 上拥有一个抽象 API(以及稍后的更多内容)。一切正常,我的系统启动并运行,提供几乎相同的音频。

我似乎只有设置源卷有问题。XAudio2 和 OpenAL 都有一种方法来设置源声音的音量。

IXAudio2Voice::SetVolume(volume) 和 alSourcef(source, AL_GAIN, volume);

根据文档,两个函数都采用音量参数应该在 [0;1] 范围内设置级别。

但是,他们内部使用的曲线似乎不匹配。例如,当将值设置为 0.5 时,感觉就像 OpenAL 比 XAudio2 更安静

就像其中一个会线性地解释音量,而另一个就像对数一样。两个文档都没有说明它,只是说明范围是 [0;1] 并且没有说明它是如何解释的。

很难调试,因为它很难测量。有人做过这样的事情,或者有使用这些功能的经验吗?

谢谢你。

拉奇

标签: c++audioopenalxaudio2

解决方案


您应该查看 XAudio2 助手XAudio2DecibelsToAmplitudeRatio,它从 dB 计算浮动音量值


推荐阅读