Main Content

スピーカーの交差フィルター

この例では、デジタル 3 ウェイ ラウドスピーカーの単純なモデルをどのように考案するかを説明します。システムは、オーディオ入力をウーファー、ミッドレンジ ドライバーおよびツィーターにそれぞれ対応する、低周波数帯域、中周波数帯域および高周波数帯域に分割します。帯域を区切る正規化交差周波数の標準値は、0.136π ラジアン/サンプルおよび 0.317π ラジアン/サンプルです。

ローパス、バンドパスおよびハイパス フィルターを作成し、低周波数、中周波数および高周波数の帯域を生成します。周波数を指定します。

lo = 0.136;
hi = 0.317;

各フィルターには 6 次のチェビシェフ I 型設計を使用します。実際のスピーカーの値より大きい 1 dB を通過帯域リップルに指定します。関数 cheby1 は、バンドパス設計の次数を 2 倍にします。バンドパス フィルターの次数を半分にして、すべてのフィルターの次数が同じになるようにします。各フィルターの零点、極およびゲインを返します。

ord = 6;
rip = 1;

[zw,pw,kw] = cheby1(ord,rip,lo);
[zm,pm,km] = cheby1(ord/2,rip,[lo hi]);
[zt,pt,kt] = cheby1(ord,rip,hi,'high');

フィルターの零点と極を可視化します。

zplane([zw zm zt],[pw pm pt])
lg = legend('Woofer','Midrange','Tweeter');
lg.Box = 'off';

Figure contains an axes object. The axes object with title Pole-Zero Plot, xlabel Real Part, ylabel Imaginary Part contains 11 objects of type line, text. One or more of the lines displays its values using only markers These objects represent Woofer, Midrange, Tweeter.

  • ウーファー: z=-1 の零点は、高周波数を抑制します。極は、0 と低位の交差周波数の間の振幅応答を強化します。

  • ミッドレンジ: z=0z=1 の零点は、高周波数と低周波数を抑制します。極は、低位と高位の交差周波数の間の振幅応答を強化します。

  • ツィーター: z=1 の零点は、低周波数を抑制します。極は、高位の交差周波数と π の間の振幅応答を強化します。

単位円上に振幅応答をプロットし、異なる極と零点の効果を確認します。線形ユニットを使用します。フィルターを 2 次セクションで表現します。

sw = zp2sos(zw,pw,kw);
sm = zp2sos(zm,pm,km);
st = zp2sos(zt,pt,kt);

nf = 1024;
[hw,fw] = freqz(sw,nf,'whole');
hm = freqz(sm,nf,'whole');
ht = freqz(st,nf,'whole');

plot3(cos(fw),sin(fw),[abs(hw) abs(hm) abs(ht)])
xlabel('Real')
ylabel('Imaginary')
view(75,30)
grid

Figure contains an axes object. The axes object with xlabel Real, ylabel Imaginary contains 3 objects of type line.

fvtool を使用して、振幅応答を dB 単位でプロットします。

hfvt = fvtool(sw,sm,st);
legend(hfvt,'Woofer','Mid-range','Tweeter')

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 3 objects of type line. These objects represent Woofer, Mid-range, Tweeter.

8192 Hz でサンプリングされたヘンデルの「ハレルヤ コーラス」の断章を含むオーディオ ファイルを読み込みます。フィルター処理によって、信号を 3 つの周波数帯域に分割します。帯域をプロットします。

load handel                % To hear, type soundsc(y,Fs)

yw = sosfilt(sw,y);        % To hear, type soundsc(yw,Fs)
ym = sosfilt(sm,y);        % To hear, type soundsc(ym,Fs)
yt = sosfilt(st,y);        % To hear, type soundsc(yt,Fs)

plot((0:length(y)-1)/Fs,[yw ym yt])
xlabel('Time (s)')

Figure contains an axes object. The axes object with xlabel Time (s) contains 3 objects of type line.

% To hear all the frequency ranges, type soundsc(yw+ym+yt,Fs)

参考文献

Orfanidis, Sophocles J. Introduction to Signal Processing. Englewood Cliffs, NJ: Prentice Hall, 1996.

参考

| | | | |