■タグ「PureData」

■フェイザー(Pure Data パッチ)

Pure Data(Pd)でのオールパスフィルター(APF)は[rzero_rev~]と[rpole~]を組み合わせて作ります。原音とAPFを通した音を足せばフェイザーとなります。参考ページ→Making and using all-pass filters
03p_203_1phaser.pngこのパッチをダウンロード
[rzero_rev~]と[rpole~]に入れる係数計算は、1次ローパスフィルターのときの[rpole~]用計算式をそのまま使うとうまくいきました。上側の[expr~]が2π*fc/fsの計算ですが、周波数はMXR Phase 90を参考に150~2250Hzで変化するようにしています。

Uni-Vibeもフェイザーと似た仕組みなので再現できそうなのですが、いまいち係数の設定がうまくいきませんでした。今後使いたくなったときに作るかもしれません。



【フィードバックについて】

Phase 90ではAPF最終段から2段目にフィードバックがかかっていますが、Pdで同じことをやろうとすると、「error: DSP loop detected」と出てしまいます。このエラーを回避するには、[send~][receive~]を使い1ブロックサイズ分遅延を発生させます。参考ページ→What's A "DSP-Loop"?

今回のフェイザーでは上記の方法だと出音がアナログの場合とは違うように感じたので、結局フィードバックは入れないことにしました。[block~]でブロックサイズを減らし遅延を少なくする方法もありますが、CPU負荷を考えると現実的ではないと思います。

■ビブラート/コーラス(Pure Data パッチ)

ディレイの時には[delread~]からディレイ音を出力させましたが、ディレイタイムを連続的に変化させる場合は、[vd~](variable delay)を使います。LFOで周期的にディレイタイムを変化させると、ディレイ音の音程が揺れてビブラートがかかり、原音とビブラート音を足せばコーラスとなります。
03p_202_1chorus.pngこのパッチをダウンロード
LFOの出力はトレモロの時と同じ三角波ですが、abs関数を使うと簡単になると気づいて式を変更しました。出力範囲は0~1で、[*~ ]により振幅が調整されます。[+~ 3]を入れているのは、[vd~]の最短ディレイタイムが64サンプル分(44100サンプリング時1.5ms)となっているためで、一応余裕をみて3ms足しています。

ビブラート音をフィードバックさせればフランジャーとなりますが、いまいち数値の調整がうまくいきませんでした。今後使いたくなったときに作るかもしれません。



【depth計算について】

通常のコーラスエフェクターは、揺れのスピードを遅くすると効きが浅くなります。今回のdepthコントロールでは音程を変える幅が設定され(いわゆるデチューン機能)、rateを変更しても効果が変わらないようにしました。具体的には、最大で約25centピッチが変化するように調整しています。

詳しい原理は省くとして、例えば1000Hzの信号に可変ディレイをかけるとします。1秒間かけて徐々にディレイタイムを0から100msに変化させたとき、ディレイ音は100Hzズレて900Hzの音になります。同様に、0.5秒間かけてディレイタイムを0から25msへ変化させたとき、ディレイ音は50Hzズレて950Hzとなります。このように、比例計算によって周波数の変化幅を調節できます。

■LFO/トレモロ(Pure Data パッチ)

Pure Data(Pd)では、[osc~]で余弦波、[phasor~]でノコギリ波を発生させることができます。[cos~]はコサインを計算しますが、[phasor~]と組み合わせて余弦波を発生させるために使う場合があります。[phasor~]は0から1へ上がる形なので、-1をかければ0から-1へ下がる形になります。
03p_201_1wave.png

<三角波(Triangle Wave)>
エフェクターに使われるLFO(Low Frequency Oscillator)は三角波が多いようです。Pdでは[phasor~]等を組み合わせることになります。
03p_201_2tri.png
3パターン示していますが、結局[expr~]が一番楽な気がします。

<矩形波(Square Wave)>
あまり使わなさそうですが、一応3パターン示しています。
03p_201_3squ.png



三角波を使い普通のトレモロを作りました。waveコントロールは、三角波を増幅してクリップすることで矩形波へと近づける仕組みになっています。
03p_201_4trem.pngこのパッチをダウンロード
三角波は直線的な数値変化ですが、[dbtorms~]を入れることで指数的な倍率変化による音量操作となるようにしています。

