[SuperCollider] DMX制御について

- 2013-08-06

需要があるか分からないが、SuperColliderでDMX制御についてメモ。

インターフェースとしては ENTTEC USB Proがメジャーな様。 SuperColliderではExtensionでquarksに dmxというのが存在する。結局はSerialPortでパケット整形してあげてるようだ。

 

これでサクっとできると思ったのだが、DMX512を送るのに baud rate 57600で、シリアルパケットが詰まるので結局oscを受けてシリアルパケットを整形する部分をPythonでする事にした。

https://github.com/c0z3n/pySimpleDMX この辺りのコードが参考になった。

 

OSCを送る際にfloatやIntegerの列でパケットを作ってしまうと、型認識のパケットがいちいち入ってしまい効率が悪いので、 512ch分のInt8Arrayを作ってあげてパケットを作るとblob形式になる。

 

これはSuperColliderの.sendMsgメソッドの仕様で例えば以下のようにする。NetAddr("localhost", 3000).sendMsg("/example_blob", Int8Array[0,1,2]); とblob型でOSCを送信する。

 

今回は一つの灯体にrgb 3ch分で使い色の表現を行い、またenttecへの送りのserial usbのビット深度は8bit intだったので、 この方式は使えた。

 

また、グラデーション表現やOSCの送りでfadeアニメーションするようなDMX.scライブラリの拡張カテゴリなども今回用意した。

https://github.com/moxuse/korogaru-pavilion/blob/master/lib/class/DMXPlus.sc