Pure Data

データが流れるように、オブジェクトを線でつないでプログラムをするツールPureData。MAXは下記ブログでもとりあげてますが、商用のMAXに対してフリー版という位置付けになります。

Moving Average / Max

Max OSC

ここでとりあげたのは、データフロー型のビジュアルプログラム言語であることと、これがRaspberryPi2で動作するということで教育用に使えるということを紹介したかったからです。(あと動作確認のメモの意図も)

PureDataについて: http://puredata.info/
SDカードイメージダウンロード: https://ccrma.stanford.edu/~eberdahl/Satellite/
使い方: https://ccrma.stanford.edu/wiki/Satellite_CCRMA_First_Steps
(PureDataはインストールが難しそうだったので、イメージを使いました。user:ccrma/password:temppwd でログインしてstartxでGUIを起動します。RPi2でもバージョンの違いからか起動するものとしないものがありました。)

PureDataは主に音楽データ、音響データを扱うアプリケーションで、音の特性から時間というものをとても意識したブログラミング環境になっています。
まず、音の周波数と音のボリュームをスライダーでコントロールして音をならすプログラムです。

上のスライダーは周波数Hz、下のスライダーは生成された波形0.0から1.0の間で掛け算することでボリュームを変化させます。dacはDAコンバータでスビーカから音を鳴らします。ループになっていませんが、絶えず音がなった状態で音の高さ、ボリュームがスライダーでコントロールされます。

次はMIDIです。1000ms周期でプログラムを起動してノートオンと500ms遅れでノートオフ(ドの音:MIDIナンバー60)を繰り返します。ここは音楽プログラミングらしい部分です。ループではなく指定時間でトリガーすることで無限に繰り返します。


MIDIはUSBスロットに古いRolandのMIDI I/F UM-1をつないで送信を確認しました。

プログラムの制御構文といえばループの他に条件分岐がありますが、その例が次です。

100までのランダム数を発生させ、50より大きい場合True(1), そうでない場合False(0)になり、selectで処理を分岐しています。

今回はプログラミング言語という観点から特徴的な部分を取り出してみました。
下記で取り上げたBars&Pipesもデータフロー型になりますが、時間を意識したプログラミングにはやはり音楽が題材だと興味がわきます。

Amiga Bars&Pipes