Pure Data
オーディオプログラミング言語 Advent Calendar 2020
概要
マルチメディア用のオープンソースのビジュアルプログラミング言語。
作者はMaxの開発者でもあるMiller Puckette(カリフォルニア大学サンディエゴ校)。
元MITメディアラボのMiller Pucketteは1980年代のIRCAM在籍時にMaxの前身となるThe Patcherを開発。Maxは1990年にライセンス供与されたOpcode社より販売される。カリフォルニア大移籍後の1996年あらたに再設計した言語としてPure Dataをリリース。
実装例
サイン波生成
特に説明は必要ないくらいシンプルです。
Delayエフェクト
wavファイル再生はreadsf~にopenメッセージを送ります。ディレイはdelwrite~でバッファ書き込み、delread~でバッファ読み込み。*~で音量調整、+~でミックス。
感想
Pure Dataは第一印象でGUIが地味と感じるかもしれません。ですが、慣れてくるとこれはあえてこういう設計なのだと思えてきます。
Maxをはじめリッチなビジュアルプログラミング環境がある中で、Pure Dataの価値のひとつはサウンドエンジンの軽さとポータビリティにあるように思います。自作のプログラムやシステムにサウンドエンジンを載せたいとき、Pure Data(のGUIを除いた部分)は良い選択肢のひとつです。そういう点で、Luaのような組み込み用言語と考えることもできます。
また、オープンソースであるだけでなく、ノードの仕様もドキュメントが整備されているため独自ノードが作りやすく、自作のハードウェア制御などにも使いやすい構造になっています。
そのあたりがわかってくると、ビジュアルプログラミングの楽しさ演出よりも、GUIとエンジンを切り分けて、プログラムの利用しやすさ、軽さを重視しているストイックな設計も魅力に思えてきます。
とはいえ、用意されているノードだけでは微妙にかゆいところに手が届かないと感じることもあります。そのため本流(vanilla)以外にさまざまな便利機能を追加した拡張Pure Dataが存在します。少し前まではPd-extendedが有力でしたが開発が止まったため、現在はPurr Dataがその位置にあります。
Purr Dataはノードが追加されているだけではなく、それまでTcl/Tkで書かれていたGUIをJavaScriptのnode-webkitベースに書き直しており、パッチコードが曲線になったり、GUIパーツの色を変えられたり、という点でも現代的になっています。最近になってPurr DataのWeb版が公開されたのも、GUIをnode-webkitにしたことの恩恵に思います( https://purrdata.glitch.me/ )。Pure Dataは、無償ということもあってこれまでも大学教育などで利用されていましたが、Web版でさらに敷居が下がることが期待されます。vanilla自体もいまだに更新され続けていて、新しいOSにも対応し使いやすさも向上し続けています。
長年揉まれてきただけあり、完成度の高い現役の言語だと思います。