默认为0db声级作为绝对浮点值

时间:2011-10-10 12:19:35

标签: winapi audio signal-processing decibel

我正在使用c ++中的Window 7构建类似于微软软件音频合成器的东西。核心引擎正在运行,并且在接收midi事件时它会播放音符,更改节目等。此刻令我困惑的是输出通道的0 db参考声压级。

假设合成器产生440 Hz的正弦波,幅度为| 0.5f | 。为了计算db中的声级,我需要设置参考电平(0 db)。有没有人知道像这样的默认值?

2 个答案:

答案 0 :(得分:3)

当相对于满量程的分贝有问题时,AKA dBFS,零dB被分配到最大可能的数字水平。维基引用:

  

0 dBFS分配给最大可能的数字电平。[1]对于   例如,信号在任何点达到最大水平的50%   将达到峰值-6 dBFS,即低于满量程6 dB。全部达到顶峰   测量将是负数,除非它们达到最大值   数字价值。

答案 1 :(得分:1)

首先,你需要清楚单位。 dB本身就是比率,而不是绝对值。正如@Roman R.建议的那样,你可以使用0 dB来表示“满量程”,然后你的范围将是0 dB(最大值)到某个负dB值,它对应于你感兴趣的最小值(例如-120) D b)。然而,这只是一个任意测量,它不会告诉你关于信号绝对值的任何信息。

在您的问题中,虽然您引用dB SPL(SPL =声压级), 是绝对单位。 0 dB SPL通常被定义为20μPa(RMS),其大约在人类听觉的阈值处,并且在这种情况下,感兴趣的范围可以是-20dB SPL,比如说+ 120dB SPL。但是,如果您确实想要测量dB SPL而不仅仅是任意dB值,那么您需要校准系统以考虑麦克风增益,麦克风频率响应,A-D灵敏度/增益以及各种其他因素。这是非常重要的,但如果你真的想要实现某种SPL测量系统,这是必不可少的。