2017年2月5日日曜日

[Puredata]vanillaで頑張ってbiquad~を使うヒント

biquad~といえばPuredata vanillaに最初から用意されているフィルタです。
vanillaにデフォルトで無い、
レゾナンス付きのlowpassやnotch、high shelf等が使えます。
ただし複雑な計算式で算出された数値5つを一式まとめてbiquad~に送る必要があるため
非常に敷居が高いオブジェクトです。
まずHelpを見てもまともに使いこなせません。

※ここのページを見ている人は既にbiquad~について計算式を調べたりしても
うまく使えず悩んでいる人が多いかと思うのですが、使い方のヒントについて。
exprの触りだけでも使えないと非常に辛いのですが、私でも何とかなりましたので。



EarLevel - Biquad formulas

もうこのソースコード(計算式)には行きついているかと思います。
半分正解ですが、ここから更に変換が必要になります。

mathr - Biquad conversions

EarLevelの計算式で作ったa0,a1,a2,b1,b2を以下のように作り替えます。
mathr様の記述後半の式を若干入れ替えまして、、、

A=−b1
B=−b2
C=a0
D=a1
E=a2

後は数値ABCDEを"pack"してbiquad~に数値情報をまとめて送るだけです。
lowpass
highpass
bandpass
notch
については出音とスペクトラムを確認して無事動作しました。
しかし、notchがvanillaでも使えるのは大きいアドバンテージです!

※今peakingを作成しているところですが出音は成功するものの
exprの書き方についてコンソールでエラーを吐いているところです。
まだ修正が必要の模様。



[追記]
Audio EQ cook bookベースの計算になると、

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

w0(omegaにあたる部分)は変わらずですか、
alphaはフィルタにより式が変わりますので注意。
また、数値がa0,a1,a2,b0,b1,b2の6つの数値を使うことになりますが、、、

A=−a1
B=−a2
C=b0
D=b1
E=b2

にしてみると上手くいったような。
このままだとa0が不要になるのですが、

A=−a1/a0
B=−a2/a0
C=b0/a0
D=b1/a0
E=b2/a0

で使う方法もあるようです。
まぁ、a0は1に近い値になるので省略しても良さそうなのですが。
なお、Audio EQ cookbookベースのフィルタを丁度ブログのN_filterで使いました。
Audio EQ cookbookベースはEarlevelにはないオールパスフィルターの式があります。


0 件のコメント:

コメントを投稿

[機材]Boss Mega Distortion MD-2 MOD

こちらの記事 で無改造のVanillaを紹介していますが、 今回紹介するのは自分で改造したものです。 紹介動画は以下。 内容は、 Vanillaの低音域が効きすぎて少々使いづらかったので 1:低音をカット(ただしゲインも少なくなるので) 2:ブースター...