17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

オーディオプログラミング言語Advent Calendar 2020

Day 1

Pure Dataによるオーディオプログラミング例

Last updated at Posted at 2020-11-30

Pure Data

オーディオプログラミング言語 Advent Calendar 2020

概要

マルチメディア用のオープンソースのビジュアルプログラミング言語。

作者はMaxの開発者でもあるMiller Puckette(カリフォルニア大学サンディエゴ校)。

元MITメディアラボのMiller Pucketteは1980年代のIRCAM在籍時にMaxの前身となるThe Patcherを開発。Maxは1990年にライセンス供与されたOpcode社より販売される。カリフォルニア大移籍後の1996年あらたに再設計した言語としてPure Dataをリリース。

実装例

サイン波生成

特に説明は必要ないくらいシンプルです。

sine.png

Delayエフェクト

wavファイル再生はreadsf~にopenメッセージを送ります。ディレイはdelwrite~でバッファ書き込み、delread~でバッファ読み込み。*~で音量調整、+~でミックス。

delay.png

感想

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にも対応し使いやすさも向上し続けています。

長年揉まれてきただけあり、完成度の高い現役の言語だと思います。

オーディオプログラミング言語 Advent Calendar 2020

17
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?