OSCpathResponder client side responder


superclass: OSCresponder


Register a function to be called upon receiving a  command with a specific path.


*new(addr,cmdName,action);

addr

an instance of NetAddr, usually obtained from your server:  server-addr

an address of nil will respond to messages from anywhere.

cmdName

a command path, such as ['\c_set', bus index]

action 

a function that will be evaluated when a cmd of that name is received from addr.

args: time, theResponder, message

note that OSCresponderNode evaluates its function in the system process.

in order to access the application process (e.g. for GUI access ) use { ... }.defer;


Command paths


OSC commands sometimes include additional parameters to specify the right responder. 


For example  /tr commands, which are generated  on the server by the SendTrig Ugen create

an OSC packet consisting of: [ /tr,  nodeID, triggerID, value]

This array actually specifies the source of value : [ /tr, nodeID, triggerID].

We will refer to that array as a command path.

 

To create an OSCpathResponder for a specific trigger, the cmdName parameter is simply replaced by 

the complete command path.  


Path defaults


Any element of the command path array can be set to nil to create a responder that will 

handle multiple command paths.


For example, setting the commandpath = ['/tr', nil, triggerID]  makes a responder that 

responds to /tr messages from any Synth but with a specific triggerID.

/tr messages from one Synth but with any triggerID.




//Here is an example:


s.boot;


(

var s, commandpath, response, aSynth, nodeID, triggerID;

s = Server.local;

s.boot;

triggerID = 1;

aSynth = { arg freq = 1, triggerID = 1; SendTrig.kr(SinOsc.kr(freq), triggerID, 666); }.play;

nodeID = aSynth.nodeID;

commandpath = ['/tr', nodeID, triggerID];

response = { arg time, responder, message; message.postln };


o = OSCpathResponder(s.addr, commandpath, response);

o.add;


)


// switch on and off:

o.remove;

o.add;



Buffer-getn