■歪みと波形・倍音その8(各クリッピングと倍音)

Pure Data(Pd)を使って正弦波のクリッピングと倍音確認を行ったので、メモとしてまとめておきます。振幅は適宜調節しています。



<対称ハードクリップ>
12_208_1clips.png
奇数次倍音のみ出ています。

<非対称ハードクリップ>
12_208_2clipas.png
偶数次倍音が加わっています。

<対称ソフトクリップ>
12_208_3clipss.png
ハードクリップより全体的に倍音が減っています。

<非対称ソフトクリップ>
12_208_4clipass.png
こちらも全体的に倍音が減っています。

<半波整流>
12_208_5half.png
偶数次倍音のみ出ています。

<全波整流>
12_208_6full.png
偶数次倍音のみ出ていて、基音がありません。オクターブファズでこの処理を行うことがあります。



クリッピングではありませんが、周波数2倍、振幅0.25倍の正弦波を元の正弦波に足した場合は下図のようになります。
12_208_7oct.png
真空管の歪みは単なる非対称クリップではなく、このような非対称な変形によるものといわれています。

半波整流した正弦波と元の正弦波を混ぜた場合は下図のようになります。
12_208_8halfp.png
非対称に変形した波形になるので、これを利用すれば面白い歪みエフェクターが作れるかもしれません。

■タグ : 歪み 波形・倍音

■歪みと波形・倍音その7(各波形の倍音)

Pure Data(Pd)を使うと簡単に信号発生と倍音確認ができますので、メモとしてまとめておきます。



<三角波>
12_207_1tri.png
奇数次倍音がきれいに並んでいます。

<ノコギリ波>
12_207_2saw.png
奇数次倍音と偶数次倍音が両方出ています。

<矩形波>
12_207_3sq.png
ほぼ奇数次倍音ですが、三角波より倍音が多いです。

<矩形波+ハイパスフィルター>(※振幅0.8倍)
12_207_4sqHPF.png
波形が斜めにえぐりとられる感じになります。

<矩形波+ローパスフィルター>
12_207_5sqLPF.png
波形が丸く削られる形になります。ローパスフィルターなので高域の倍音が減ります。

<パルス波>(※パルス波という呼称でいいのか不明)
12_207_6sq60.png
矩形波に似ていますが、プラス側とマイナス側になっている時間の幅の比が1:1(デューティ比0.5)ではありません。上図はデューティ比0.6の場合で、偶数次倍音が出ています。真空管の歪みを調べた際にハイゲインでも偶数次倍音が多かったのは、この波形に近いためかもしれないと考えています。

■タグ : 歪み 波形・倍音

■コンプレッサー(Pure Data パッチ)

Pure Data(Pd)では[limiter~]でコンプレッサーを作ることができます(zexyが必要)。自分で作ってもそこまで複雑ではありませんが、今回はニー(knee)というコントロールを追加していますので、やや大掛かりなパッチとなっています。
03p_206_1comp.png
このパッチをダウンロード
[env~ 256]は128サンプルごとに値を出力するため、[delwrite~]で原音をその時間分遅延させてタイミングを合わせています(Windows環境ではなぜかさらに64サンプル程度タイミングがずれました)。[env~]を使ったエフェクト全てに行うべき処理ですが、ディレイタイムがそのままレイテンシーの増加になってしまうため、ノイズゲートオートワウでは省きました。

[env~ 256]からのエンベロープデータは2つの[moses]で3パターンに振り分けます。threshold+kneeの値以上では通常の圧縮動作となり、threshold-kneeの値未満では圧縮がかかりません。真ん中下側と右側の[expr]の式がコンプレッサーの定義的な式となります。
(例)入力:80dB、threshold:60dB、ratio:10のとき
   →( 80 - 60 )÷10 + 60 - 80 = -18 (入力音を-18dB変化させる)

threshold±kneeの範囲では、滑らかにthresholdを変化させます。どういった曲線にするかですが、下図のような楕円を考えました。参考ページ→平行四辺形に内接する楕円の三種
03p_206_2comk.png
k=0のときは急に折れ曲がる形(ハードニー)で、kを上げていく程なだらかなカーブ(ソフトニー)になります。市販のコンプレッサーではどのように処理しているかわからないので、完全に自己流です。

