OSC ( Open Sound Control ) の C++ ライブラリ oscpack を使ってみた

OSC ( Open Sound Control ) とは,PC等において音楽演奏データをネットワーク経由でリアルタイムに共有するための通信プロトコルなわけですが,それを使ってみたくなって,いろいろライブラリを探したところ,oscpack というのがよさそうとのことで,早速ダウンロードしてみました.

OSC に関する詳しい情報はgoogle先生に聞くといっぱいでてくると思います.
が,さらっと私の理解を書いておくと,

  • 基本はUDP通信

  • 送信する情報の形式は以下の様な感じ

    • /aaa/bbb/ccc 123 0.5 "へろー"

      • OSC Message: 上のアルファベットの部分ね

      • aaa を起点にした階層構造になってる

      • 受け手はこの情報を元に,どの変数なりオブジェクトに値を渡すか判断すればよい

      • 要はアドレス

    • OSC Argment: 後半の数字や文字列の部分ね

      • OSC Message で示されたアドレスに渡す値,何個でもOK (まぁ,実装次第だが)

独自の取り決めで送受信するよりも,OSC に従った方が,メンテしやすいし,他人の書いたプログラムとの連携も録りやすいってのがメリットかなぁ.

さて,こっからがoscpackについてです. oscpackには,UDP送受信,送信情報を一つにまとめるための関数,受信した情報からOSC Message や OSC Argment をパースする関数等が含まれています.
ですので,後は,送信側と受信側で OSC Message を取り決め,パース後の挙動を書けばいいわけです.

oscpack のダウンロードは oscpack のホームページから可能です.
http://www.rossbencina.com/code/oscpack
ライセンスはMITだそうです.

OSは,windows, linux, mac をサポートしているようで,私は windows7, visual studio 2010 でコンパイルしました.
vs2010 でのコンパイル方法は,ダウンロードして解凍したフォルダに含まれるREADMEに書いてあります. といっても,下記のコマンドを実行するだけ.

cmake -G "Visual Studio 10"

コマンドを実行してできた TestOscpack.sln をビルドすれば,oscpack.lib やサンプルが出来上がります.

試に,コマンドプロンプトからOSCDump.exe を起動し,vs2010のデバッグから SimpleSend を行うと,挙動が分かりやすいと思います.

OSCでは,基本的には,bool や double のデータは扱わないようになっているみたいですが,oscpackではそのあたりも扱ってくれるようです. ただし,他のライブラリが必ずしもサポートしているとは限らないため,別プログラムとの通信の際には注意が必要です. どういったデータ形式が使用できるか等は,下記のサイトを見るのがよいと思います.
http://veritas-vos-liberabit.com/trans/OSC/OSC-spec-1_0.html

ところで,OSCって数値配列とかって対応してないんでしょうか・・・? この辺,まだ調べ切れてないや・・・. ちゃうちゃう,byte[]にして送ればええんやーーーーーーー.(自己解決