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