■各種フィルター/パラメトリックイコライザ(Pure Data パッチ)

Pure Data(Pd)で簡単に使えるフィルターとしては[hip~][lop~][bp~]があります。それぞれの特性を下図に示します。

03p_197_1hpf.png<[hip~] ハイパスフィルター(HPF)>
カットオフ周波数を高くした場合は微妙に効きが鋭くなっているようです。ただ高いカットオフ周波数に設定することはあまりなさそうなので、実用上問題ないと思います。
03p_197_2lpf.png<[lop~] ローパスフィルター(LPF)>
カットオフ周波数を高くすると効きが悪くなり、7020Hz以上に設定するとフィルターが無効となってしまいます(44100サンプリング時)。→こちらのメールアーカイブに詳細が載っています。
代替手段としては、後述の[biquad~][rpole~]等のフィルターを用いるしかないと思われます。
03p_197_3bpf.png<[bp~] バンドパスフィルター(BPF)>
変な特性に見えますが、縦軸をdB、横軸(周波数)を対数表示にするとこのような形なります。ワウ等の中心周波数を揺らすエフェクトの場合は、[vcf~]を使います。

<その他のフィルターオブジェクト>
[biquad~][rpole~][cpole~]等のフィルターがありますが、数値の計算が複雑なため、外部ライブラリ「ggee」に頼ることにします。[biquad~]用係数計算オブジェクト8種類([bandpass][equalizer][highpass][highshelf][hlshelf][lowpass][lowshelf][notch])が使用可能になります。

例として[equalizer]を利用したパラメトリックイコライザを作りました。[equalizer]のヘルプファイルとほぼ同じですが、Q値を帯域幅(1オクターブ=100)に変換する式を入れています。
03p_197_4peq.pngこのパッチをダウンロード

■スイープ信号を使った周波数特性確認(Pure Data パッチ)

Pure Data(Pd)で様々なフィルターをかけるときに、どんな周波数特性になるか確認しておきたい場合があります。[noise~]と[rfft~]を使うのが簡単ですが、若干ギザギザな形になるのと横軸(周波数)が対数でないので使いづらさを感じていました。そこで、スイープ信号を用いて見慣れた形で周波数特性を確認できるパッチを作りました。

03p_196_3sweep.png
このパッチをダウンロード※上の図よりグラフが大きいです。)

<使い方>
[pd filter]の部分に目的の処理を入れます(今回は[hip~ 100]と[lop~ 2200]が入っています)。STARTの[○]をクリックすると、周波数スイープが始まりグラフが描画され、十数秒で自動的に終了します。count_up_valueの数値を上げると飛び飛びにスイープするため処理が早く終了します。



<解説>
下の方にある[env~ 2048]は常に1024サンプルごとに音量の数値を出力し、それにより[t b f]の左アウトレットからbangが出続けています。スタート前は[spigot]でそのbangがせき止められていますが、スタートして[spigot]の右インレットに1が入ることでせき止められていたbangが出力され始めます。

そして[+ ]からカウンターと同じ数値が出力され、この数値を元に計算された周波数の余弦波信号が[osc~ 20]から出力されます。その後[pd filter]を通った後の信号の音量が[env~ 2048]から出力され、Array "sweep"に書き込まれます。途中の[*~ 0.00044722]は、変化がないときの音量を30dBに合わせるためのものです。また、[clip 0 60]はデータがグラフの枠からはみ出さないように入れています。

カウンターには[f 1]内の数値が足されていき、533以上の数値になったとき[spigot]の右インレットに0が入り終了となります。



当初は[metro]を使ってbangを出力し続けていたのですが、[env~]の出力を利用する方が無駄がない気がして変更しました。Arrayのサイズは534と中途半端ですが、なんとなくグラフの大きさは500程度がちょうどいいかなと思って調整した結果となっています。

■バイパススイッチ/ブースター(Pure Data パッチ)

デジタルエフェクターの場合でも、物理的にトゥルーバイパスにするのも一つの手だと思います。しかし、それだとフットスイッチに別の機能を割り当てることができないので、Pure Data(Pd)のパッチ内でエフェクトオン・オフを切り替えることにします。

03p_195_1boostP.pngこのパッチをダウンロード
エフェクトオン時(トグルスイッチが[×]の時)に[spigot~]の左アウトレットから右アウトレットに出力が切り替わります。右アウトレットからの出力に対し、様々なエフェクト処理を行っていく形になります。

エフェクト切替時には下図のように、波形が途切れて雑音が出ます。[line~]で音量を滑らかに変化させれば雑音を消すこともできますが、ごくわずかなので気にしないことにします。
03p_195_2boostPi.png

エフェクト処理は、音量を増減させるだけです。ナンバーボックスで変化させる量をdBで指定します。PdでのdB値は、100が基準(等倍)なので+100しています。そして、[dbtorms]で実際計算に使う倍率へ変換します。

RasPd2ではSN比改善のため入力で+9dB、出力で-9dBしています。その関係で、入出力が最大0.32Vrms程度です。あまりないとは思いますが、単体でクリーンブースターとして使う場合には力不足となってしまいます。

■Pure Data 設定メモ(Windows 7用)

Pure Data(Pd)のインストールについては、Pure Data Japanにも記載があるのですが、私の環境(Windows 7 Home Premium)ではエラーでなかなかうまくいかないことがあったので、メモを残しておきます。



<インストール>
Pd-extendedは今後アップデートがなさそうなので、Pure Data vanillaの方を使います。puredata.infoのダウンロードページから、インストーラーをダウンロードしてインストールします(まれにサイトがダウンしています)。デフォルトのインストール先フォルダはC:\Program Files\Pd\になっていますが、念のため私はC:\Pd\に変更しています。※作成したパッチのファイルパスに全角文字や半角カタカナ・半角スペースがある場合、「~: can't open」というエラーが出ます。

