我正在开发NodeJS模块,以从各种来源控制放大器。

只能将放大器设置为从-60dB到+ 10dB的特定“分贝”。
但是,这完全不是线性的。不能听到-60至-50(增加10dB),而0ok至10 + dB是“ok”和吹响扬声器之间的差。

我发现分贝(dB)是对数单位。当使用滑块控制音量时,这一点尤其明显。
而且我找到了一些mathematical解决方案。

但是我不知道这将如何转换为代码(特别是NodeJS / Javascript)。

最佳答案

对于电压信号电平和声功率公式为

dB = 20 * Log10(当前水平/正常水平)
所以
当前电平=正常电平* 10dB / 20

伪代码很简单:

 CurrentLevel =  NormalLevel * Math.Power(10.0, dB / 20.0)

关于javascript - 分贝到线性转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46152681/

10-12 01:55