attackとreleaseは音量変化にかける時間(ms)を指定します。[env~]からはデータが次々と出力されてくるので、音量変化の最中にまた次の音量変化に切り替えることになります。このため、実際の変化時間は指定した時間よりも長くかかりますが、動作の仕方としてはそれで問題ないようです。参考ページ→コンプレッサーを考える コンプレッサー アタックタイムの真実 (各種コンプ比較あり)

コンプレッサーの世界は思っていたより奥が深く、入出力の関係がもっと複雑なカーブになっていたり、周波数によって特性が違ったりするものがあるようです。まぁ私には大して違いがわからないでしょうから、あまり深追いしないことにします。

■ノイズゲート(Pure Data パッチ)

Pure Data(Pd)には[threshold~]という音の始まり(立ち上がり、trigger)と終わり(立ち下がり?、rest)を検出できる便利なオブジェクトがあります。これを使うと簡単にノイズゲートを作れると思ったのですが、音声信号をそのままつなぐとtriggerとrestが頻繁に入れ替わってしまいます。この現象はおそらく[threshold~]の内部処理がエンベロープ検出になっていないために起こっているので、[env~]を入れることで対処できます。ただ更に検討していくと、[threshold~]は64サンプル分余計に処理時間がかかってしまう場合があることがわかったため、結局[env~]と[moses]でノイズゲートを作ることにしました。
03p_205_1noiseg.pngこのパッチをダウンロード
threshold以上になった信号は[moses]により右側に送られ、[change]でtriggerを検出します。検出後、左側の[change]に[set 0]が送られrestの受付を開始しますが、同時に左側の[spigot]が一定時間閉じられるため、restをすぐには検出しないようになっています。これによりtriggerとrestの短時間での繰り返しが防げます。threshold未満のときは左側に信号が送られ、同様のことが起こります。

立ち上がり時間(attack)はできるだけ短くしたいのですが、0にするとプチッというノイズが発生することがあるため、とりあえず0.1msというごく短い設定です。立ち下がり時間(decay)は500msと長い設定なのでノイズ遮断のキレが悪いですが、音の消え際を自然にするためにはやむを得ないでしょう。

(※パッチ内容を把握しきれていませんが、Isaac(139)さんのノイズゲートの方が高機能だと思います。→139 not found [Puredata]Noise Gate

バックグラウンドのノイズを消すという機能は、[rfft~]を使って周波数解析すれば実現できるかもしれません。しかしCPU負荷と処理時間の問題があるため、難しいだろうと思います。

■タグ : PureData

■オートワウ(Pure Data パッチ)

[env~](エンベロープフォロワー)を使って音量データを取得し、それに応じてバンドパスフィルター(BPF)の中心周波数が変わるようにすれば、オートワウ(エンベロープフィルター)となります。中心周波数を揺らす場合のBPFは[vcf~]を使いますが、Q値が基本的に固定値となります。ペダルワウは中心周波数が高い時(ペダルを閉じたとき)Q値が小さくなりますが、そこまで再現しなくてもワウっぽい音にはなるようです。
03p_204_1awah.pngこのパッチをダウンロード
rangeコントロールは、中心周波数が最高(2200Hz)になる時と最低(440Hz)になる時の音量差を調整します。rangeが小さい方が、音量減衰時に周波数の変化が急(速くこもる)ということになります。

滑らかに中心周波数を変化させるため、周波数と変化にかける時間の数値を[pack]でまとめて[line~]に送ります。[env~ 1024]からは512サンプルごとに数値が出力されるため、変化にかける時間は、512÷44100で約12msという計算となります(44100サンプル時)。

LFOやタップテンポを入れ、周期的にワウをかけることも可能です。ただデジタルだからといって多機能にしすぎると、CPU負荷の問題が出てくるかもしれないので、シンプルな構成にしています。

管理人

ブログ内検索

メールフォーム

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

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

アクセスカウンター