본문 바로가기
Audio Processing

오디오 필터(8)-IIR 이퀄라이저(Equalizer), 로 쉘빙 필터(Low Shelving Filter, LSF)

by gigasound 2021. 10. 29.


로 쉘빙 필터

이퀄라이저에서 사용되는 로 쉘빙 필터(low shelving filter, LSF)는 저역 부분의 이득을 조정할 목적으로 사용되는 이퀄라이저용 필터입니다. 필터 주파수를 기준으로 낮은 주파수 부분의 신호를 증폭하거나 감소합니다. 

로 쉘빙 필터는 조정하고자 하는 주파수와 조정하는 이득 그리고 필터의 기울기를 인자로 합니다. 

피킹 필터와 다르게 Q 대신 slope을 이용해서 조정합니다. 그런데 두 인자는 변환이 가능합니다. 관련 내용은 다른 글을 참조해 주세요. 

필터를 구하는 기본 내용은 피킹 필터와 같으니 피킹 필터 부분으로 참조하면 됩니다. 필터 계수는 다음과 같습니다. 여기서 $f$는 필터의 주파수, $f_{s}$는 샘플링 주파수, G는 dB로 표시되는 필터의 이득, slope는 필터의 기울기입니다.  이 부분에 대한 내용은 아래를 참조해 주세요

https://medialink.tistory.com/73?category=958130

https://medialink.tistory.com/77?category=958130 

 

$$\omega_{0}=\frac{2\pi f}{f_{s}}$$

$$A=10^{\frac{G}{40}}$$

$$c_{0}=cos(\omega_{0})$$

$$s_{0}=sin(\omega_{0})$$

$$h_{1} = \frac{s_{0}}{2}\sqrt{\left (A+\frac{1}{A}  \right )\left ( \frac{1}{slope}-1 \right )+2}$$

$$h_{2}=2h_{1}\sqrt{A}$$

$$b_{0} = A((A+1)-(A-1)c_{0}+h_{2})$$

$$b_{1} = 2A((A-1)-(A+1)c_{0})$$

$$b_{2} = A((A+1)-(A-1)c_{0}+h_{2})$$

$$a_{0} = (A+1)-(A-1)c_{0}+h_{2}$$

$$a_{1} = -2((A-1)-(A+1)c_{0})$$

$$a_{2} = (A+1)-(A-1)c_{0}-h_{2}$$


GNU Octave로 필터 특성 검토

다음과 같이 lsf.m를 만들고 GNU Octave에서 실행합니다.

clear all;
pkg load signal;
fs = 44100.0;
f0 = 500.0;
NFFT = 1024;
SLOPE= 1.2; 
G= 10.0;
function  [coef_b, coef_a] = LSF(f0,fs,g,slope)
  coef_b=zeros(1,3);
  coef_a=zeros(1,3);
  A=10^(g/40.0);
  w0=2.0*pi*f0/fs;
  s0=sin(w0);
  c0=cos(w0);
  h1=s0/2.0*sqrt((A+(1/A))*((1/slope)-1)+2.0);
  h2 = 2*h1*sqrt(A);
  coef_b(1) = A*((A+1)-(A-1)*c0+h2);
  coef_b(2) = 2*A*((A-1)-(A+1)*c0);
  coef_b(3) = A*((A+1)-(A-1)*c0-h2);
  coef_a(1) = ((A+1)+(A-1)*c0+h2);
  coef_a(2) = -2.0*((A-1)+(A+1)*c0);
  coef_a(3) = ((A+1)+(A-1)*c0-h2);
endfunction

[b,a]=LSF(f0,fs,G,SLOPE);
[h,w]=freqz(b,a,NFFT,fs);
m = 20.0*log10(abs(h));

figure(1);
clf;
zplane(b,a);
figure(2);
clf;
subplot(2,1,1)
semilogx(w,m)
xlim([20 44100/2])
ylim([-30 30])
xlabel("frequency(Hz)")
ylabel("magitude(dB)")
grid()
subplot(2,1,2)
semilogx(w,arg(h)*180/pi)
xlim([20 44100/2])
ylim([-200 200])
xlabel("frequency(Hz)")
ylabel("phase(deg)")
grid()

lsf.m
0.00MB


필터 특성의 검토

z영역에서 필터의 특성을 검토합니다. 모든 극성(x)이 단위 원안에 있기 때문에 이 필터는 안정적입니다.

 

z영영에서 필터의 특성

주파수 특성을 보면 LSF가 잘 형성되어 있습니다.

 


베이스

베이스(Bass)는 오디오신호의 저역 부분의 이득을 증가 또는 감소하는 LSF의 한 종류입니다. 정확히 말하면 LSF의 주파수와 slope를 고정하고 오로지 이득만 조정할 수 있도록 간결하게 만든 것이 Bass입니다.

일반적으로 LSF의 주파수를 500Hz정도 slope=1 정도로 사용합니다. 물론 이는 취향에 따라 다른 값을 사용할 수도 있습니다. 


광고좀 꾹 눌러주시면 고맙겠습니다. 


참조

https://www.musicdsp.org/en/latest/Filters/197-rbj-audio-eq-cookbook.html  


위의 내용을 참조용으로만 사용해주세요. 무단 도용이나 무단 복제는 불허합니다.

기타 문의 사항은 gigasound@naver.com에 남겨 주시면 고맙겠습니다.