3
3

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.

Raspberry PiでOSCと音

Last updated at Posted at 2020-07-16

こんにちは。Raspberry Piでインタラクティブアート的なものとかを作るときに、ラズパイからインタラクティブに音を出したいときがありますよね。ここではMaxがArmで動けよ!っていう気持ちを抑えながらサクッと音を出す方法について書いていきます。

結論 - 2022年4月30日追記

本家のPd Valinaをaptでインストールしてnetsendnetreceiveオブジェクト使ってもできましたね。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をつかう

image.jpeg

基本的に上図のとおりですが、まずimport mrpeachをするのがUDPの通信をするために必要です。また、受信した生のOSCメッセージをリストに変換するためにunpackOSC, リストをOSCメッセージに変換するためにpackOSCが必要です。udpsendはメッセージを送る前にconnectしないといけないので、loadbangなどで起動時に設定しておくと良いでしょう。

するとできること

PythonなどでGPIOの値をとってOSCでPurr-Dataに送ったり、母艦から制御してマルチチャンネルリアルタイムオーディオ処理をしたり、色々なことができそうですね。

他の方法(失敗)

  1. pd-extendedを使う
    情報がwheezyの頃のばかり + pd-extendedの開発も2013年に終わっていて流石に古すぎるのでは...という不安とともにこちらのチュートリアルをやってみましたが案の定依存関係がサクッといかなかったので諦めました。

  2. 普通にPureData + mrpeachをインストール/コンパイルする
    ラズパイではコンパイルができたのですがmacOS Mojaveにサクッと入らず失敗。Makefileとかがもっとわかればできるのかもしれません。

  3. openFrameworksをつかう
    oFの音周りのライブラリを使うという手もありそうです。Purr-Dataが動いたので試していません。

おわりに

openFrameworksやPythonを使う方法もあるとは思いますがやっぱりMax/Pd的なやりかたはオーディオ特化な感じがしていいですよね。そもそも皆さんはどうやってやっているのかも気になっているので、他の方法などで動かした方がいらっしゃいましたらぜひコメントをいただければ幸いです。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?