■タグ : PureData トレモロ

■タップテンポ付ディレイ(Pure Data パッチ)

Pure Data(Pd)でのディレイは、[delwrite~]に信号を入力し、[delread~]から指定した時間遅延後出力させるというものです。リピートさせるには、ディレイ音を再び[delwrite~]に入力します。青枠内はタップテンポ入力[pd tap]の中身です。
03p_199_1delay.png
このパッチをダウンロード

とりあえず適当に[hip~][lop~]を入れてディレイ音を劣化させています。また、入力部分の[spigot~]だけでエフェクトオフにした場合、ディレイ音が消えずに出力される(いわゆる「テイル」機能)ので、出力部分にも[spigot~]を入れてエフェクトオフ時ディレイ音を出力しないようにしています。

TAPをクリックすることでタップテンポ入力ができます。リズムはdivisionのラジオボタンで4分音符、付点8分音符、8分音符を選べます。



【 [pd tap]について 】

<使い方>
TAPのbangを2回以上クリックすると、そのクリック間隔時間の平均がディレイタイムとして設定されます。5回以上クリックすると、最新4回クリック分の間隔時間のみ反映されます。前回のクリックから2秒間クリックしなかった場合、自動的にテンポ入力終了となります。

<解説>
[delay]はbangが入ってから遅延時間内にまたbangが入ってくると、待機していたbang出力がキャンセルされる仕様になっています。TAPクリック毎に右上の[delay 2000]にbangが入りますが、2秒間bangが途切れたときのみリセット信号[s reset]が発生するということになります。

1回目のTAPクリック時、[timer]から出力される数値は全ての[spigot]でせき止められているので何も変化はありません。2回目のクリック時は左側の[spigot]を通過してt1にクリック間隔時間が入り、同様に3回目クリック時はt2、4回目クリック時はt3に時間が入ります。4回目クリック後上側のカウンターが1に戻り、5回目クリック以降は繰り返しになります。そしてt1~t3を足し合わせた数を3で割り、平均値を算出します。

右側のカウンターは2回目と3回目クリック時の計算のためのものです。2回クリック時はt1を1で割り、3回クリック時はt1+t2を2で割るようになっています。

■タグ : PureData ディレイ

■1次ローパスフィルター(Pure Data パッチ)

Pure Data(Pd)で使える各ローパスフィルター(LPF)の特性を示します。カットオフ周波数(fc)は5000Hz、サンプリング周波数(fs)は44100Hzです。
03p_198_1lpfs.png

fcが高い場合にアナログ1次LPFに近く使いやすそうなオブジェクトがないので、[rpole~]や[biquad~]を使ってみることにします。私には詳しく説明できる程の知識がないので、とりあえず計算式だけを紹介します。



<[rpole~]用>
こちらのサイトの式が一番精度が高いようです。aとbを逆にしています。
03p_198_2lpfc1.png
[rpole~]の右インレットに上記a1の値を入れます。そのままでは音量が上がるので、出力に b0=1-a1 をかけるとよいようです。

<[biquad~]用>
このアプリケーションノート(pdf)の式を使いました。
03p_198_3lpfc2.png
[biquad~]へ[-a1 0 b0 b1 0]の形で送ります。



[rpole~][biquad~]と同じ意味となる[fexpr~]も加えてパッチを作りました。適宜出力を繋ぎ替えて下さい。
03p_198_4lpf.png
このパッチをダウンロード

下図はfc=1000とfc=5000、fs=44100での特性です。高域部分が[rpole~]では上がり気味に、[biquad~]では下がり気味になるようです。
03p_198_4lpfsf.png

面倒な数式ですが結構苦労したので、いつの日かこのLPFを使うときが来ればいいなぁと思います。

---以下2017年9月23日追記---

[lop~]の手軽さは捨てがたいので、変換表を作りました。上段のカットオフ周波数に設定したいときは、下段の値を[lop~]に入れればOKです。※fs=44100での値です。
 fc(Hz) 10001500200025003000400050006000800010000
 [lop~] 931134617302085241229903477388745204964


管理人

ブログ内検索

メールフォーム

当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター