1/12 オクターブバンド・フィルタ (2)

1/12 オクターブバンド・フィルタをディジタル・フィルタとして実装した例として、すべて PC 上のソフトウェアで記述した場合と、PSoC5LP の DFB (Digital Filter Block) を用いて「ハードウェア」として実現した場合との、ふたつについて述べます。
まず、PC 上のソフトウェアでは、PSoC5LP による実現を TSP (Time Stretched Pulse) 法で測定するプロセスををソフトウェアでシミュレートするような形で行いました。
具体的には次のような流れで処理を行ないます。

WaveGene 付属の TSP 信号ファイル (FLATSWEEP_016384.WAV) からデータ読み込み → ディジタル・フィルタ → 16 K ポイント FFT (矩形窓) → パワースペクトラム表示

サンプリング周波数 48 kHz で中心周波数 1 kHz で設計した 1/12 オクターブバンド・フィルタと、その隣接バンドのフィルタの出力結果のグラフを示します。


赤色の線が中心周波数 1 kHz で、青色の線がその隣接バンド (1.05946 kHz) です。
このディジタル・フィルタの設計には、後で述べるように、Filter コンポーネントのカスタマイザに含まれるフィルタ設計ツールを使い、得られたフィルタ係数を利用しています。
バンドパス・フィルタの「すそ」の拡がりは、隣接バンドの中心周波数付近で -20 dB 程度のゲインになっています。
JIS C1514 の規格では、1/N オクターブバンドの N が奇数 (1 オクターブバンド、1/3 オクターブバンドなど) の場合にはバンドの中心周波数として 1 kHz を含んでいますが、N が偶数の場合には 1 kHz は中心周波数としては現れず、バンド境界の周波数としてのみ現れます。
これは、細かいバンドの隣接する数バンドを「束ねて」、分割数の少ないバンドのデータとして利用する際に結果のバンド幅に相違が出ないようにするためです。
たとえば、1/12 オクターブバンドの隣接する 4 つのバンドを束ねて、実効的に 1/3 オクターブバンドのデータとする場合、もともと 1/3 オクターブバンドとして測定した結果とバンド境界の周波数が一致するようになっています。
ここでは、グラフを描くだけの用途なので、1/12 オクターブバンドですが中心周波数 1 kHz としています。
さらに、上のグラフでは 1 kHz を 1 Hz と見なして横軸を正規化周波数として表示しています。
下に、PSoC5LP の DFB で実現して、WaveGene / WaveSpectra の組み合わせで実際に TSP 法で測定した結果を示します。

これは実際に「ハードウェア」として現実の信号を通せるので、中心周波数を実際の楽音「A」の 880 Hz と、その隣の「A#」の 932.328 Hz に選んでいます。
赤色の線が「A」880 Hz で、青色の線が「A#」932.328 Hz です。
この測定は、2015/12/07 〜 2016/01/12 付けの記事にある、48 kHz サンプリングのデルタシグマ ADC から入力して DFB でフィルタリングし、外付けのオーディオ DAC に出力する PSoC5LP 用プログラムを利用し、DFB プログラム部分のみを 1/12 オクターブバンド・フィルタのものに差し替えたもので行いました。
フィルタの設計は Filter コンポーネントの設計ツールに次のように入力して行いました。

サンプリング周波数 : 48 kHz
フィルタ・クラス : Biquad
フィルタ・タイプ : Band pass
フィルタ形状 : Butterworth
フィルタ次数 : 6
中心周波数(kHz) : 0.88
バンド幅(kHz) : 0.05083786

設計ツールの特性表示ペインに表示される周波数特性のグラフを下に示します。

設計ツールによって得られた係数を下に示します。 PC のソフトウェアによるシミュレーションでは、同様にして中心周波数 1 kHz に対して設計した結果の係数を利用しています。

Final coefficients for Biquad filter : 
Coefficients are in the order A0, A1, A2, B1 and B2

 0.000872373580932617
0
-0.000872373580932617
-1.98016786575317
 0.993367433547974

 0.0364763736724854
-0.0729527473449707
 0.0364763736724854
-1.98428535461426
 0.99682879447937

 0.00124454498291016
 0.00248908996582031
 0.00124454498291016
-1.98259544372559
 0.996527671813965