マイコン工作実験日記

Microcontroller を用いての工作、実験記録

フィルター設計ツールを探す

2013-07-14 23:37:57 | SAM4
SAM4Lにスペアナ表示機能を実装する作業を継続中。CMSIS-DSPの準備はできたので、実機での実装方法を検討します。CMSIS-DSPに用意されている機能を使ってスペアナ表示を実装するには、つぎの2つの方法が考えられます。
  1. FFTを使う。ストレートな方法ですが、ライブラリには窓関数処理までは含まれていないので、自分で補う必要があります。FFTでは帯域を点数で均等に分割したバンド幅毎のレベルを得ることができますが、オーディオ信号では低域の変化が主ですので、FFT結果をそのままプロットしても山が左に寄った表示になってしまいます。オクターブバンドのような帯域毎に結果を整理してから、表示した方が良さそうです。
  2. BPFを使う。表示するバントに対応するBFPを用意して、各帯域のレベルを調べる。従来のアナログ方式のスペアナ機能を、そのままデジタルに置き換える。

FFTを使うとなると、512点か1024点のFFTが必要ですね。このあいだIIRフィルタを使ったイコライザの動作確認をおこなったこともあり、今回はIIRでBPFを作ることでスペアナ表示してみることにします。

グライコの例では、Biquad IIRフィルタの係数はあらかじめMATLABで計算したものが使われていました。スペアナ用にBPFを用意するには、Biqud IIRフィルタの係数を求めてやらねばなりません。フリーのツールとかWebページとか探してみたのですが、なかなか気に入るものが見つけられません。とりあえずは、次の2つのツールで係数を求めて試してみようかと思います。
  • DSP Link
    フィルタの次数を指定することで、Biquadを複数つなげたフィルタを設計してくれる。係数を固定小数点形式で出力する機能も用意されており、量子化ビット数を15あるいは31と指定することでq15_t, q31_tの値を得ることができる。
  • PurePath Studio GDE
    TIのCODEC用のデザインツールですが、その中にBiquadのGUI設計機能が含まれています。GUIでは複数段のBiquadから構成されるBPFを直接デザインすることはできませんが、各段とも同じ中心周波数/バンド幅のBPFを複数段つなげてみようかと思います。係数はXMLファイルに書き出すことができますが、浮動小数点形式なので自分で固定小数点に変換してやります。

Biquad一段でもBPFは作れますが、急峻なフィルタ特性を得ることはできません。2段にすれば、まずまずだと思いますが、計算量も倍になるので実際に試してみるつもりです。スペアナ表示といっても正確な測定機能をめざすわけではなく、あくまでも音楽再生時のギミックなので、「それらしく」動くことが目標です。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。