OSCをjavascriptから贈りたい時に。

JavaScriptからMax/MSP, Ableton Live, SuperColliderなどなどの連携で
OSCを使いたいときもきっとあるかと思います。いつかまた自分でも使うと思うのでメモです。

すでにライブラリもあったのですが。
send("/address_a/address_b" ["thevalue", 1, 2, 3]);
のようなAPIが多く、そこそこの量を送るんだったら構造化したobjectを直接送ったほうがいいだろうなーと思ったので作りました。

コマンドラインの使い方は

#  websocket_osc_bridge.py websocket_port osc_port
websocket_osc_bridge.py 7776 7777

JS側ではobjectをjsonにして送る

var websocket = new WebSocket("ws://localhost:7776");

var msg = {
  test : [123,456],
  aaa : {
    bbb : 'boo',
    ccc : 'bar'
  },
  list: [
    {
      ddd : 1,
      eee : 2
    },
    {
      ddd : 3,
      eee : 4
    }
  ]
};
websocket.send(JSON.stringify(msg));

それでこんな感じにOSC受け取れます。

> /test [123,456]
> /aaa/bbb ['boo']
> /aaa/ccc ['bar']
> /list/ddd [1]
> /list/eee [2]
> /list/ddd [3]
> /list/eee [4]

その他のライブラリとかはこちらに。 WebSocket to OSC bridge