Explicitly include a boost "windows" folder even on linux
[supercollider.git] / HelpSource / Classes / OSCpathResponder.schelp
blobde84a563b9d86824f73da0c054fa312caac907c8
1 class:: OSCpathResponder
2 summary:: client side network responder
3 related:: Classes/OSCFunc, Classes/OSCdef, Guides/OSC_communication, Classes/OSCresponderNode
4 categories:: External Control>OSC
6 description::
8 note:: As of SC 3.5 link::Classes/OSCFunc:: and link::Classes/OSCdef:: are the recommended way of registering for incoming OSC messages. They are faster, safer, and have more logical argument order than the old responder classes, and they support pattern matching and custom listening ports. Use of the older classes OSCresponder, OSCresponderNode, and OSCpathResponder can be unsafe, since responders in user and class code can override each other unintentionally. They are maintained for legacy code only.::
10 Register a function to be called upon receiving a command with a specific path.
12 Other applications sending messages to SuperCollider should distinguish between sending messages to the server or the language. Server messages are documented in the link::Reference/Server-Command-Reference:: and should be sent to the server's port - code::s.addr.port:: - which is strong::57110:: by default. Messages sent to the server will not be processed by any link::Classes/OSCresponder:: in the language.
14 Messages from external clients that should be processed by OSCresponders must be sent to the language port, strong::57120:: by default. Use code::NetAddr.langPort:: to confirm which port the SuperCollider language is listening on.
16 See link::Guides/OSC_communication:: for more details.
18 subsection::Command paths
20 OSC commands sometimes include additional parameters to specify the right responder.
22 For example code::/tr:: commands, which are generated on the server by the link::Classes/SendTrig:: Ugen create an OSC packet consisting of: code:: [ /tr, nodeID, triggerID, value] ::.
23 This array actually specifies the source of value: code:: [ /tr, nodeID, triggerID] ::.
24 We will refer to that array as a command path.
26 To create an OSCpathResponder for a specific trigger, the strong::cmdName:: parameter is simply replaced by the complete command path.
28 subsection::Path defaults
30 Any element of the command path array can be set to nil to create a responder that will handle multiple command paths.
32 For example, setting the commandpath: code:: ['/tr', nil, triggerID] :: makes a responder that responds to code::/tr:: messages from any Synth but with a specific triggerID.
34 ClassMethods::
36 method::new
38 argument::addr
39 An instance of link::Classes/NetAddr::, usually obtained from your server: server-addr. An address of nil will respond to messages from anywhere.
41 argument::cmdName
42 A command path, such as ['\c_set', bus index].
44 argument::action
45 A link::Classes/Function:: that will be evaluated when a cmd of that name is received from addr. arguments: time, theResponder, message
46 note::
47 OSCresponderNode evaluates its function in the system process. In order to access the application process (e.g. for GUI access ) use { ... }.defer; within the action function, e.g., code:: { |time, resp, msg| { gui.value_(msg[3]) }.defer } ::
50 Examples::
52 code::
53 s.boot;
56         var s, commandpath, response, aSynth, nodeID, triggerID;
57         s = Server.local;
58         s.boot;
59         triggerID = 1;
60         aSynth = { arg freq = 1, triggerID = 1; SendTrig.kr(SinOsc.kr(freq), triggerID, 666); }.play;
61         nodeID = aSynth.nodeID;
62         commandpath = ['/tr', nodeID, triggerID];
63         response = { arg time, responder, message; message.postln };
65         o = OSCpathResponder(s.addr, commandpath, response);
66         o.add;
69 // switch on and off:
70 o.remove;
71 o.add;