PureDataのテンプレ

電子音楽や電子工作で使われることが多い(気がする)PureDataですが、オーディオエフェクタのプロトタイプを試すのにも便利です。音ファイルを読み込んで処理をかけて再生するというのは最もよく使う処理なので、以下のようなテンプレートファイルとして用意してあります。

画像内にも簡単な説明が書かれていますが、それらを順に紹介します。

  1. まず(1)のトグルスイッチででDSPのオン・オフを切り替えます。
  2. (2)のメッセージボックスを押すと、指定されたWAVファイルが読み込まれて再生されます。再生終了したときに [readsf~] の第3アウトレットからbangが送出されるので、それを [open] に送ることでループ再生をしています。
  3. ファイル再生ではなくオーディオ入力を使いたいときは、[sfplay~] の出力のかわりに(3)の [adc~] を結線します。
  4. (4)の縦スライダーで出力レベルを調整します。よく使いそうな [0] (reference)、[-20] (dimmer)、[-80] (mute) はメッセージボックスとして置いてあります。
  5. 最後に、(5)にある [*~ 1] ですが、現時点では入力信号を加工なしで出力に流しています。この部分を自分が作るエフェクタのパッチ名に置き換えるなどして使用します。

出力部分に [hip~] や [clip~] などがあるのは、今は亡きPd-extendedに含まれていた [output~] から主要部分を抜きだしたものです。超低域をカットしたりレベルメータがあったり、出力信号を観察するのに便利なので、vanillaなPureDataに持ってきました。最近のvanilla Pdには [output~] があるので、それに置き換えてもいいかもしれません。

PureDataファイルは結局のところテキストファイルなので、以下のテキストを_template.pdという名前で保存すると、そのまま再現できます。

#N canvas 149 47 382 421 10;
#X obj 14 340 dac~;
#X obj 14 274 clip~ -1 1;
#X obj 83 274 clip~ -1 1;
#X obj 186 37 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 14 318 *~;
#X obj 41 318 *~;
#X obj 223 254 vsl 15 100 -80 20 0 0 empty empty out_gain_(dB) 0 -9 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 29 296 expr pow(10 \, $f1/20);
#X msg 243 287 -20;
#X msg 243 346 -80;
#X floatatom 223 368 5 0 0 0 - - - 0;
#X msg 186 57 \; pd dsp \$1;
#X msg 243 267 0;
#X obj 14 252 hip~ 3;
#X obj 83 252 hip~ 3;
#X obj 86 101 adc~;
#X msg 29 59 1;
#X msg 29 79 0;
#X obj 23 101 readsf~ 2;
#X obj 172 254 vu 15 120 empty empty -1 -8 0 10 #404040 #000000 1 0;
#X obj 47 362 - 100;
#X floatatom 47 384 5 0 0 0 - - - 0;
#X obj 102 362 - 100;
#X obj 102 340 env~ 16384;
#X floatatom 102 384 5 0 0 0 - - - 0;
#X obj 47 340 env~ 512;
#X msg 23 37 open clean_guitar.wav;
#X obj 22 152 *~ 1;
#X obj 53 152 *~ 1;
#X text 184 14 (1) turn DSP on/off;
#X text 20 14 (2) start playback;
#X text 93 121 (3) ...or use audio inputs;
#X text 215 213 (4) adjust output level;
#X text 63 170 (5) here you do whatever to incoming signals;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 11 0;
#X connect 4 0 0 0;
#X connect 4 0 23 0;
#X connect 4 0 25 0;
#X connect 5 0 0 1;
#X connect 5 0 23 0;
#X connect 5 0 25 0;
#X connect 6 0 10 0;
#X connect 6 0 7 0;
#X connect 7 0 5 1;
#X connect 7 0 4 1;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X connect 12 0 6 0;
#X connect 13 0 1 0;
#X connect 14 0 2 0;
#X connect 16 0 18 0;
#X connect 17 0 18 0;
#X connect 18 0 27 0;
#X connect 18 1 28 0;
#X connect 18 2 26 0;
#X connect 20 0 21 0;
#X connect 20 0 19 0;
#X connect 22 0 19 1;
#X connect 22 0 24 0;
#X connect 23 0 22 0;
#X connect 25 0 20 0;
#X connect 26 0 18 0;
#X connect 26 0 16 0;
#X connect 27 0 13 0;
#X connect 28 0 14 0;