【问题标题】:How to preserve the volume of a dynamic signal that varies in pitch?如何保持音高变化的动态信号的音量?
【发布时间】:2016-05-08 07:13:16
【问题描述】:

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

我的问题是,是否有一些标准的方法来处理信号以在其音高变化时保持(模糊)恒定的音量?当然,我可以添加一个增益节点并以某种特别的方式上下旋转它,但我猜这里有一个标准的事情要做(我一直在寻找但找不到)。

谢谢!

【问题讨论】:

  • 看看Fletcher-Munson curves 和其他类似的结果。您可以尝试近似您认为扬声器的 dB SPL 输出是从那里调整您的音量。否则,如果您不觉得有必要如此科学,您可以应用类似于 Fletcher-Munson 曲线的东西来为典型的收听音量获得足够好的音量调整。
  • @Linuxios 谢谢,是的 - 当没有响应时,我最终找到了这些曲线,将一条线拟合为一条,并根据结果进行调整。我将发布我想出的公式作为答案。

标签: audio volume pitch


【解决方案1】:

由于显然没有标准的方法,这是我破解的“解决方案”:

function getVolumeAdjustment(freq) {
    var x = Math.log(freq)
    var db = 3.4 * x * x - 49.3 * x + 217
    return db - 45
}

db 模糊地近似于 40-phon Equal Loudness contour,至少当我从维基百科上的图片中看到它时。然后我减去 45,这样我就可以根据每个给定音调的频率对音量进行调整(范围从 -6 到 15 左右)。

它似乎基本上可以工作 - 不过仍然很高兴听到任何更好的答案。

【讨论】:

  • 重要提示:等响度等值线以 dB SPL(声压级)表示相对音量,这是真实世界的音量。显然,没有保证可以将 dBFS(数字 dB)转换为真实世界 dB SPL 或反之亦然的方法,但值得记住的是,它们不同的单位,此处未进行转换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多