需要があるか分からないが、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