basic
入門書は簡単過ぎる。
専門書は難しすぎる。
グッときた言葉です。ほんとうにそのとおり。
電子工作ならLEDをチカチカまでは懇切丁寧に解説されているけどその先突然難しい。
puredataも同じです。440Hzで音が出せたらその先突然難しい。
ここでは定番のパッチを紹介してゆこうと考えています。
何かしらの助けになることを願いつつ。
MIDI
midi関連、puredataは単体ですべてやるのが潔いという風潮がありますが、midi音源として使うとシーケンスの手間が省けて便利だったりもします。
ドラムトリガー
まずはドラムトリガー。
novationのlaunchPadなどで利用出来るかも知れませんね。
[notein 10] でmidi ch 10のデータを取得します。packで1つのデータに固めたあと[route]でほしいnote noのヴェロシティだけ取得する。というのが ----- の上側の処理。
-----より下の部分、midiはnote offの際、ヴェロシティをゼロとしてデータを送り込んできます。ですのでゼロならnote off、そうでなければnote onです。このパッチではヴェロシティの値を利用してARエンベロープを作っています。
実際に利用する場合はサブパッチにしてやるとすっきりして良いでしょう。
ポリフォニック
楽器のパッチを作った場合、何もしなければそれはモノフォニックですので鍵盤を同時におすなどした場合に意図したとおりには動きません。
同時にどれだけ音が出せるのか、必要なのか。それを考慮してポリフォニックの処理をしなければなりません。
[notein]の値を[pack]、[poly 4 1]で4ポリの処理をしています。
[poly]から出力されるのは 発声No、Note No、Velocityです。これらを再び[pack]して[route]で発声No毎に処理を割り振ります。
見ての通り、同時に4音鳴らすためには4つのシンセが必要になります。
これはpuredataだけではなくて現実のシンセも一緒です。
同時にたくさん音が出せるということはそれだけたくさんのシンセが内蔵されているということなのです。
(だから高いんです)
シーケンス
ステップシーケンサー
もっとも初歩的なステップシーケンサーです。
puredataのデータフローを理解するのにも良いサンプルになると思います。
オブジェクトのホットとコールド、左の入力がホット、右がコールドとなっていて、[*~]のようなチルダオブジェクトというものでないかぎり、コールドが変化しても値はアウトプットされません。オブジェクトに記憶されるだけです。
コールドに値を入力し、ホットをbangすることで 記憶された値が出力される。
この仕組みを利用したのが以下のステップシーケンサーです。
同じ理屈でカウンターも動作しています。
レコーディング
writesf~
正直なところ、困ってる人のコメントを見るまで気づきませんでした。
puredataは基本的にスタンドアロンで利用するものなので、コントロール信号をやりとりする事は出来てもオーディオ信号を他とやりとりする仕組みはありません。
puredataでオーディオをファイルに保存することになります。
利用するのは[writesf~]というオブジェクトです。
せっかくなので便利なパッチを作りました。
[output~]というアブストラクトです。(オブジェクトのように利用出来るパッチをそう呼びます)
中身はこんな感じになっています。
アブストラクトの名前を右クリックしてOpenすればこのように中を覗けます。
弄りそうな場所としては gain と output file nameでしょうか。
便利に使えるようにご自由に改変して使ってください。下の添付ファイルからoutput~.pdをファイルに保存して、利用するパッチと同じフォルダ(パス)に保存して[output~]とオブジェクトを作成すれば利用が可能です。