对参数均衡器进行编程 - 防止削波

信息处理 均衡器 参数方程
2022-02-21 09:00:08

多年来,我一直在为 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 的样子:

快速傅里叶变换 1

注意峰值增益实际上大于 12dB。

如果在上述所有频率上应用提升,效果会更加复杂(这是最坏的情况):

快速傅里叶变换 2

请注意,峰值增益更像是 15dB。

也许我应该预料到这一点,答案很简单,如果应用大量增益,频段不应间隔太近。但是,我的问题是我正在尝试向休闲音乐听众提供此功能,但我不希望他们以发生削波的方式配置均衡器,因为他们可能会声称它有问题。

所以我的问题是 - 这看起来像参数 eq 的正确实现吗?相邻频段可以具有比指定的“提升增益”更大的峰值增益是否有意义?在这种情况下,如何防止用户造成剪辑?

任何帮助表示赞赏。

3个回答

均衡器的正确设计并没有得到普遍认可。就像每个品牌有多种汽车设计一样,也有多种技术可以达到预期的效果。

确实,您的通道滤波器会相互作用并改变每个频率的有效增益,但主要在相邻通道峰值处明显。

交互量取决于您选择的 DC 增益(对于您的应用来说是统一的)以及通道带宽和带宽增益。

有一些建议的做法可以防止失真水平。包含净空,因此峰值增益不会产生削波。或者你可以允许一些......?

Robert Bristow Johnson 是这里的成员,他是您想在应用程序中使用的那些(食谱)参数均衡器的设计者之一。

对我来说,这看起来像是一个图形均衡器,而不是参数化的,因为过滤器参数是固定的。更改您的术语可能会给您带来更好的搜索引擎结果。

看起来您正在串联运行滤波器,这对于真正的参数均衡器是有意义的。我过去做过的事情是运行并行过滤器并将它们加在一起以获得图形均衡器。我记得,这允许滤波器相互“干扰”,以使整体增益不会过冲,但并不完美。基本上,您将通过一堆带通滤波器运行您的信号,通过电平控制缩放输出并将它们与原始信号相加。如果一个波段的比例因子是正的,它将提升该波段,负的将削减,零将保持不变。

有很多不同的方法可以解决这个问题,而“秘诀”将是你的实现与其他人的不同之处。我认为你在这个论坛上最大的希望就是尝试一些新的想法,希望我已经提供了。干杯。

编辑:我不久前发现了这个,它有很多好主意。 https://res.mdpi.com/d_attachment/applsci/applsci-06-00129/article_deploy/applsci-06-00129.pdf

有点好笑,我以前从未见过这个帖子/问题,我在评论中被点名,但因为拼写不正确,SE 从未通知我。

使用级联双二阶参数 EQ 来完成通用图形 EQ 是一些作者发表的内容。它出现在我 1994 年关于 EQ 的论文和引用的 Orfanidis 论文之后。

无论如何,如果您按照我的方式定义参数 EQ(或“峰值 EQ”,如 Cookbook 中的)的带宽,那么 N dB 的提升看起来几乎与 N/2 提升的两倍相同。 D b。这是因为两条曲线在“裙子”底部、峰值频率和两个中点增益频率处相等。

那么你可以把它变成一组线性方程的解。

看看这两篇论文:

伯纳斯和亚伯

奥利弗和乔特

我现在没有时间讨论细节。但看看你能不能弄清楚这些文件。