ラベル biquad~ の投稿を表示しています。 すべての投稿を表示
ラベル biquad~ の投稿を表示しています。 すべての投稿を表示

2017年2月24日金曜日

[Puredata]N_Phaser[Notch使用]

フランジャーも作ったらやっぱり次はこれです。
Puredataのチュートリアルにも非常に情報に乏しいフェイザーを、
ノッチフィルタを使用した掟破りの技で作りました。
ファイルはこちら。
N_PhaserV1.zip
ただし、metroがBang打ちっぱなしなのでCPU負荷が高いです!
出来もイマイチ良くない!


[製作過程]
さて、Phaserというくらいなので位相をちょっとだけずらして作成するのですが、
これがPuredataだと非常に難しいです。
最初に思いつくのは
delwrite~
delread~ or vd~
で少しだけ遅らせた音を原音に混ぜる技ですが、
すぐにサウンドがフランジャー&コーラスになってしまって目的から外れてしまいます。
試しにnoise~をスペアナで見てみると典型的なコムフィルターになっています。


そこで色々調べた結果、一庵堂様こちらの記事を参考にさせて頂きました。
ざっくり結果として必要な要素を見ると
①位相をずらすのにオールパスフィルタを使用し原音にミックスする
②オールパスフィルタ使用後はノッチフィルタを2発使ったような周波数特性
③後はLFOで周波数を変化させてシュワシュワさせる

オールパスフィルタもノッチフィルタもbiquad~を使うため難易度が高いです!
ただし以前の記事
[Puredata]vanillaで頑張ってbiquad~を使うヒントでbiquad~は使えるようになっていたので何とかなりそうです。

まず、①の作成からやってみました。
オールパスフィルタ自体は作成できたのですが、
2段重ねてスペアナを見ると何故か②の結果にならず、
ピーキングフィルタのような波形になりました。
パッと音だけ聴けばフェイザー?な感触もあるのですが、
鼻をつまんだような感じは薄いものの、オートワウ?と訊かれると返答に困る出来です。

苦心しての出来がオートワウもどきで挫けそうですが、
再起、①の工程を飛ばして②からスタートしました。
ノッチフィルタさえできればどうにかなる!
③のLFOはdelread~やvd~のsignalがbiquad~では使えないので
テーブルに三角波を書いてmetroでBang連発して
周波数の変化をfloatで送り込みました。
そして出来上がったのがN_PhaserV1です。

[感想]
ディストーションサウンドでタッピングしてみたら何ともそれっぽい音になりました!
今度はクリーンサウンドでカッティングしてみます。
・・・何か初夏の清々しさが足りない(ギターの腕は二の次としても)

スペアナで波形を見ると1段掛けただけならノッチフィルタで削れた周波数特性となるのに、
2段ノッチフィルタを直列で掛けると何故かピーキングフィルタになっているではありませんか!

・・・うん、もうコレでいいかな(挫折)
ワウと違ってコードを弾いても音の分離感
があるし。

というわけでフェイザー?な何かは完成したので、
当面はこれで乗り切ろうと思います。
いつかオールパスフィルタでリベンジしたいです。


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にはないオールパスフィルターの式があります。


[機材]Boss Mega Distortion MD-2 MOD

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