cmake: supernova - missing include_directories() for Jack
[supercollider.git] / Help / Core / Kernel / Main.html
blobf818a4551d4b21cf23213ae5ae1567f137046097
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta http-equiv="Content-Style-Type" content="text/css">
6 <title></title>
7 <meta name="Generator" content="Cocoa HTML Writer">
8 <meta name="CocoaVersion" content="1038.32">
9 <style type="text/css">
10 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
11 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
12 p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
13 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a41c14}
14 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #a41c14; min-height: 14.0px}
15 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
16 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0018b8}
17 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
18 p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
19 p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
20 span.s1 {color: #000000}
21 span.s2 {color: #0018b8}
22 span.s3 {color: #4d4d4d}
23 span.s4 {font: 12.0px Helvetica}
24 span.s5 {color: #606060}
25 span.s6 {color: #356f14}
26 span.s7 {font: 10.0px Monaco; color: #a41c14}
27 span.Apple-tab-span {white-space:pre}
28 </style>
29 </head>
30 <body>
31 <p class="p1"><b>Main</b></p>
32 <p class="p2"><br></p>
33 <p class="p3"><b>superclass: Process</b></p>
34 <p class="p2"><br></p>
35 <p class="p3">Main is the concrete instance of Process (the runtime environment for the virtual machine and interpreter).</p>
36 <p class="p3">Main overrides some methods of Process. There are two methods of interest. One is named <b>startup</b> and is<span class="Apple-converted-space"> </span></p>
37 <p class="p3">called after the class library has been compiled. The other is called <b>shutdown</b> which gets called when the library gets re-compiled.</p>
38 <p class="p2"><br></p>
39 <p class="p3">The singleton instance of Main is available through the special keyword <b>thisProcess</b>.<span class="Apple-converted-space"> </span></p>
40 <p class="p3">For example, to find out what platform you're on:</p>
41 <p class="p2"><br></p>
42 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span><span class="s2">thisProcess</span><span class="s1">.platform;<span class="Apple-tab-span"> </span></span>// --&gt; e.g. "an OSXPlatform", "a LinuxPlatform", ...</p>
43 <p class="p5"><br></p>
44 <p class="p2"><br></p>
45 <p class="p3"><b>startup</b></p>
46 <p class="p2"><br></p>
47 <p class="p3">called after the class library has been compiled. This calls the superclass' <b>startup</b>, which among other things initializes the <a href="../../Scheduling/AppClock.html"><span class="s2">AppClock</span></a> and the top-level <a href="../../Collections/Environment.html"><span class="s2">Environment</span></a>. Main's <b>startup</b> then stores <b>Server.default</b> in the interpreter variable <b>s</b>, sets the platform default's <a href="../../GUI/GUI-Tools/GUI.html"><span class="s2">GUI</span></a> kit, initializes the <a href="../../Control/GeneralHID.html"><span class="s2">GeneralHID</span></a> system, calls a <a href="../../Platform/Platform.html"><span class="s2">Platform</span></a> specific <b>startup</b> method (for example <b>OSXPlatform</b>'s startup opens the server windows), and finally invokes <b>StartUp.run.</b> To add your own startup functionalities, you could either edit the special startup-file (discussed in <a href="../../Extending and Customizing SC/Using-the-Startup-File.html"><span class="s2">Using-the-Startup-File</span></a>), or use <b>StartUp.add</b> as discussed in the <a href="../../Control/StartUp.html"><span class="s2">StartUp</span></a> help file.</p>
48 <p class="p2"><br></p>
49 <p class="p2"><br></p>
50 <p class="p3"><b>shutdown</b></p>
51 <p class="p2"><br></p>
52 <p class="p3">called after SuperCollider is quit or the class library is about to be re-compiled. This will quit all audio <a href="../../ServerArchitecture/Server.html"><span class="s2">Server</span></a> instances, perform a platform specific shutdown (e.g. on Mac OS X, the HID service is released), finally Process' <b>shutdown</b> method is called, resulting successive calls to <b>UI.shutdown</b>, <a href="../../Control/NetAddr.html"><span class="s2">NetAddr</span></a><b>.disconnectAll</b>, <a href="../../Files/File.html"><span class="s2">File</span></a><b>.closeAll</b>, and <b>Archive.write</b>. To register your own shutdown code, use a call like this:</p>
53 <p class="p2"><br></p>
54 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">UI</span>.registerForShutdown({ <span class="s3">"Good bye!!"</span>.postln });</p>
55 <p class="p2"><br></p>
56 <p class="p3"><b>sleep / wake</b></p>
57 <p class="p2"><br></p>
58 <p class="p3"><b>sleepAction</b> and <b>wakeAction</b> are called when the computer was set in sleep mode / awoke from sleep mode.</p>
59 <p class="p3">(currently OS X only)</p>
60 <p class="p2"><span class="Apple-tab-span"> </span></p>
61 <p class="p6"><span class="s4"><span class="Apple-tab-span"> </span></span><span class="s2">thisProcess</span>.sleepAction =<span class="Apple-converted-space">  </span>{ <span class="s5">"good night,"</span>.postln };</p>
62 <p class="p2"><br></p>
63 <p class="p3"><b>isSleeping</b></p>
64 <p class="p3">returns true if computer was just set to sleep. (currently OS X only)</p>
65 <p class="p2"><span class="Apple-tab-span"> </span></p>
66 <p class="p6"><span class="s4"><span class="Apple-tab-span"> </span></span><span class="s2">thisProcess</span>.isSleeping;</p>
67 <p class="p2"><br></p>
68 <p class="p3"><b>run</b></p>
69 <p class="p2"><br></p>
70 <p class="p3">Override this to do whatever you want, e. g. add a class extension file like this to the class library:</p>
71 <p class="p2"><br></p>
72 <p class="p6"><span class="Apple-tab-span"> </span>+ <span class="s2">Main</span> {</p>
73 <p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>run { <span class="s3">"myPatch.rtf"</span>.load }</p>
74 <p class="p6"><span class="Apple-tab-span"> </span>}</p>
75 <p class="p2"><br></p>
76 <p class="p2"><br></p>
77 <p class="p3"><b>recvOSCfunc</b></p>
78 <p class="p2"><br></p>
79 <p class="p3">You can store a custom function in this field that gets called whenever SuperCollider language (the client) receives an OSC message. That is very useful for debugging OSC-communication with other applications (e.g. Processing, Pure Data, but also the scsynth server).</p>
80 <p class="p2"><br></p>
81 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span>// post all incoming traffic except the server status messages</p>
82 <p class="p6"><span class="Apple-tab-span"> </span>(</p>
83 <p class="p7"><span class="s1"><span class="Apple-tab-span"> </span></span>thisProcess<span class="s1">.recvOSCfunc = { </span>|time, replyAddr, msg|<span class="s1"><span class="Apple-converted-space"> </span></span></p>
84 <p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if(msg[0] != <span class="s6">'/status.reply'</span>) {</p>
85 <p class="p8"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>"At time %s received message % from %\n"<span class="s1">.postf( time, msg, replyAddr )</span></p>
86 <p class="p6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>} <span class="Apple-converted-space"> </span></p>
87 <p class="p6"><span class="Apple-tab-span"> </span>}</p>
88 <p class="p6"><span class="Apple-tab-span"> </span>);</p>
89 <p class="p9"><span class="Apple-tab-span"> </span></p>
90 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span>// stop posting.</p>
91 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">thisProcess</span>.recvOSCfunc = <span class="s2">nil</span>;</p>
92 <p class="p10"><br></p>
93 <p class="p10"><br></p>
94 <p class="p3"><b>pid</b></p>
95 <p class="p2"><br></p>
96 <p class="p3">Returns the operating system's <i>pid</i> (process ID) for the process.</p>
97 <p class="p2"><br></p>
98 <p class="p7"><span class="s1"><span class="Apple-tab-span"> </span></span>thisProcess<span class="s1">.pid</span></p>
99 <p class="p2"><br></p>
100 <p class="p2"><br></p>
101 <p class="p3"><b>&lt;&gt;preferencesAction</b> - OSX SC.app only.</p>
102 <p class="p2"><br></p>
103 <p class="p3">A function to evaluate when the SuperCollider preferences menu is selected.</p>
104 <p class="p2"><br></p>
105 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">thisProcess</span>.preferencesAction = { <span class="s2">arg</span> process; <span class="s2">SCWindow</span>.new.front; }</p>
106 <p class="p2"><br></p>
107 <p class="p10"><br></p>
108 <p class="p10"><br></p>
109 <p class="p3"><b>*version, *versionAtLeast, *versionAtMost</b></p>
110 <p class="p2"><br></p>
111 <p class="p3">These class methods tell you which version of SuperCollider you are running and whether that version complies to your required minimum / maximum settings:</p>
112 <p class="p2"><br></p>
113 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span>// the current version as a human readable string</p>
114 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">Main</span>.version;<span class="Apple-tab-span"> </span></p>
115 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span>// check if we are running at least version 3.1 (returns true or false)</p>
116 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">Main</span>.versionAtLeast( 3, 1 );</p>
117 <p class="p4"><span class="s1"><span class="Apple-tab-span"> </span></span>// check if we are running version 3.1 or older (returns true or false)<span class="s1"><span class="Apple-tab-span"> </span></span></p>
118 <p class="p6"><span class="Apple-tab-span"> </span><span class="s2">Main</span>.versionAtMost( 3, 1 );<span class="s7"><span class="Apple-tab-span"> </span></span></p>
119 <p class="p5"><br></p>
120 <p class="p5"><br></p>
121 <p class="p3"><b>recompile</b></p>
122 <p class="p2"><br></p>
123 <p class="p3">Recompiles the class library. This is equivalent to restarting SC. Currently OSX (SuperCollider.app) only.</p>
124 </body>
125 </html>