こんにちは。Raspberry Piでインタラクティブアート的なものとかを作るときに、ラズパイからインタラクティブに音を出したいときがありますよね。ここではMaxがArmで動けよ!っていう気持ちを抑えながらサクッと音を出す方法について書いていきます。
結論 - 2022年4月30日追記
本家のPd Valinaをaptでインストールしてnetsendやnetreceiveオブジェクト使ってもできましたね。Pd-L2okが不安定な時があるのでそっちを使うのが安定かもしれません。
$ sudo apt install puredata
purr-data+ I2S DACではうまく動作しませんでした
以下は過去版
環境
- Raspberry Pi 2
- Raspberry Pi OS Buster Lite
- macOS 10.14.6
願望
- OSCで音をぐりぐりしたい。
- あんまり複雑なインストールをしたくない。
- 開発は母艦コンピュータでやって、ラズパイはシンプルにCLIだけにしたい。つまり母艦で動いたファイルをアップロードするだけで済ませたい。
- pd-extendedが動いたら最高だったし、puredata(vanilla)にOSCが純正で入っていてほしい。
Purr-Data
上記のような欲求をお持ちのあなた!Purr-Dataがおそらく最速です。もうご存知でしたらすいません。以下がインストールの方法です。MacでもWin(未確認)でも動くのでデバッグも簡単です。
##インストール方法
Purr-Dataはヴァージニア工科大学でIvica Bukvic氏によって開発されたPd-L2Orkが元になっており、Pd-L2Orkのバージョン2.0からPurr Dataと言う名前になったそうです。実際macOS版をインストールするとPd-l2ork.appという名前でインストールされます。言うなれば開発が止まってしまったpd-extendedの現代版というところでしょう。
ラズパイには以下のコマンドでインストールできます。
$ sudo su
# wget -nv https://download.opensuse.org/repositories/home:aggraef/Raspbian_10/Release.key
# apt-key add Release.key
# echo 'deb http://download.opensuse.org/repositories/home:/aggraef/Raspbian_10/ /' > /etc/apt/sources.list.d/home:aggraef.list
# apt update
# apt install purr-data
コードを書く
基本的にPureData/pd-extendedと同じだと思います。cycle~ではなくosc~だったり色々Maxとは名前が違いますね、同じものもありますが。
実行コマンド
おそらくCLI環境でやっていると思うので、実行コマンドは
$ purr-data -nogui youramazingfile.pd
でできます。youramazingfileはあなたが作ったファイルの名前です。
USB-DACとかを使いたい場合は
$ purr-data -nogui -alsa -audiodev 5 youramazingfile.pd
のように、-audiodev Xの形でオーディオデバイスを指定してあげると良さそうです。なお、purr-data -listdev -noguiでデバイス一覧が取得できるのでいい感じにXを指定して上げてください。
OSCをつかう
基本的に上図のとおりですが、まずimport mrpeachをするのがUDPの通信をするために必要です。また、受信した生のOSCメッセージをリストに変換するためにunpackOSC, リストをOSCメッセージに変換するためにpackOSCが必要です。udpsendはメッセージを送る前にconnectしないといけないので、loadbangなどで起動時に設定しておくと良いでしょう。
するとできること
PythonなどでGPIOの値をとってOSCでPurr-Dataに送ったり、母艦から制御してマルチチャンネルリアルタイムオーディオ処理をしたり、色々なことができそうですね。
他の方法(失敗)
-
pd-extendedを使う
情報がwheezyの頃のばかり + pd-extendedの開発も2013年に終わっていて流石に古すぎるのでは...という不安とともにこちらのチュートリアルをやってみましたが案の定依存関係がサクッといかなかったので諦めました。 -
普通にPureData + mrpeachをインストール/コンパイルする
ラズパイではコンパイルができたのですがmacOS Mojaveにサクッと入らず失敗。Makefileとかがもっとわかればできるのかもしれません。 -
openFrameworksをつかう
oFの音周りのライブラリを使うという手もありそうです。Purr-Dataが動いたので試していません。
おわりに
openFrameworksやPythonを使う方法もあるとは思いますがやっぱりMax/Pd的なやりかたはオーディオ特化な感じがしていいですよね。そもそも皆さんはどうやってやっているのかも気になっているので、他の方法などで動かした方がいらっしゃいましたらぜひコメントをいただければ幸いです。