SuperCollider : OsC

SuperCollider :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Bus < Index > Buffers


Open Sound Control (OSC)




envoi de message osc vers un IP

//demo
s.boot;
SynthDef(\test, {Out.ar(0, SinOsc.ar([400, 402], mul: 0.2)!2)}).send(s)

(
var n, id;

//loopback~- on peut lui substituer un autre ip
n=NetAddr("127.0.0.1", 57110);// localhost + port de scserver
id=s.nextNodeID;//affectation d'ID automatique
n.sendMsg("s_new",\test, id, 0, 0 );//création du synth
SystemClock.sched(1.0,{n.sendMsg("n_free",id); }); //envoi de message de fin
)




réception de messages OSC


(
// stockage d'une fonction à déclencher à la réception d'un message '/tr' depuis le réseau
//note: '/tr' est le message envoyé par l'UGen Sendtrig
OSCresponder(s.addr,'/tr',
{ arg time,responder,msg; //la fonction, avec arguments
"trigger !".postln;
Post << msg <<nl;
}).add

//envoi d'un message 'trig' à chaque impulsion, depuis le serveur
{SendTrig.ar(Impulse.ar(0.5))}.play;
)      


//remplacement par la réponse suivante:
(
OSCresponder(s.addr,'/tr',{ arg time,responder,msg;

"nouvelle réaction!".postln;
Post << time <<nl;

}).add
)      


OSCresponderNode

permet plusieurs réponses pour un même message

(
s = Server.local;
s.boot;
s.notify;
)

(
SynthDef("help-SendTrig",{
    SendTrig.kr(Dust.kr(1.0), 0, 0.9);
}).send(s);

// "inscription" [register] permettant la réception du message
a = OSCresponderNode(s.addr, '/tr', { arg time, responder, msg;
    "reponse de a".postln;
}).add;
b = OSCresponderNode(s.addr, '/tr', { arg time, responder, msg;
    "reponse de b".postln;
}).add;
)
(
// "inscription" [register] pour recevoir un message de trig
OSCresponderNode(s.addr,'/tr',{ arg time,responder,msg;

"trigger recu!".postln;
Post << msg <<nl;

}).add

OSCresponderNode(s.addr,'/tr',{ arg time,responder,msg;

"reaction differente!".postln;
Post << time <<nl;

}).add


//envoi d'un trig à chaque impulsion
{SendTrig.ar(Impulse.ar(0.5))}.play;
)   


//Nettoyage
//le mieux est d'affecter le responder à une variable:

x=OSCresponderNode(s.addr,'/tr',{ arg time,responder,msg;  "bang!".postln;}).add

puis

x.remove;





Voir BroadcastServer


Bus < Index > Buffers

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.1018 seconds