0

我目前正在用 c++ 在 Window 7 上构建类似小型软件音频合成器的东西。核心引擎正在运行,在接收到 MIDI 事件后,它会播放音符、更改节目等。目前让我感到困惑的是,将输出通道的 0 db 参考声压级放在哪里。

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

4

2 回答 2

3

当涉及相对于满量程的分贝时,AKA dBFS, 零 dB 被分配给最大可能的数字电平。来自维基的引用:

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

于 2011-10-10T12:32:21.153 回答
1

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

在您的问题中,尽管您指的是dB SPL(SPL = 声压级),它一个绝对单位。0 dB SPL 通常定义为 20 µPa (RMS),大约是人类听觉的阈值,在这种情况下,感兴趣的范围可能是 -20 dB SPL 到 +120 dB SPL。但是,如果您确实想要测量 dB SPL 而不仅仅是任意 dB 值,那么您需要校准系统以考虑麦克风增益、麦克风频率响应、AD 灵敏度/增益和各种其他因素。这很重要,但如果您真的想实现某种 SPL 测量系统,这是必不可少的。

于 2011-10-10T14:18:51.060 回答