FlashとCinderでOSC通信してみた
こんばんは。muchoです。
今日はほかの会社の方とランチしながら情報交換しました。
やっぱりSublime Text 2アツいですよね。
coffee scriptやらねばー。
お忙しい中ありがとうございました。
また情報交換とか勉強会とかお花見とかやりましょう。
が、しかしブログネタはFlash+Cinderです。
前回のOSC通信に続き、AIRとCinderで連携させてみました。
http://bubblebird.at/tuioflash/で提供されているライブラリを使いました。TUIOプロトコル用のライブラリですが、OSCプロトコルのライブラリが同梱されています。
今回は送信側をAIRアプリ、受信側をCinderにしてテストしました。
受信側のCinderは前回の記事と同じです。
[code lang="as3"] package { import flash.display.Sprite; import flash.events.MouseEvent; import org.tuio.connectors.UDPConnector; import org.tuio.osc.OSCManager; import org.tuio.osc.OSCMessage; public class Main extends Sprite { private var prefix:String = "/devjam_osc"; private var oscManager:OSCManager; public function Main():void { oscManager = new OSCManager(null, new UDPConnector("127.0.0.1", 3000, false)); stage.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { // とりあえずこれだけ・・・ sendArgument("fullscreen", 1, "i"); } private function sendArgument(address:String, value:*, type:String = "f"):void { /* * type * s:A string * i:An integer * f:A float */ var msg:OSCMessage = new OSCMessage(); msg.address = prefix + "/" + address; //アドレスと msg.addArgument(type, value); //形式と値を入れて oscManager.sendOSCPacket(msg); //送信!なんてシンプル } } } [/code]
cinder側に入ってたOSCライブラリでは、データ形式にString,Interger,Float
の3種類しかやり取りできないようなことが書いてありましたが、Tuio as3 libraryだと
もっとたくさんの形式に対応してるようです。Cinder側にもTUIOライブラリがあったので、
そっちを使うといろんなデータのやり取りができるかも?
s A string
i An integer
f A float
b A blob / ByteArray
t An OSCTimetag
d A double
c An ascii character
r A RGBA color
T A boolean true. You don’t have to specify a value for this type.
F A boolean false. You don’t have to specify a value for this type.
N A null value. You don’t have to specify a value for this type.
I Infinity. You don’t have to specify a value for this type.
また、私が作ったサンプルだと1データで送信してますが、まとめて送信もできるようです。
[code lang="as3"] var myBundle:OSCBundle = new OSCBundle(); myBundle.addPacket(myMsg); //OSCMessage myBundle.addPacket(myMsg2); //OSCMessage [...] oscManager.sendOSCPacket(myBundle); [/code]
以上、OSC通信のテストでした!