shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

Web Audio API で、the sliding Goertzel DFT filter のパラメータを弄ってみる、とりあえず最大16バンド

今回は、以下の記事の流れをマージしてみたというわけです。

マージするにあたってあれこれ書き換えた結果、
これまでuploadしていたjsdo.itだと動かない、示されたerrorを全部直しても動かない。

仕方がないので、今回は新たにCodePenなるサイトを導入してみました。
調べたページ : 

www.webcreatorbox.com


それでも、Firefoxでしか動かない。
元々のhtmlファイルではSafariでもChromeでも動いたので、困惑しています。

とりあえず最大16バンドとして、fとrとgを変えれるようにしました。
変数Bでバンド数を指定します。ただし、html上に作るフォームの数だけを変えます。
nodeの抜き差しは、また今度。

fとrについて、2系統フォームがでます。
これらの使い方次第で、
1.パラメータの設定方法が多様になる、
2.イレギュラーなパラメータ設定を楽しめる、ようになります。

上段にBと並んでいるfとrは、回路全体のデフォルトの値とでも言いましょう。
設定すると、下段のfとrを一挙に上書きします。
fについては、fを初項とするDFTの中心周波数の刻み
(今回は サンプリング周波数 Fs : 44100, DFT点数 : 1024で, 43.06640625 Hz)で、
等差数列にします。

下段のfとrとgについては、各バンドごとの個別の設定です。
フォームが作られていないバンドについては、gが0で無音化しています。

ここで、下段でいう各バンド個別というのは、
the sliding Goertzel DFT filter の2段構えのフィルタのうち、
後段の極を作る方のみです。
前段の零点を単位円上に等間隔で配置するフィルタは全バンドで共有させている都合、
後段に連動させるのが億劫だったために、このような構成になりました。

これによって、極と零点の位置がずれている
不完全なthe sliding Goertzel DFT filterを楽しめるわけです。

フィルタの特性を確認していないですけども、
耳で聞く分には個人的には中々気に入っています。