Pure Data

Pure Data（Pd）は、1990年代にミラー・パケット(Miller Puckette) が開発したデスクトップミュージックとマルチメディア作成用のビジュアルプログラミング言語である。Puckette が主に開発したが、Pd はオープンソースプロジェクトであり、多数の開発者が参加している。BSD License に似たライセンス条件でリリースされている。
概要.
Pd はその対象領域も設計も Puckette が以前（IRCAM在籍時）に開発した Max に似ており、Max の商用の後継である Max/MSP とある程度相互運用が可能である。Pd も Max も典型的なデータフロープログラミング言語である。グラフィカルな環境で関数や「オブジェクト」が相互にリンクされ、制御フローや音響の流れを表す。Pd では音声処理などもホストCPU上で行われる。これは、Max/FTS においてDSPボード（Ariel ISPW）に信号処理や合成を任せていたのと対照的である。Pd のコードは David Zicarelli による Max の MSP 拡張（ソフトウェア音声処理）のベースとなった。
Max と同様、Pd はソフトウェアで部品として利用できるモジュールコードベース（外部および内部）を備えている。拡張可能なAPIを備え、C言語で書かれた部品を流用したり、他の外部部品を活用することでPython、Ruby、Schemeなどの言語で書かれたモジュールも活用できる。ただし、Pd 自身もプログラミング言語である。Pd で書かれた流用可能なコードは「パッチ」または「アブストラクション」と呼ばれ、フリーなプログラムとして流通している。また、他のプログラミング言語の知識が無くとも Pd の利用には何の問題もない。
外部リンクの節には Pure Data の様々な外部モジュールがリストアップされている。GEM（Graphical Environment for MultiMedia）は他の外部モジュール（Pure Data Packet、PiDiPi、Framestein、GridFlow）のベースとなっていると同時に、OpenGL画像や動画のリアルタイム操作を可能としている。
また、Pd はネットワークやインターネット上での共同作業が可能であり、リアルタイムで遠隔にいる人々が共同で音楽を作成するといった利用が可能である。
Pd はデジタル信号処理ソフトウェアとして、44100 サンプル毎秒のサンプリング周波数と64サンプル毎に1ブロックの制御レートを実現している（いずれも設定の変更が可能である）。制御メッセージや音声信号は一般に画面の上から下に繋がっているオブジェクト間を流れていく。
フリーウェアであるため無料で利用できるが、商用のMax/MSPと比較すれば処理速度・機能面・安定性では劣ると評価されている。日本では、作曲家の美山千香士がPdを広めた先駆者として知られている。
言語機能.
Pd は、アトム、メッセージ、オブジェクト、コメントという4種類の基本テキストをサポートする。
アトム.
アトムとは、 Pd における基本データ単位のことで、浮動小数点数かシンボルか他のデータ構造へのポインタのいずれかである。なお、Pd では全ての数値は 32ビットの浮動小数点数である。入力データは、ファイルから読み込んだり、FireWire、USB、ネットワークなどから OpenSound Control (OSC) 経由で何らかのオーディオボードやMIDIを読み込んだり、その場で生成したりする。結果をテーブルに保持して、それを新たな入力に使用することもできる。
メッセージ.
メッセージとは、1つ以上のアトムから構成され、オブジェクトへの命令として働く。中身のない特別なメッセージを "bang" と呼び、データの流れを開始させるスタートボタンのような役目を持っている。
オブジェクト.
Pd の基本オブジェクトは、算術演算、論理演算、ビット演算といった通常のプログラミング言語にある演算子のようなものから、波形発信器や高速フーリエ変換や各種デジタルフィルタなどの音声処理DSP機能に特化したもの（チルダ(~)が付いていて区別される）まである。
データ構造.
Pd の特筆すべき機能は、データ構造を視覚的に表現できることである。これには様々な応用が考えられ、作曲やイベントの順序付けから、視覚的な作品を作ったり、Pd 自体のGUIを拡張したりできる。
Pure Data（純粋なデータ）の名の通り、Pd のデータ構造は音楽データを静止画としても動画としても表現できる。C言語の構造体のように Pd のデータ構造は様々なデータで構成でき、データ構造の視覚化をデータ構造でパラメータ指定することで制御したり、Pd のパッチ内でのメッセージや音声信号を制御したりできる。Puckette は以下のように記している。