1

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

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

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

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

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

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

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

谢谢你。

拉奇

4

1 回答 1

1

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

于 2020-05-15T06:58:14.540 回答