| ピュアデータ | |
|---|---|
多くのパッチが開かれた Pure Data (netpd プロジェクト) | |
| 原作者 | ミラー・パケット |
| 安定版リリース | |
| リポジトリ | |
| タイプ | ビジュアルプログラミング言語 |
| ライセンス | BSD-3条項 |
| Webサイト | ピュアデータ |
| ピュアデータ | |
|---|---|
| パラダイム | データフロー |
| デザイン: | ミラー・S・パケット |
| 初登場 | 1996 |
| 安定版リリース | 0.55-2 / 2024年11月18日 ( 2024-11-18 ) |
| OS | クロスプラットフォーム(macOS、Windows、Linux) |
| ライセンス | BSD-3条項 |
| Webサイト | ピュアデータ |
| 影響を受けた | |
| パッチャー | |
Pure Data(Pd)は、1990年代にミラー・パケット氏によって開発されたビジュアルプログラミング言語で、インタラクティブなコンピュータ音楽やマルチメディア作品の制作を目的としています。パケット氏がプログラムの主要作者ですが、Pdはオープンソースプロジェクトであり、多くの開発者が新しい拡張機能の開発に取り組んでいます。BSD -3-Clauseに基づいてリリースされています。Linux 、macOS、iOS、Android、Windowsで動作します。FreeBSDとIRIXへの移植版も存在します。
Pdは、パケット氏がIRCAM在籍中に開発したオリジナルのMaxプログラムとスコープと設計において非常に類似しており、Max言語の商用後継であるMax/MSPとある程度の相互運用性を備えています。これらはまとめてPatcher [ 2 ]ファミリー言語として議論されることもあります。
外部のGraphics Environment for Multimedia (GEM)と、これと連携するように設計された外部 ( Linux、 Mac OS X用のPure Data Packet / PiDiPなど)、Windows 用のframestein 、Linux、 Mac OS X 、Windows用の n 次元マトリックス処理としてのGridFlow を追加することで、オーディオや外部センサーなどとのインタラクションの幅広い可能性を備え、ビデオ、 OpenGLグラフィック、画像などをリアルタイムで 作成および操作できるようになります。
Pdは、ネットワークやインターネットを介したライブコラボレーションを可能にするためにネイティブに設計されており、LAN経由で接続されたミュージシャンや、地球上のさまざまな場所にいるミュージシャンが、リアルタイムで一緒に音楽制作を行うことができます。Pdは、ネットワークプロトコルとして FUDIを使用しています。
Pure DataとMaxはどちらもデータフロー・プログラミング言語の例です。データフロー言語は、プログラムを操作間のデータフローの有向グラフとしてモデル化します。Pure DataとMaxでは、関数または「オブジェクト」は、制御とオーディオの流れをモデル化するグラフィカル環境内でリンクまたは「パッチ」されます。しかし、Maxのオリジナル版とは異なり、Pdはサウンド合成と信号処理をデジタル信号プロセッサ(DSP)ボード(Max/FTSで使用されたAriel ISPWなど)にオフロードするのではなく、制御レートとオーディオ処理をホストの中央処理装置(CPU)で行うように設計されていました。Pdコードは、 David Zicarelliによるソフトウェア・オーディオ処理のためのMax言語のMSP拡張の基礎となっています。 [ 3 ]
Maxと同様に、Pdは、ソフトウェアで記述されたプログラムの構成要素として使用される外部オブジェクト(モジュール式コードベース)を備えています。これにより、プログラムは公開APIを通じて任意に拡張可能となり、開発者はC言語、あるいはPython、Scheme、Lua、Tclなどの外部オブジェクトを利用して、独自の制御ルーチンやオーディオルーチンを追加できます。しかし、Pdはプログラミング言語でもあります。Pdでネイティブに記述されたモジュール式の再利用可能なコード単位(「パッチ」または「抽象化」と呼ばれる)は、スタンドアロンプログラムとして使用され、Pdユーザーコミュニティ間で自由に共有されます。Pdを効果的に使用するために、他のプログラミングスキルは必要ありません。

