iOSCからのOSCメッセージ

3/6のCraftwife + KURONOZ用のプログラムを作っています。複数のiPhoneからのOSCコマンドをSuperColliderで受信します。SCでは、OSCResponderを使っているのですが、どういう風に記述したら、効率的なのだろう、とずっと考えていました。

iOSC上に3つのボタンがあるとして、それぞれのボタンに別のコマンドネームを割り当てるか(iOSCのデフォルトではそうなっている)、同じコマンドネームを割り当てボタンごとに出力する値を書き換えるか。コードは後者の方が短いし、効率的かな。iOSCは、こういう自由度が素晴らしいですなぁ。

////////////////////////////////////////////////////////////////////////////
// iOSCのデフォルトコマンド名にあった記述法
~oA1 = OSCresponder(nil, “/osc/button1A”, { |t,r,msg|
case

 {msg[1] == 1} {”Abutton01_on2″.postln;}

 {msg[1] == 0} {”Abutton01_off2″.postln;}
}).add;

~oA2 = OSCresponderNode(nil, “/osc/button2A”, { |t,r,msg|
case

 {msg[1] == 1} {”Abutton02_on”.postln; }
 {msg[1] == 0} {”Abutton02_off”.postln; }
}).add;

~oA3 = OSCresponderNode(nil, “/osc/button3A”, { |t,r,msg|
case

 {msg[1] == 1} {”Abutton03_on”.postln; }

 {msg[1] == 0} {”Abutton03_off”.postln; }
}).add;

////////////////////////////////////////////////////////////////////////////
// 私の場合は、下記の様に書いた方が効率よいかな?

~oa = OSCresponderNode(nil, “/osc/deviceA”, { |t,r,msg|
case

 {msg[1] == 0} {”Abutton01_on”.postln;}

 {msg[1] == 1} {”Abutton01_off”.postln;}
 {msg[1] == 2} {”Abutton02_on”.postln; }

 {msg[1] == 3} {”Abutton02_off”.postln; }
 {msg[1] == 4} {”Abutton03_on”.postln; }

 {msg[1] == 5} {”Abutton03_off”.postln; }
}).add;

Write a comment





Get Adobe Flash playerPlugin by wpburn.com wordpress themes