Include a header file required for build on mac 10.4
[supercollider.git] / Help / Libraries / JITLib / JITLib.html
blob1aeaea64fa5ad2ab117a9daa6a73c954c3286636
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.29">
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: 11.0px Helvetica}
13 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
14 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
15 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #737373}
16 p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; min-height: 18.0px}
17 p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ee}
18 p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #2b30fa}
19 p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #8e8a7e; min-height: 12.0px}
20 span.s1 {font: 3.0px Helvetica}
21 span.s2 {color: #416bbd}
22 span.s3 {text-decoration: underline ; color: #0041d4}
23 span.s4 {color: #0047e4}
24 span.s5 {color: #000000}
25 span.s6 {color: #6378a5}
26 span.s7 {font: 11.0px Georgia}
27 span.s8 {font: 12.0px Helvetica; color: #6378a5}
28 span.s9 {font: 12.0px Helvetica; text-decoration: underline}
29 span.s10 {text-decoration: underline ; color: #0000ee}
30 span.s11 {color: #476db9}
31 span.s12 {color: #3465c5}
32 span.s13 {text-decoration: underline ; color: #4266ac}
33 span.s14 {color: #255ece}
34 span.s15 {color: #2b30fa}
35 span.s16 {text-decoration: underline ; color: #3d64af}
36 span.s17 {text-decoration: underline ; color: #2b30fa}
37 span.s18 {text-decoration: underline}
38 span.s19 {color: #4266ac}
39 span.s20 {color: #1d59d3}
40 span.s21 {color: #1454d8}
41 span.s22 {color: #0024f8}
42 span.Apple-tab-span {white-space:pre}
43 </style>
44 </head>
45 <body>
46 <p class="p1"><b>Just In Time Programming</b></p>
47 <p class="p2"><br></p>
48 <p class="p3"><i>"Passenger to taxtidriver: take me to number 37. I'll give you the street name when we are there."<span class="Apple-converted-space"> </span></i></p>
49 <p class="p3"><i><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(an austrian math teacher's joke)</i></p>
50 <p class="p2"><br></p>
51 <p class="p2"><br></p>
52 <p class="p4">Disclaimer: there is no time, really; punctuality is your personal responsibility though.</p>
53 <p class="p2"><br></p>
54 <p class="p2"><br></p>
55 <p class="p4"><i>Just in time programming</i> (or: <i>conversational programming, live coding</i><span class="s1"><i><sup>1</sup></i></span><i>, on-the fly-programming, interactive programming</i>) is a paradigm that includes the programming activity itself in the program's operation. This means a program is not taken as a tool that is made first, then to be productive, but a dynamic construction process of description and conversation – writing code thus becoming a closer part of musical or experimental practice. SuperCollider, being a dynamic programming language, provides several possibilities for modification of a running program - this library attempts to extend, simplify and develop them, mainly by providing abstract placeholders<i> (</i><b><i>proxies</i></b><i>)</i> that can be modified and used in calculations while playing. There is some specific networking classes which are made to simplify the distribution of<span class="Apple-converted-space">  </span>live coding activity.</p>
56 <p class="p2"><br></p>
57 <p class="p4">JITLib simplifies and unifies some orthogonal aspects of SuperCollider.<span class="Apple-converted-space"> </span></p>
58 <p class="p4">It consists of a number of <b><i>placeholders</i></b> (server side and client side) and <b><i>schemes of access</i></b>.</p>
59 <p class="p4">These two aspects of space corresponding to <i>inclusion</i> and <i>reference,</i> depend on their context - here the placeholders are like roles which have a certain behaviour and can be fulfilled by certain objects.</p>
60 <p class="p4">It is useful to be aware of the three aspects of such a placeholder: a certain set of elements can be their <b>source</b>, they can be used in a set of <b>contexts</b> and have a default source, if none is given.</p>
61 <p class="p2"><br></p>
62 <p class="p2"><br></p>
63 <p class="p4">Frequently used classes:</p>
64 <p class="p4"><span class="s2"><span class="Apple-tab-span"> </span><a href="Patterns/Tdef.html"><span class="s3">Tdef</span></a></span> (for tasks), <a href="environments/ProxySpace.html"><span class="s2">ProxySpace</span></a><span class="s2">, <a href="nodeproxy/NodeProxy.html"><span class="s4">NodeProxy</span></a></span> and <a href="nodeproxy/Ndef.html"><span class="s2">Ndef</span></a> (for synths), <a href="Patterns/Pdef.html"><span class="s2">Pdef</span></a> and <a href="Patterns/Pdefn.html"><span class="s2">Pdefn</span></a> (for patterns).</p>
65 <p class="p2"><br></p>
66 <p class="p2"><br></p>
67 <p class="p5"><br></p>
68 <p class="p4">For additional functionality, see also <b>JITLib extensions</b> <b>Quark</b>. To install it, evaluate:</p>
69 <p class="p6">"JITLib extensions"<span class="s5">.include;</span></p>
70 <p class="p2"><br></p>
71 <p class="p2"><br></p>
72 <p class="p4"><b>Tutorial: Interactive Programming with SuperCollider and jitlib</b></p>
73 <p class="p7"><br></p>
74 <p class="p4">This tutorial focusses on some basic concepts used in JITLib. There are many possibilities,</p>
75 <p class="p4">such as server messaging and pattern proxies which are not covered in tutorial form presently.</p>
76 <p class="p2"><br></p>
77 <p class="p2"><br></p>
78 <p class="p4">content:</p>
79 <p class="p2"><br></p>
80 <p class="p4"><span class="Apple-tab-span"> </span><b>placeholders in sc</b> <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="tutorials/jitlib_basic_concepts_01.html"><span class="s6">jitlib_basic_concepts_01</span></a></p>
81 <p class="p4"><span class="Apple-tab-span"> </span><b>referencing and environments</b> <span class="Apple-tab-span"> </span><a href="tutorials/jitlib_basic_concepts_02.html"><span class="s6">jitlib_basic_concepts_02</span></a></p>
82 <p class="p4"><span class="Apple-tab-span"> </span><b>internal structure of node proxy</b><span class="s7"><b> <span class="Apple-tab-span"> </span></b><a href="tutorials/jitlib_basic_concepts_03.html"><span class="s8">jitlib_basic_concepts_03</span></a></span></p>
83 <p class="p4"><span class="Apple-tab-span"> </span><b>timing in node proxy</b> <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="tutorials/jitlib_basic_concepts_04.html"><span class="s6">jitlib_basic_concepts_04</span></a></p>
84 <p class="p2"><br></p>
85 <p class="p2"><br></p>
86 <p class="p2"><br></p>
87 <p class="p2"><br></p>
88 <p class="p4"><b>Overview of the different classes and techniques:</b></p>
89 <p class="p2"><br></p>
90 <p class="p2"><br></p>
91 <p class="p4">• One way or style of access is the<b> <i>'def' </i>classes </b>(Pdef, Ndef etc.)</p>
92 <p class="p4"><span class="Apple-tab-span"> </span>it binds a symbol to an object in a specific way:</p>
93 <p class="p4"><span class="Apple-tab-span"> </span><b>Pdef(\name)</b> returns the proxy</p>
94 <p class="p4"><span class="Apple-tab-span"> </span><b>Pdef(\name, object)</b> sets the source and returns the proxy.</p>
95 <p class="p4"><span class="Apple-tab-span"> </span>the rest of the behaviour depends on its use.</p>
96 <p class="p2"><span class="Apple-tab-span"> </span></p>
97 <p class="p8"><span class="s5"><span class="Apple-tab-span"> </span>client side: <span class="Apple-tab-span"> </span><a href="Patterns/Pdef.html"><span class="s9">Pdef</span></a>, <a href="Patterns/Pdefn.html"><span class="s9">Pdefn</span></a>, <a href="Patterns/Tdef.html"><span class="s9">Tdef</span></a>, <a href="Patterns/Pbindef.html"><span class="s9">Pbindef</span></a>, <a href="Patterns/Psym.html"><span class="s9">Psym</span></a>, <a href="Patterns/Pnsym.html"><span class="s9">Pnsym</span></a>, <a href="Patterns/Fdef.html"><span class="s9">Fdef</span></a></span></p>
98 <p class="p4"><span class="Apple-tab-span"> </span>server side: <span class="Apple-tab-span"> </span><a href="nodeproxy/Ndef.html"><span class="s6">Ndef</span></a></p>
99 <p class="p2"><b><span class="Apple-tab-span"> </span></b></p>
100 <p class="p4">• Another way, for server side NodeProxies, is an <b><i>environment</i></b> that returns placeholders on demand:</p>
101 <p class="p4"><span class="Apple-tab-span"> </span>ProxySpace.push</p>
102 <p class="p4"><span class="Apple-tab-span"> </span>~out = { ...}</p>
103 <p class="p4"><span class="Apple-tab-span"> </span>helpfile: <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="environments/ProxySpace.html"><span class="s6">ProxySpace</span></a><b> </b>for the use together with other environments, see <a href="tutorials/jitlib_basic_concepts_02.html"><span class="s6">jitlib_basic_concepts_02</span></a></p>
104 <p class="p2"><b><span class="Apple-tab-span"> </span></b></p>
105 <p class="p4">• There is also direct access <b><i>without</i> using the access schemes</b>: NodeProxy, TaskProxy etc. provide it.</p>
106 <p class="p4"><span class="Apple-tab-span"> </span>internally the former use these as base classes.</p>
107 <p class="p2"><br></p>
108 <p class="p8"><span class="s5"><span class="Apple-tab-span"> </span>client side: <span class="Apple-tab-span"> </span><a href="Patterns/PatternProxy.html"><span class="s9">PatternProxy</span></a><b>, </b><a href="Patterns/EventPatternProxy.html"><span class="s9">EventPatternProxy</span></a>, <a href="Patterns/TaskProxy.html"><span class="s9">TaskProxy</span></a>, <a href="Patterns/PbindProxy.html"><span class="s9">PbindProxy</span></a><b>, </b><a href="Patterns/Pdict.html"><span class="s9">Pdict</span></a></span></p>
109 <p class="p4"><span class="Apple-tab-span"> </span>server side: <span class="Apple-tab-span"> </span><a href="nodeproxy/NodeProxy.html"><span class="s10">NodeProxy</span></a></p>
110 <p class="p2"><br></p>
111 <p class="p4">• To record all textual changes, <a href="extras/History.html"><span class="s11">History</span></a> is provides navigation and a memory of code.</p>
112 <p class="p2"><br></p>
113 <p class="p4">• For playing back on multichannel systems, <a href="nodeproxy/Monitor.html"><span class="s12">Monitor</span></a> (used internally) has a <a href="nodeproxy/playN.html"><span class="s12">playN</span></a> method.</p>
114 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
115 <p class="p4">• GUI classes: <span class="Apple-tab-span"> </span>overviews and mixers: <a href="extras/ProxyMixer.html"><span class="s13">ProxyMixer</span></a>, <a href="extras/TdefAllGui.html"><span class="s2">TdefAllGui</span></a>, <a href="extras/PdefAllGui.html"><span class="s2">PdefAllGui</span></a>, <a href="extras/NdefMixer.html"><span class="s14">NdefMixer</span></a></p>
116 <p class="p9"><span class="s5"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(for separate use: <a href="GUI/TdefGui.html"><span class="s9">TdefGui</span></a></span><span class="s11">, <a href="GUI/PdefGui.html"><span class="s15">PdefGui</span></a></span>, <a href="extras/ProxyMonitorGui.html"><span class="s16">MonitorGui</span></a><span class="s11">, <a href="GUI/NdefGui.html"><span class="s17">NdefGui</span></a>, </span><span class="s18">NdefParamGui</span><span class="s5">)<b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></span></p>
117 <p class="p2"><br></p>
118 <p class="p2"><br></p>
119 <p class="p2"><br></p>
120 <p class="p4"><b>Tutorials</b>:</p>
121 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b><span class="Apple-tab-span"> </span></b><a href="tutorials/proxyspace_examples.html"><span class="s13">proxyspace_examples</span></a> <span class="Apple-tab-span"> </span>(a broad variety of inputs and uses)</p>
122 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/jitlib_efficiency.html"><span class="s13">jitlib_efficiency</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(optimising code)</p>
123 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/the_lazy_proxy.html"><span class="s13">the_lazy_proxy</span></a><span class="s19"><span class="Apple-tab-span"> </span></span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(how the initialisation works)</p>
124 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/jitlib_fading.html"><span class="s13">jitlib_fading</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(how crossfade of code works)</p>
125 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/jitlib_asCompileString.html"><span class="s13">jitlib_asCompileString</span></a><span class="Apple-tab-span"> </span>(storing and reproducing proxies)</p>
126 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/recursive_phrasing.html"><span class="s13">recursive_phrasing</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(a specific use of Pdef)</p>
127 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="tutorials/jitlib_asCompileString.html"><span class="s20">jitlib_asCompileString</span></a><span class="Apple-tab-span"> </span>(how to reproduce source code from objects)</p>
128 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/jitlib_networking.html"><span class="s13">jitlib_networking</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(how to collaborative live code with JITLib)</p>
129 <p class="p4"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><a href="tutorials/basic_live_coding_techniques.html"><span class="s6">basic_live_coding_techniques</span></a><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>(live coding without jitlib)</p>
130 <p class="p2"><br></p>
131 <p class="p2"><br></p>
132 <p class="p4"><b>Networking:</b></p>
133 <p class="p2"><br></p>
134 <p class="p4">• in remote and local networks thanks to sc-architecture node proxies can be <b>used on any server</b>,<span class="Apple-converted-space"> </span></p>
135 <p class="p4"><span class="Apple-tab-span"> </span>as long as it notifies the client and has a correctly initialized default node.</p>
136 <p class="p4"><span class="Apple-tab-span"> </span><b>note that the client id should be set.</b></p>
137 <p class="p2"><br></p>
138 <p class="p4"><b>Internal classes / abstract classes:</b></p>
139 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
140 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
141 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="nodeproxy/BusPlug.html"><span class="s12">BusPlug</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(listener on a bus)</p>
142 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="extras/SkipJack.html"><span class="s12">SkipJack</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(a task that keeps awake across cmd-period)</p>
143 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="environments/LazyEnvir.html"><span class="s12">LazyEnvir</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(and environment that returns proxies)</p>
144 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="environments/EnvironmentRedirect.html"><span class="s12">EnvironmentRedirect</span></a><span class="s12"> </span>(abstract superclass for redirecting environments)</p>
145 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="nodeproxy/EnvGate.html"><span class="s21">EnvGate</span></a><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(singleton fade envelope)</p>
146 <p class="p4"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="nodeproxy/NodeProxy_roles.html"><span class="s22">NodeProxy_roles</span></a> (adverbial syntax for NodeProxy sources)</p>
147 <p class="p5"><br></p>
148 <p class="p5"><br></p>
149 <p class="p5"><br></p>
150 <p class="p5"><br></p>
151 <p class="p5"><br></p>
152 <p class="p5"><br></p>
153 <p class="p5"><br></p>
154 <p class="p4">for suggestions / comments contact me</p>
155 <p class="p4">Julian Rohrhuber,<span class="Apple-converted-space">  </span>rohrhuber@uni-hamburg.de.</p>
156 <p class="p2"><br></p>
157 <p class="p4">History and GUI classes are written by Alberto de Campo.</p>
158 <p class="p2"><br></p>
159 <p class="p4">Thanks a lot for all the feedback and ideas!</p>
160 <p class="p2"><br></p>
161 <p class="p2"><br></p>
162 <p class="p2"><br></p>
163 <p class="p4">_____________________________________________________________</p>
164 <p class="p4">The research for this project is funded by: <i>German Research Foundation (DFG)<span class="Apple-converted-space"> </span></i></p>
165 <p class="p4">and the <i>Future Funds of Styria, Austria.</i></p>
166 <p class="p2"><br></p>
167 <p class="p4"><i>For Live Coding see: http://toplap.org</i></p>
168 <p class="p2"><br></p>
169 <p class="p10"><br></p>
170 <p class="p5"><br></p>
171 <p class="p5"><br></p>
172 </body>
173 </html>