Audio 如何保持音调变化的动态信号的音量?

Audio 如何保持音调变化的动态信号的音量?,audio,volume,pitch,Audio,Volume,Pitch,我正在动态创建一些音频(使用WebAudio),从基本振荡器(正弦/平方/等)开始,并应用各种调制。当然,当我改变信号的音调时,明显的音量也会改变,高音听起来更响亮,低音听起来更安静 我的问题是,是否有一些标准的方法来处理信号,使其在音调变化时保持(模糊地)恒定的音量?当然,我可以添加一个增益节点,并以某种特殊的方式上下旋转它,但我猜这里有一个标准的操作(我已经找过了,但找不到) 谢谢 显然没有标准的方法来解决这个问题,下面是我提出的“解决方案”: function getVolumeAdjus

我正在动态创建一些音频(使用WebAudio),从基本振荡器(正弦/平方/等)开始,并应用各种调制。当然,当我改变信号的音调时,明显的音量也会改变,高音听起来更响亮,低音听起来更安静

我的问题是,是否有一些标准的方法来处理信号,使其在音调变化时保持(模糊地)恒定的音量?当然,我可以添加一个增益节点,并以某种特殊的方式上下旋转它,但我猜这里有一个标准的操作(我已经找过了,但找不到)


谢谢

显然没有标准的方法来解决这个问题,下面是我提出的“解决方案”:

function getVolumeAdjustment(freq) {
    var x = Math.log(freq)
    var db = 3.4 * x * x - 49.3 * x + 217
    return db - 45
}
db
大致相当于40个电话号码,至少我从维基百科上的图片中看到了这一点。然后我减去45,这样我就有了一个音量调整(范围从-6到15左右),根据频率对每个给定的音调进行调整


这似乎基本上是可行的,但还是很高兴听到更好的答案。

看看这个结果和其他类似的结果。您可以尝试近似您认为扬声器的dB SPL输出是一种调整音量的方法。否则,如果你觉得没有必要这么科学,你可以应用类似弗莱彻-蒙森曲线的方法,对典型的收听音量进行足够好的音量调整。@Linuxios谢谢,是的-当没有反应时,我最终找到了这些曲线,将一条线拟合到一条,并根据结果进行调整。重要提示:等响度轮廓表示相对音量,单位为dB SPL(声压级),这是真实世界的音量。显然,没有保证将DBF(数字dB)转换为现实世界的DBSPL或反之亦然的方法,但值得记住的是,它们是不同的单元,在这里不被转换。