468
|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3
|
|
4 <html xmlns="http://www.w3.org/1999/xhtml">
|
|
5
|
|
6 <head>
|
|
7 <title>light9 in 2008</title>
|
|
8 <!-- metadata -->
|
|
9 <meta name="generator" content="S5" />
|
|
10 <meta name="version" content="S5 1.1" />
|
|
11 <meta name="presdate" content="20050728" />
|
|
12 <meta name="author" content="Eric A. Meyer" />
|
|
13 <meta name="company" content="Complex Spiral Consulting" />
|
|
14 <!-- configuration parameters -->
|
|
15 <meta name="defaultView" content="slideshow" />
|
|
16 <meta name="controlVis" content="hidden" />
|
|
17 <!-- style sheet links -->
|
|
18 <link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
|
|
19 <link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
|
|
20 <link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
|
|
21 <link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
|
|
22 <!-- S5 JS -->
|
|
23 <script src="ui/default/slides.js" type="text/javascript"></script>
|
|
24 <style type="text/css">
|
|
25 pre {
|
|
26 white-space: pre;
|
|
27 }
|
469
|
28 pre.file {
|
|
29 border: 1px solid #aaa;
|
|
30 border-bottom: 0;
|
|
31 font-size: 80%;
|
|
32 background: #eef;
|
|
33 padding: .3em;
|
|
34 }
|
468
|
35 </style>
|
|
36 </head>
|
|
37 <body>
|
|
38
|
|
39 <div class="layout">
|
|
40 <div id="controls"><!-- DO NOT EDIT --></div>
|
|
41 <div id="currentSlide"><!-- DO NOT EDIT --></div>
|
|
42 <div id="header"></div>
|
|
43 <div id="footer">
|
|
44 <h1></h1>
|
|
45 <h2>light9 in 2008</h2>
|
|
46 </div>
|
|
47
|
|
48 </div>
|
|
49
|
|
50
|
|
51 <div class="presentation">
|
|
52
|
|
53 <div class="slide">
|
|
54 <h1>light9 in 2008</h1>
|
|
55 <h2></h2>
|
|
56 <h3>Drew Perttula</h3>
|
|
57 <h4>http://bigasterisk.com/</h4>
|
|
58 </div>
|
|
59
|
|
60
|
|
61 <div class="slide">
|
|
62 <h1>Existing system</h1>
|
|
63 From my June 2005 presentation:
|
|
64
|
469
|
65 <pre style="font-size: 60%">
|
|
66
|
|
67 (play cmds)
|
|
68 ascoltami -----------> mpd ------> audio out
|
468
|
69 | (timing)
|
|
70 v
|
|
71 curvecalc subcomposer keyboardcomposer
|
|
72 | | |
|
|
73 +--- | ----+
|
|
74 \----- | --------/
|
|
75 \--+---/
|
|
76 | (light levels)
|
|
77 v
|
|
78 dmxserver
|
|
79 | (dmx levels)
|
|
80 ......... v ....................
|
|
81 . entec open dmx .
|
469
|
82 external . | (dmx) .
|
|
83 hardware . v .
|
468
|
84 . dmx dimmer .
|
|
85 . | (juice) .
|
|
86 . v .
|
|
87 . light .
|
|
88 ................................
|
|
89 </pre>
|
|
90
|
|
91 </div>
|
|
92
|
|
93 <div class="slide">
|
|
94 <h1>External libraries</h1>
|
|
95 <ul>
|
|
96 <li>Twisted - event loop and networking, xmlrpc</li>
|
|
97 <li>tk, tix</li>
|
|
98 <li>pympd - my twisted interface to mpd</li>
|
|
99 <li>louie - signals</li>
|
|
100 <li>mpd - music player daemon</li>
|
|
101 <li>rdflib</li>
|
|
102 <li>darcs</li>
|
|
103 </ul>
|
|
104 </div>
|
|
105
|
|
106 <div class="slide">
|
|
107 <h1>What's new: real sliders</h1>
|
469
|
108 <img src="bcf2000-desk1.jpg" style="float:right; border: 2px solid #005;" width="40%"/>
|
468
|
109 <ul>
|
|
110 <li>$200 board with 8 motorized faders (plus knobs, lights, and buttons)</li>
|
469
|
111 <li>Talks midi over usb</li>
|
|
112 <li>Python/linux driver is easy:
|
|
113 <pre>
|
|
114 self.dev = open("/dev/snd/midiC1D0")
|
|
115 b0, which, value = [ord(b) for b in
|
|
116 self.dev.read(3)]
|
|
117 self.dev.write(chr(0xb0) +
|
|
118 chr(which[0]) +
|
|
119 chr(int(value)))</pre></li>
|
|
120 </ul>
|
|
121 </div>
|
|
122
|
|
123 <div class="slide">
|
|
124 <h1>What's new: RDF for data storage</h1>
|
|
125 <ul>
|
|
126 <li>Old system: ad-hoc text files.</li>
|
|
127 <li>Never do this again.</li>
|
|
128 </ul>
|
|
129 </div>
|
|
130
|
|
131 <div class="slide">
|
|
132 <h1>Old file formats</h1>
|
|
133 <pre class="file">
|
|
134 [music]
|
|
135 preSong = silence-4sec.wav
|
|
136 postSong = silence-15sec.wav
|
|
137 </pre>
|
|
138
|
|
139 <pre class="file">
|
|
140 down-l : 0.32005
|
|
141 down-r : 0.3071
|
|
142 down-sides : 0.37
|
|
143 lo-c-cross : 0.24
|
|
144 </pre>
|
|
145
|
|
146 <pre class="file">
|
|
147 scoop-r right(t)
|
|
148 lo-fill can(t)
|
|
149 ch1 chase(t,names=back_colors, ontime=.6, offset=0) * ch1(t)
|
|
150 </pre>
|
|
151
|
|
152 <pre class="file">
|
|
153 patch = {
|
|
154 ('fill-xl','b31',) : 61,
|
|
155 ('broke', 'back8','b32',) : 62,
|
|
156 ('blue-xl','b33broke',) : 63,
|
|
157 </pre>
|
|
158 </div>
|
|
159
|
|
160 <div class="slide">
|
|
161 <h1>Storage goals</h1>
|
|
162 <ul>
|
|
163 <li>Stop inventing and extending syntaxes</li>
|
|
164 <li>Stop reloading the files all the time. Get incremental
|
|
165 updates or query data as it's needed.</li>
|
|
166 <li>Fancier data structures</li>
|
|
167 <li>Arbitrary layout of files on disk</li>
|
|
168 <li>Keep using my most flexible editor (emacs)</li>
|
|
169 </ul>
|
|
170 </div>
|
|
171
|
|
172 <div class="slide">
|
|
173 <h1>New system: RDF</h1>
|
|
174 <ul>
|
|
175 <li>Most files are RDF data (saved as .n3 or ntriples)</li>
|
|
176 <li>Syntax(es) are already done, and all values are unambiguously labeled</li>
|
|
177 <li>Complex data types and relationships are almost as easy as basic ones</li>
|
|
178 <li>Extensible and upgradable, of course</li>
|
|
179 <li>Used DSLs and logic programming to abbreviate boring parts</li>
|
468
|
180 </ul>
|
|
181 </div>
|
|
182
|
|
183 <div class="slide">
|
469
|
184 <h1>New data, shown as n3</h1>
|
|
185 <pre class="file" style="font-size: 80%">
|
|
186 @prefix : <http://light9.bigasterisk.com/> .
|
|
187 @prefix sub: <http://light9.bigasterisk.com/sub/> .
|
|
188 @prefix t: <http://light9.bigasterisk.com/show/dance2008/⤶
|
|
189 song10/subterm/> .
|
468
|
190
|
469
|
191 <http://light9.bigasterisk.com/show/dance2008/song10>
|
|
192 :subterm t:blacklight,
|
|
193 t:song10,
|
|
194 t:song3black .
|
|
195 t:song10 a :Subterm;
|
|
196 :expression "song10(t)";
|
|
197 :sub sub:song10 .
|
|
198 t:blacklight a :Subterm;
|
|
199 :expression "blacklight(t)>0";
|
|
200 :sub sub:blacklight .
|
|
201 </pre>
|
468
|
202 </div>
|
|
203
|
|
204
|
|
205 <div class="slide">
|
469
|
206 <h1>The same data, in xml</h1>
|
|
207 <pre style="font-size: 45%; line-height: 1.3em;">
|
|
208 <rdf:RDF xmlns="http://light9.bigasterisk.com/"
|
|
209 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
210
|
|
211 <rdf:Description rdf:about="http://light9.bigasterisk.com/show/dance2008/song10">
|
|
212 <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight"/>
|
|
213 <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10"/>
|
|
214 <subterm rdf:resource="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song3black"/>
|
|
215 </rdf:Description>
|
|
216
|
|
217 <Subterm rdf:about="http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight">
|
|
218 <expression>blacklight(t)&gt;0</expression>
|
|
219 <sub rdf:resource="http://light9.bigasterisk.com/sub/blacklight"/>
|
|
220 </Subterm>
|
|
221
|
|
222 <Subterm rdf:about="http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10">
|
|
223 <expression>song10(t)</expression>
|
|
224 <sub rdf:resource="http://light9.bigasterisk.com/sub/song10"/>
|
|
225 </Subterm>
|
|
226 </rdf:RDF>
|
|
227 </pre>
|
|
228 </div>
|
|
229
|
|
230 <div class="slide">
|
|
231 <h1>A simple line-based format</h1>
|
|
232 <pre style="font-size: 45%;">
|
|
233 <http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
|
|
234 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight> .
|
|
235
|
|
236 <http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
|
|
237 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10> .
|
|
238
|
|
239 <http://light9.bigasterisk.com/show/dance2008/song10> <http://light9.bigasterisk.com/subterm>⤶
|
|
240 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song3black> .
|
|
241
|
|
242 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
|
|
243 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://light9.bigasterisk.com/Subterm> .
|
|
244
|
|
245 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
|
|
246 <http://light9.bigasterisk.com/expression> "blacklight(t)>0" .
|
|
247
|
|
248 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/blacklight>⤶
|
|
249 <http://light9.bigasterisk.com/sub> <http://light9.bigasterisk.com/sub/blacklight> .
|
|
250
|
|
251 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
|
|
252 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://light9.bigasterisk.com/Subterm> .
|
|
253
|
|
254 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
|
|
255 <http://light9.bigasterisk.com/expression> "song10(t)" .
|
|
256
|
|
257 <http://light9.bigasterisk.com/show/dance2008/song10/subterm/song10>⤶
|
|
258 <http://light9.bigasterisk.com/sub> <http://light9.bigasterisk.com/sub/song10> .
|
|
259 </pre>
|
|
260
|
|
261 </div>
|
|
262
|
|
263 <div class="slide">
|
|
264 <h1>Again, with less wrapping</h1>
|
|
265 <pre style="font-size: 40%;">
|
|
266 <http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/blacklight> .
|
|
267 <http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/song10> .
|
|
268 <http://l9.com/show/dance2008/song10> <http://l9.com/subterm> <http://l9.com/show/dance2008/song10/subterm/song3black> .
|
|
269 <http://l9.com/show/dance2008/song10/subterm/blacklight> <http://l9.com/expression> "blacklight(t)>0" .
|
|
270 <http://l9.com/show/dance2008/song10/subterm/blacklight> <http://l9.com/sub> <http://l9.com/sub/blacklight> .
|
|
271 <http://l9.com/show/dance2008/song10/subterm/blacklight> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://l9.com/Subterm> .
|
|
272 <http://l9.com/show/dance2008/song10/subterm/song10> <http://l9.com/expression> "song10(t)" .
|
|
273 <http://l9.com/show/dance2008/song10/subterm/song10> <http://l9.com/sub> <http://l9.com/sub/song10> .
|
|
274 <http://l9.com/show/dance2008/song10/subterm/song10> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://l9.com/Subterm> .
|
|
275 </pre>
|
|
276 </div>
|
|
277
|
|
278 <div class="slide">
|
|
279 <h1>Again, rendered with graphviz</h1>
|
|
280 <img src="rdfgraph.png" />
|
|
281 </div>
|
|
282
|
|
283 <div class="slide">
|
|
284 <h1>What's next: lightsim</h1>
|
468
|
285 <ul>
|
|
286 <li>We could really use a good way to preview scenes</li>
|
469
|
287 <li>Hard to use text labels for all the different lighting scenes</li>
|
|
288 <li>Can't work on lighting cues without looking at the stage</li>
|
|
289 </ul>
|
|
290 </div>
|
|
291 <div class="slide">
|
|
292 <h1>lightsim enablers</h1>
|
|
293 <ul>
|
|
294 <li>Light obeys superposition: <br/>F(ax+by) = aF(x) + bF(y)</li>
|
|
295 <li>All my lights are computer-controlled</li>
|
|
296 </ul>
|
|
297 </div>
|
|
298 <div class="slide">
|
|
299 <h1>lightsim demos</h1>
|
|
300 <ul>
|
468
|
301 <li>Original version from 2002: Tk, PIL</li>
|
|
302 <li>Current version: qt, OpenGL</li>
|
|
303 </ul>
|
|
304 </div>
|
|
305
|
|
306 <div class="slide">
|
469
|
307 <h1>More</h1>
|
|
308 <li>Links related to this project:<br/>
|
|
309 http://delicious.com/drewpca/light9</li>
|
|
310 <!--<script type="text/javascript" src="http://feeds.delicious.com/v2/js/drewpca/light9?title=Related%20Delicious%20Bookmarks&icon=s&count=5&bullet=%E2%80%A2&sort=date"></script>-->
|
468
|
311 </div>
|
|
312
|
|
313 </div>
|
|
314
|
|
315 </body>
|
|
316 </html>
|