多年来,我一直在为 Android 开发音乐播放器,最近我开始着手实现参数均衡器。
我无法防止一个频段的增益对相邻频段的增益产生不利影响,从而导致峰值增益高于预期,最终可能导致削波。
我一直在关注Orfanidis 关于“具有规定奈奎斯特频率增益的数字参数均衡器设计”的论文,以及Orfanidis 论文中概述的一些概念的示例 Matlab 实现。
均衡器有效地充当图形均衡器 - 我已将中心频率和带宽固定为特定值:
(以 Hz 为单位的值,括号中的带宽)
- 63 (15)
- 125 (30)
- 250 (30)
- 400 (45)
- 630 (75)
- 1000 (115)
- 1600 (180)
- 2500 (290)
- 4000 (460)
- 6300 (730)
- 10000 (115)
- 16000 (1825)
该计划是允许最大提升/削减 12dB,带宽增益设置为低于峰值 3dB。理想情况下,我可以首先在整个频谱上应用 12dB 的削减,这样 12dB 的峰值提升就可以保证不会导致任何削波。
问题是,如果用户在中心频率 63Hz 和 125Hz 处应用 12dB 的提升,则两个频率的峰值增益最终都会超过 12dB,这可能会导致削波。这是这种情况下 FFT 的样子:
注意峰值增益实际上大于 12dB。
如果在上述所有频率上应用提升,效果会更加复杂(这是最坏的情况):
请注意,峰值增益更像是 15dB。
也许我应该预料到这一点,答案很简单,如果应用大量增益,频段不应间隔太近。但是,我的问题是我正在尝试向休闲音乐听众提供此功能,但我不希望他们以发生削波的方式配置均衡器,因为他们可能会声称它有问题。
所以我的问题是 - 这看起来像参数 eq 的正确实现吗?相邻频段可以具有比指定的“提升增益”更大的峰值增益是否有意义?在这种情况下,如何防止用户造成剪辑?
任何帮助表示赞赏。