Pdを実行すると、「msvcr71.dllが見つからなかったため、このアプリケーションを開始することができませんでした。アプリケーションをインストールし直すとこの問題が解決される場合があります。」というエラーメッセージが表示される場合があります。msvcr71.dllファイルをネット検索してダウンロードし、C:\Windows\System32フォルダかC:\Windows\SysWOW64フォルダに置くと解決します。



<オーディオ設定>
Media→Audio Settings...を開こうとすると、以下のエラーが出ます。{} のあたりには使っているオーディオデバイスの名前が入るようです。
(Tcl) UNHANDLED ERROR: extra characters after close-brace
while executing
"lappend audio_indevlist {}CN (Realtek High Definition}
global audio_outdevlist; set audio_outdevlist {}
lappend audio_outdevlist {Xs[J..."
("uplevel" body line 2)
invoked from within
"uplevel #0 $docmds"

日本語が問題らしく、コントロールパネル→地域と言語→管理→システムロケールの変更→英語(米国)へ変更し再起動すると、Audio Settings...が開けるようになります。

Block sizeが256だとDelayを大きくしても音切れするため、512にしています。Delayはとりあえず小さければよいようで、5msとしました。レイテンシーは65ms程度で、プロセス優先度をリアルタイムにしても変化しませんでした。Windows環境ではこれが限界だろうと諦めています。設定後はシステムロケールを日本語に戻して大丈夫です。

※ASIOを利用すると低レイテンシーが期待できるらしいですが、私の環境ではうまくいきませんでした。ASIO4Allをインストール後、PdでMedia→ASIOを選択しましたがフリーズします。システムを英語にすれば動くという情報もあり、こちらのページを参考に言語パックをインストールしてみましたが、再起動後画面が真っ黒のままとなり、システムの復元をしないと元に戻りませんでした。



<externals設定>
Pdには便利な外部オブジェクトがあり、それを使うためにはexternals(外部ライブラリ)をインストールする必要があります。例としてzexyをインストールします。
  ・Help→Find externalsからzexyを入力し検索
    ・最新のWindows用(Windows-i386-32)のものを選択
    ・デフォルトのフォルダ(.../Pd/extra/)にインストール
  ・File→Preferences→Path...→New...からインストールしたフォルダ(.../Pd/extra/zexy)を選択
※オブジェクトの種類によってはスタートアップに登録が必要なものがあるようです。
  ・File→Preferences→Startup...→New...からzexyと入力し、Startup flagsに「-lib zexy」を入力

基本的に外部ライブラリを使う場合はlibdirが必要なようです。他にも依存関係がある外部ライブラリがあるかもしれません。現状私はlibdir cyclone unauthorized ggee zexyの5つをインストールし、zexyのみスタートアップに登録しています。

■タグ : PureData

■歪みと波形・倍音その6(ダイオードの位置)

歪み系エフェクターでは多くの場合、波形クリップのためにダイオードが使われます。ダイオードクリッパーとかクリッピングダイオードという呼び方があるようです。このダイオードの回路上の位置を変更し、波形・倍音の違いを調べました。

歪みと波形・倍音 記事一覧



▽回路図
12_193_1diodeppxc.png
非反転増幅回路の帰還部分にダイオードを入れる場合をODタイプ、出力にダイオードを入れる場合をDSタイプと勝手に呼ぶことにします。偶数次倍音も出るように、非対称クリッピングにしました。入力は1kHzサイン波、約0.14Vrmsです。音量はDSタイプの方が小さくなるため、各タイプ録音後ノーマライズしています。
※Twitterにて指摘をいただき、回路図左上にコンデンサを追加しました。増幅率を変更し、全データを差し替えています。(2017年8月12日)

▽11倍増幅
12_193_2diodepg11x.png
ODタイプの方が倍音が多そうに見えますが、なんともいえない感じです。聴感上は、ODタイプの方が高域が出ているように感じました。

▽21倍増幅
12_193_3diodepg21x.png
2~6次倍音はDSタイプの方が多く、7次倍音以降はODタイプの方が多いです。聴感上も、ODタイプの方が高域が出ているように感じました。

▽34倍増幅
12_193_4diodepg34x.png
DSタイプの方が歪率が高く、全体的に倍音が多いです。聴感上はあまり違いがわかりません。波形については、どの増幅率でもODタイプの方が丸みを帯びた形になっています。

さらに増幅率を上げていくと、ODタイプは歪率が31%程度で頭打ちになったので、深い歪みは得にくいようです。DSタイプは歪率が上がり続けましたが、波形の角が鋭くなるので、ICの歪みが混ざっていると思います。



・総評(のようなもの)

ODタイプは高次倍音が出やすい(クリアな音に感じる)、DSタイプは低次倍音が出やすい(太い音に感じる)というような傾向がわかりました。LED対称クリッピングでも測定しましたが、同じ傾向のようです。丸い波形になるODタイプの方がなんとなく低域寄りな音になるイメージがあったので、意外な結果となりました。

---以下2017年8月20日追記---

▽LTspiceでのシミュレーション結果(21倍増幅)
12_193_5diodepg21xs.png
入力電圧は0.12Vrmsで同じぐらいの歪率になりました。実測と違う部分はあるものの、倍音の出方の傾向は大体同じといってよいと思います。シミュレーションでも歪みの特徴は充分参考になるようです。

■タグ : 歪み 波形・倍音

管理人

ブログ内検索

メールフォーム

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

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

アクセスカウンター