Audacity Nyquist Biquad Filter
2次IIR(無限インパルス応答)デジタルフィルタ
係数を自由に入れられるタイプの2次IIRをNyquistで作ってみる。
基本となる式
上記式から2poleのプロトタイプを計算
LPFを作りたいので、上記式 s に次式を代入する。
LPF: ((z-1)/(z+1)) / (2πfc)
fcの中はこんなかんじ。ωcはカットオフ周波数で、fsはサンプリング周波数。
ブロック図は下図を採用。
Biquad Filter プログラム ソース Nyquist
$nyquist plug-in
$version 1
$type process
$name (_ "Achapi Biquad Filter")
$author (_ "Achapi")
$release
$copyright (_ "")
;control b0 "b0" real " " 1.5351248958697 -3.0000 3.0000
;control b1 "b1" real " " -2.69169618940638 -3.0000 3.0000
;control b2 "b2" real " " 1.19839281085285 -3.0000 3.0000
;control a0 "a0" real " " 1.0 -3.0000 3.0000
;control a1 "a1" real " " -1.69065929318241 -3.0000 3.0000
;control a2 "a2" real " " 0.73248077421585 -3.0000 3.0000
(biquad-m s b0 b1 b2 a0 a1 a2)
他言語では1から作るのだが、Nyquistでは、あらかじめ作られた関数を使うだけで済むので非常に簡素に出来てしまった。 係数は別途計算が必要。
係数計算 プログラム
随分前にCとかJavaで作ったものがあるので、そのうちホームページ上でも計算できるようにJavaScriptに移植しようと思う。