我正在用 C++ 编写一段音频包装器代码,以便在 XAudio2 和 OpenAL 上拥有一个抽象 API(以及稍后的更多内容)。一切工作正常,我已经启动并运行了系统,提供几乎相同的音频。
我似乎只是在设置源卷方面遇到问题。 XAudio2 和 OpenAL 都有一个方法来设置源语音的音量级别。
IXAudio2Voice::SetVolume( 音量 ) 和 alSourcef( 源, AL_GAIN, 音量 );
根据文档,两个函数都采用音量参数应在 [0;1] 范围内来设置级别。
但是,他们内部使用的曲线似乎不匹配。例如,当将值设置为 0.5 时,感觉 OpenAL 比 XAudio2 更安静
就像其中一个可以线性解释体积,而另一个则可以解释对数。两个文档都没有提及它,只是说明范围是 [0;1],并且没有说明它是如何解释的。
调试真的很困难,因为它很难测量。有人做过类似的事情,或者有使用这些功能的经验吗?
谢谢。
拉西
最佳答案
您应该查看 XAudio2 帮助程序 XAudio2DecibelsToAmplitudeRatio 它从 dB 计算浮点音量值
关于c++ - XAudio2 与 OpenAL 音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309237/