OSCを使ったデバイス間連携
アプリケーション間で仕事を分担したり、PC間で負荷を分担する際に通信を行うことで密に連携をすることが可能になります。インスタレーションやオーディオ、映像の連携ではよくOSC(Open Sound Control)が利用されています。今回はOSCを使ってみます。サンプルファイルはこちら。
OSCとは?
OSCはローカルのソケット通信でよく使われるプロトコルです。
『ソケット通信』はルータやスイッチングハブなど、インターネットを経由しない環境下での通信を指します。
PC同士のローカル通信ではTCP/IP通信(届いたかどうか確認ができるが遅い)とUDP通信(届いたかどうかの確認はできないが早い)の2つがありますが、OSCはUDP通信のみで利用されることが殆どです。TouchDesignerでも特に指定しない場合はUDPを使ったローカル通信としてのOSCを行います。
IPアドレスとポート番号
OSCを行う場合、送り先のIPアドレスとポート番号を指定する必要があります。IPアドレスはルータによってPCなどのデバイスごとに割り振られており(一応自分で固定することも環境によってはできる)、ポート番号はアプリケーションごとに自分で指定して見に行くことができます。
IPアドレスの確認方法
MacOSの確認方法はこちら。
Windowsの確認方法はこちら。
(リンク貼る)
ポート番号の確認方法
一部企画として利用が決まっているポート番号があるので、それを指定しなければOKです。TouchDesignerではデフォルトで10000を見るようになっています。
まずはPC間で連携してみる
まずは自分のPC間で通信してみましょう。ファイルを開いてSendOSCとRecieveOSCをアクティブにしてください。
SendOSCでは青の玉が、RecieveOSCでは赤の玉が同じ動きをしていると思います。SendOSCがOsc Out CHOPを使ってMouse In CHOPのtxとtyをOSC通信で飛ばしています。IPアドレスはlocalhost(自分のIPアドレスに通信するとき、localhost、もしくは127.0.0.1と書くことができます)で、ポート番号は10000となっています。
RecieveOSC内のOSC In CHOPでポート番号を同じ10000を設定してデータを受け取っています。OSCで通信しているのでワイヤもリンクも貼られていません。
画面を2分割して表示するとより分かりやすいかと思います。
うまく行ったら今度はOSC Out CHOPに自分のIPアドレスを指定して送受信してみましょう。
自分のアプリ間で通信してみる
次はアプリを分けた状態で通信してみましょう。
今回のプロジェクトファイルをコピーして2つ用意し、どちらも起動させます。そして1つはSendOSCのみアクティブにし、1つはRecieveOSCのみアクティブにしてみましょう。正しくワークした場合、先ほどと同様に1つ目のプロジェクトのSendOSCと2つ目のプロジェクトのRecieveOSCの玉が同じ挙動をするはずです。
もしもエラーが出ている場合、ポート番号を変更してみましょう。ポートは1つにつき1つのアプリが占有するため、稀に以前のアプリケーションがポートをロックしたまま終了してしまってしばらく接続できないことがあります。
隣の人のアプリと通信してみる
次に隣の人のPCにデータを送ってみましょう。やりかたはSendOSC内のOSC Out CHOPのIPアドレスを相手のIPアドレスにし、相手のOSC In CHOPが見ているポート番号を設定するだけです。
うまくいけば自分のマウス操作で相手のPCのRecieveOSC内の赤い玉が動かせるはずです。
玉がスムーズに動かない場合、通信状況があまり良くないことが考えられます。Wifiなどの無線環境の場合、UDPで通信するとちょこちょこパケットロスト(データが相手に届かない現象)したり、値がつまったりするため、あまりスムーズにデータが受け取れない場合があります。
スマートフォンと連携してみる
IPアドレスが割り振られていればどんなデバイスでも通信可能です。今度はPC同士ではなく自分のスマートフォンと自分のPCで通信してみましょう。
スマートフォンのセンサ情報を送信する
スマートフォンにはセンサが沢山あります。そのスマートフォンのセンサーデータをOSCで送信することができるアプリがあります。
iOS版
Android版
iOSのみ他の色んなデータが取れるPRO版
これらをダウンロードして使ってみましょう。
ZIGSIMが送れるデータはこちら。
スマートフォンのタッチ情報を送信する
センサのデータではなく、スマートフォンをタッチパネルとして色々操作したい場合もあるかと思います。いくつかアプリケーションを紹介します。
CleanOSC
無料のアプリケーションです。自分でUIを追加してそこからOSCを送信することができます。
OSC Controller
Androidの無料のOSC送信アプリです(未テスト)。
TouchOSC
有料ですがめちゃくちゃ優秀で、大規模展示会でも利用されてるのを見ましたす。GUIをPCでカスタムすることができます。
無線について
今回は無線環境でテストしましたが、無線は基本的に遅延したり、データが届かなかったりします。
また、無線は周囲の環境によって条件がころころ変わってしまいます。大規模展示会などではWifiは混線して使えない場合も多いため、展示の際には有線の備えもしっかりしておきましょう。
スマートフォンもアダプタを挟むことで有線で通信することができます。