EQ的实现

文章产品的配图来自深圳同创音频技术有限公司公开的数字音频处理器产品界面。

 

前言

 

EQ,我们常见的就是很多播放器上面带的一个均衡器,可以选择流行、重低、金属等等音乐风格,这个是参量均衡EQ。而广义的EQ包含很多种类型:

1. 参量(PEQ)

2. 低架(LowShelf)

3. 高架(HighShelf)

4. 低通(LowPass)

5. 高通(HighPass)

6. 全通(APF)

7. 带通(BPF)

 

从界面上看出,它是一个8段EQ,每段EQ分别有四个参数:

频率(Hz) , 增益(dB) , Q(品质因子)或者Oct(倍频程),还有一个开关

 

 

滤波器原型

 

所有的数字滤波器模型都是从模拟滤波器通过双线性变换得到而来。下面直接给出每个滤波器的原型和变换后它的系数计算。

LPF:        H(s) = 1 / (s^2 + s/Q + 1)            b0 =  (1 - cos(w0))/2            b1 =   1 - cos(w0)            b2 =  (1 - cos(w0))/2            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphaHPF:        H(s) = s^2 / (s^2 + s/Q + 1)            b0 =  (1 + cos(w0))/2            b1 = -(1 + cos(w0))            b2 =  (1 + cos(w0))/2            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphaBPF:        H(s) = s / (s^2 + s/Q + 1)  (constant skirt gain, peak gain = Q)            b0 =   sin(w0)/2  =   Q*alpha            b1 =   0            b2 =  -sin(w0)/2  =  -Q*alpha            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphaBPF:        H(s) = (s/Q) / (s^2 + s/Q + 1)      (constant 0 dB peak gain)            b0 =   alpha            b1 =   0            b2 =  -alpha            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphanotch:      H(s) = (s^2 + 1) / (s^2 + s/Q + 1)            b0 =   1            b1 =  -2*cos(w0)            b2 =   1            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphaAPF:        H(s) = (s^2 - s/Q + 1) / (s^2 + s/Q + 1)            b0 =   1 - alpha            b1 =  -2*cos(w0)            b2 =   1 + alpha            a0 =   1 + alpha            a1 =  -2*cos(w0)            a2 =   1 - alphapeakingEQ:  H(s) = (s^2 + s*(A/Q) + 1) / (s^2 + s/(A*Q) + 1)            b0 =   1 + alpha*A            b1 =  -2*cos(w0)            b2 =   1 - alpha*A            a0 =   1 + alpha/A            a1 =  -2*cos(w0)            a2 =   1 - alpha/AlowShelf: H(s) = A * (s^2 + (sqrt(A)/Q)*s + A)/(A*s^2 + (sqrt(A)/Q)*s + 1)            b0 =    A*( (A+1) - (A-1)*cos(w0) + 2*sqrt(A)*alpha )            b1 =  2*A*( (A-1) - (A+1)*cos(w0)                   )            b2 =    A*( (A+1) - (A-1)*cos(w0) - 2*sqrt(A)*alpha )            a0 =        (A+1) + (A-1)*cos(w0) + 2*sqrt(A)*alpha            a1 =   -2*( (A-1) + (A+1)*cos(w0)                   )            a2 =        (A+1) + (A-1)*cos(w0) - 2*sqrt(A)*alphahighShelf: H(s) = A * (A*s^2 + (sqrt(A)/Q)*s + 1)/(s^2 + (sqrt(A)/Q)*s + A)            b0 =    A*( (A+1) + (A-1)*cos(w0) + 2*sqrt(A)*alpha )            b1 = -2*A*( (A-1) + (A+1)*cos(w0)                   )            b2 =    A*( (A+1) + (A-1)*cos(w0) - 2*sqrt(A)*alpha )            a0 =        (A+1) - (A-1)*cos(w0) + 2*sqrt(A)*alpha            a1 =    2*( (A-1) - (A+1)*cos(w0)                   )            a2 =        (A+1) - (A-1)*cos(w0) - 2*sqrt(A)*alpha

以上有一些中间变量,它们的计算公式如下:

A  = sqrt( 10^(dBgain/20) )A  =  10^(dBgain/40) (for peaking and shelving EQ filters only)          w0 = 2*pi*f0/Fsalpha = sin(w0)/(2*Q)                      

 

Q和Oct的关系

 

Oct是倍频程,1个倍频程相当于频率高了一倍。

2^oct = f2/f1;

Q:  q=fc/bw;

bw=f2-f1;

fc^2 =f1*f2;

Q= sqrt(2^oct)/(2^oct -1 )

 

如果想要了解更多知识,可以关注公众号【DSP-Tech】.你也可以加我微信,和我一起共同成长学习吧。

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值