Pure Data

URL: https://puredata.info/
ライセンス: 修正BSDスタイル

概要

Miller Puckette が開発した音声処理のためのビジュアルデータフロー言語 Max は現在ではアーティストに非常に人気の高い開発環境となっている。 その Miller Puckette が Max の後継として開発・発表したのがこの "Pure Data" である。"Pd" と略される。

Pure Dataプログラム例。サンプル “A07.frequency.mod.pd” より。

左図が Pd で書いたプログラムの例である。小さな四角のそれぞれが Pd の部品である。部品どうしが線で結ばれていると、部品から部品へとデータが流れるようになる(これが「データフロー」と呼ばれる所以である)。それぞれの部品は数値データを出力したり二つの入力を合成した計算結果を出力し、最終的にはこれを波形データに変換して音声を出力する。左の図でいうと、“carrier frequency” と書かれた数値データ(「456」)から線を辿っていくと最後に “output〜” と書かれた部品に辿り着いているが、 この “output〜” が音声出力をする部品である。Pd におけるプログラミングとはこのように、部品を配置し、それらを結線することで行われる。考え方としては、エフェクターを数珠繋ぎにして最後にアンプに繋いでいく様子に近い。

Max および Pure Data がプログラマ以外の利用者に支持されている理由は、データの流れが一目で理解でき、それを容易に変更できることが一つの理由だろう。また、音声処理のための様々なモジュールが用意されているので、高度な音声処理をすぐに実現することができる。加えてシリアル入力や MIDI 入力などの様々なインタフェースからの入力を受け取ることができるモジュールも多く提供されているため、インタラクティブな作品を製作する上で重宝する。要約すれば、プログラミングの自由度の高さと分かりやすさを兼ね備えた環境であると言える。

なお Pd は音声処理のみならず、グラフィック表示・OpenGL による 3D 表示・ビデオ処理などが可能となっている。音声と連動した映像表示といった処理も可能で、それらをサポートするためのモジュールもネット上の Pd コミュニティで開発・公開されている。

GUI

Pd では画面上に、操作可能な部品を置くことができる。上の図では、数字の入った部品上でドラッグ操作をすると値を変更することができたり、スライダーやボタンを置くこともでき、ちょっとしたインタフェースを簡単に構築することができる。また拡張モジュールとして様々な GUI 部品が 提供されている。そのため、簡単な操作パネルを作るために Pd を使うという場面もよく見られる。操作の結果は MIDI 信号として他の MIDI 機器へと 送信したり、あるいは Open Sound Control モジュールを使ってネットワーク越しに他のマシンへと送信することができる。通信プロトコルさえきちんと定めておけば、アプリケーションを利用する側は自由に GUI を構築することができるので、 アプリケーションを製作する側は必ずしも GUI をしっかりと作り込む必要がないというのはある意味便利である。プログラマとユーザー(アーティスト)が分離している場合で、かつユーザーが Pd でのプログラミングに慣れている場合はこうした開発モデルも検討してみる価値はある。このやり方は Max/MSP を使う場合でも同じ。

Pd 上でできること

Pd は拡張モジュールを導入することで、音声処理のみならず様々なデータを処理することができるプラットフォームになる。

3D画像

GEM は OpenGL を使った 3D 画像を生成するためのモジュールである。GEM を導入するとグラフィック表示用のウィンドウ(gemwin)が使えるようになり、そこに様々な図形要素を描いたり、カメラ位置を操作したりするための部品が提供される。画像ファイルを読み込み、テクスチャとして表示することもできる。

ビデオ映像

PiDiP はビデオ入力・動画再生・動画像処理・表示を行う部品を提供する。音声処理のパイプラインをそのまま動画像処理に置き換えたものだと考えてもらえばいい。また、動画像処理では解析結果を数値データとして出力するものもあるので、例えばカメラで捉えた物体の動きに反応して音を鳴らす、といったプログラムも作ることができる。Max で言えば上の GEM と合わせて Jitter に相当する。 なお、PiDiP は Pure Data Packet というデータ型を自由に拡張できるプラグイン上に実装されている。

PiDiP は Linux および Mac OS X のみサポートしている。Windows でのビデオ処理拡張としては、Framestein がある。

画像処理

画像処理のための別の方法として、GridFlow がある。数値データやピクセルデータの演算部品が多数提供されている。行列計算も可能。これを利用して画像処理やセルラーオートマトンのプログラムを書くことができる。

関連