Maxと同様に、Pdはデータフロー型プログラミング言語です。ほとんどのDSPソフトウェアと同様に、データの受け渡しには主に2つのレートがあります。1つはサンプル(オーディオ)レート(通常は毎秒44,100サンプル)で、もう1つは制御レート(64サンプルごとに1ブロック)です。制御メッセージとオーディオ信号は、通常、インレットとアウトレットを介して接続された「オブジェクト」間を画面の上から下へ流れます。
Pdは、メッセージ、オブジェクト、アトム、コメントという4つの基本的なテキストエンティティをサポートしています。アトムはPdにおける最も基本的なデータ単位であり、浮動小数点数、シンボル、またはデータ構造へのポインタのいずれかで構成されます(Pdでは、すべての数値は32ビット浮動小数点数として保存されます)。メッセージは1つ以上のアトムで構成され、オブジェクトに指示を与えます。バングと呼ばれるヌルコンテンツを持つ特殊なメッセージは、ボタンを押すのと同じように、イベントを開始し、データをフローにプッシュするために使用されます。
Pdのネイティブオブジェクトは、多くのプログラミング言語で見られる基本的な数学演算子、論理演算子、ビット演算子から、ウェーブテーブル発振器、高速フーリエ変換(fft~)、さまざまな標準フィルタなどの一般および特殊なオーディオレートDSP関数(チルダ(~)記号で指定)まで多岐にわたります。データはファイルからロードしたり、オーディオボード、MIDI、FireWire、USB 、またはネットワーク接続を介したOpen Sound Control (OSC)経由で読み込んだり、オンザフライで生成してテーブルに保存し、後で読み込んでオーディオ信号または制御データとして使用したりできます。
Pdが前身と比べて大きく進歩した点の一つは、グラフィカルデータ構造の導入です。これは、楽譜の作成、イベントのシーケンス、Pdパッチに付随するビジュアルの作成、さらにはPdのGUIの拡張など、様々な用途に活用できます。
Pdの名にふさわしく、データ構造はPdユーザーが音楽データの任意の複雑な静的、動的、またはアニメーション化されたグラフィカル表現を作成することを可能にします。C言語の構造体と同様に、Pdの構造体は浮動小数点数、シンボル、配列データの任意の組み合わせで構成され、これらはデータ構造の視覚的外観を記述するためのパラメータとして使用したり、逆にPdパッチ内のメッセージやオーディオ信号を制御したりするために使用できます。Puckette氏の言葉を借りれば:
Pdは、データ構造とそのグラフィカルな外観を記述するための、極めて非構造化な環境を提供するように設計されています。その根底にある考え方は、ユーザーが望むあらゆる種類のデータを表示し、それを任意の方法でディスプレイに関連付けることができるようにすることです。これを実現するために、Pdはグラフィカルなデータ構造を導入します。これはC言語のデータ構造に似ていますが、データに形状や色を付与する機能を備えているため、ユーザーはデータを視覚化したり編集したりすることができます。データ自体は、最初から編集することも、ファイルからインポートしたり、アルゴリズムで生成したり、入力されたサウンドやその他のデータストリームの分析から導出したりすることもできます。
— ミラー・パケット[ 4 ]

Pdは強力な言語ですが、オブジェクト指向の概念の実装には一定の限界があります。[ 5 ]例えば、コンストラクタ関数がないため、大規模なオブジェクトリストのインスタンス化や操作(生成など)が不可能であり、大規模な並列プロセスの作成は非常に困難です。さらに、Pdの配列やその他のエンティティは、パッチインスタンスIDの受け渡しが追加の手順であり、実行が困難な場合があるため、名前空間の衝突の影響を受けやすいです。
Pure Dataは、プロトタイピング言語やサウンドエンジンとして、多くのプロジェクトの基盤として利用されてきました。Reactable [6]と呼ばれるテーブルインターフェースや、開発中止となったiPhoneアプリRjDjは、どちらもPdをサウンドエンジンとして組み込んでいます。
Pdは、多くのオーディオデザイナーによってビデオゲームのオーディオのプロトタイピングに使用されてきました。例えば、EAPdはElectronic Arts (EA)で使用されているPdの社内バージョンです。また、EA Sporeにも組み込まれています。[ 7 ]
Pdは、Networked Resources for Collaborative Improvisation (NRCI)ライブラリにおいて、ネットワークパフォーマンスにも使用されています。[ 8 ]