OSCによるPure DataとPythonの連携

Pure Data(Pd)とPythonを連携させる方法として、Open Sound Control(OSC)という通信方法を試しました。これによりRaspberrry Pi(RPi)上でPdから間接的にGPIOを操作し、スイッチやLED等を扱うことができるようになります。もちろん別のコンピュータとの通信を行うといったことも可能です。



Python側の準備として、pylibloを導入します。python-oscというものもあるようですが、試していません。
$ sudo apt-get install python-liblo
参考ページ→pylibloを使ってOSCメッセージを扱う
Pd側はversion 0.46以降であればOSC用オブジェクト[oscformat][oscparse]が使えます。

▽テストプログラム
py_osc.py
#!/usr/bin/env python
# coding:utf-8

import liblo

server = liblo.Server(8000)
target = liblo.Address("127.0.0.1",8001)

def callback(path, args, types, src):
print "py got msg from pd:", args[0]

server.add_method("/msg_from_pd","f", callback)
liblo.send(target,"/msg_to_pd", 4558)
server.recv(1)

pd_osc.pd
03p_218_1osc.png

先にバックグラウンドでPdパッチを実行した後、Pythonプログラムを実行します。
$ pd pd_osc.pd &
$ python py_osc.py
通信に成功すれば、以下のメッセージが表示されるはずです。
pd_got_msg_from_py: 4558
py got msg from pd: 4558.0

Pythonプラグラムから送信された4558という数値をPdが受け取り、Pdから同じ数値が送信されてPythonが受け取ります。pylibloのExample Codeや[oscformat][oscparse]のヘルプを簡略化したものなので、特に難しいところはないでしょう。



Pdでスイッチ類を扱う他の方法についてメモしておきます。

・pdsend、pdreceiveコマンド
  pdsendは今まで使っていました。pdreceiveの方は詳細不明で通信成功に至りませんでした。
・Pduino
  別途Arduinoが必要で、検証していません。
Pd-wiringPi(Pd外部オブジェクト)
  Pdの実行にsudoが必要になります。GPIOの入力待ちがやりにくそうでしたが、使えないことはないと思います。
py/pyext(Pd外部オブジェクト)
  Pdでpythonプログラムを動かします。導入が難しく、RPiではコンパイルが必要なようです。

タグ : PureData 

コメントの投稿

非公開コメント

管理人

管理人

自己紹介のページ
記事一覧
Twitter
GitHub

ブログ内検索
カテゴリー
タグ

自作エフェクター   レイアウト   回路図   歪み   PureData   周波数特性   波形・倍音   マイコン   RaspberryPi   エレキギター   アンプ   エフェクター自作方法   歪率   エレキベース   真空管   コーラス   ピックアップ   静音ギター   ヘッドフォンアンプ   擬似ギター出力   市販エフェクター   アコースティックギター   ブースター   コンデンサ   ソロギター   ポールピース   イコライザー   コンプレッサー   ビブラート   フェイザー   トレモロ   TAB譜   ディレイ   DIY_Layout_Creator   ワウ   オートワウ   バッファー   

最近の記事
最新コメント
Twitter
RSS
メールフォーム
当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター