OSC(Open Sound Control)とは簡単に言うとネットワーク経由で音楽デバイスの制御やらMIDIデータを送受信したいから、そのプロトコル(通信フォーマット)を決めたっていうものです。
通信にはUDPとかTCPを使うのが一般的だけど、ヘッダ、フッタをちゃんと決めておけば232C通信だろうがなんでもいんじゃね?っていう感じです。通信速度に関しては知りませんが。。。
が、結構前からあるのに、なぜかマニアックな音楽ソフトやハードにしか実装されてないようです(筆者がたまたま持ってないだけ?)。
規格等についてはここに書いてあります。
http://opensoundcontrol.org/spec-1_0
いろんなデータ型が送れますが、必ず32bit(4byte)毎に送る決まりがあるようです。
とにもかくにもとりあえずどんなデータが流れるんじゃい!?っていうことで簡単に通信テストをやってみました。
まずここからzipファイルをダウンロード
Open Sound Control for .NET
luvtechno.net/d/1980/02/open_sound_control_for_net_1.html
当然Visual C# 2008 Express Edition以上がインストールされているものとします。
プロジェクトを開いて”F5"を押してデバッグ開始。
一つだけではなんにもならないので一回終了してエクスプローラからプロジェクトフォルダの\bin\Debug\OSC.NET.EXEを2回立ち上げます。
一方のウィンドウはデフォルトのまま、もう一方のウィンドウの"Remoto Port"を"6600"、"Local Port"を"5500"にします。そして両方の"Connect"を押します。この辺の設定はただのTCP/IPですね。
次に"Address"欄や"Data"欄に適当な値を入れて"Send"をクリックするともう一方のウィンドウの"Receive"側にアドレスとデータが表示されます。

単純にデータ受信を見たいだけなら
http://luvtechno.net/d/1980/02/open_sound_control_3.html
のOSC-dumpを実行してデータを送りつけてやるだけで済みます。
じゃぁ実際どんなデータが流れているのかを見るのにはパケットキャプチャを使います。
普通はWireShark(Etherealが名前変わってたの知らなかった orz)を使いますがあえてMicrosoft Network Monitorを使います。Microsoftはよくリンク切れを起こしてめんどくさいのでリンクはなしで!
検索して探してください。
通常の環境なら"NM32_x86_setup.exe"をダウンロードしてインストールします
・・・ってあれ?localhost宛のパケットが表示されない!!
どうやら仕様のようです。MACじゃできたのにな。。。
ということでWindowsでやるときはパソコン2台でやりましょう。
ARPテーブルとかをいじればできるらしいですがめんどいので以上。
PR