301
|
1 def light9_presentation():
|
|
2 """
|
|
3 Drew Perttula
|
|
4
|
|
5 drewp@bigasterisk.com
|
|
6
|
|
7 http://light9.bigasterisk.com
|
|
8
|
|
9
|
|
10 Goals of light9:
|
|
11
|
|
12 - control the brightness of many lights while playing music
|
|
13
|
|
14 - allow easy editing of the show
|
|
15
|
|
16 - allow easy maintenance of the code, even while the show is running
|
|
17
|
|
18
|
|
19
|
|
20
|
|
21
|
|
22
|
|
23
|
|
24
|
|
25 """
|
|
26
|
|
27
|
|
28
|
|
29
|
|
30
|
|
31
|
|
32
|
|
33
|
|
34
|
|
35 def dependencies():
|
|
36 """
|
|
37 Twisted - event loop and networking
|
|
38 TwistedWeb - xmlrpc protocol
|
|
39 tk, tix
|
|
40 pympd - my twisted interface to mpd
|
|
41 pydispatcher - signals
|
|
42
|
|
43 mpd - music player daemon
|
|
44
|
|
45 swig - interface to C code
|
|
46 darcs
|
|
47
|
|
48 *
|
|
49
|
|
50
|
|
51
|
|
52
|
|
53
|
|
54
|
|
55 """
|
|
56
|
|
57
|
|
58
|
|
59
|
|
60
|
|
61 def connections():
|
|
62 """
|
|
63 (play cmds)
|
|
64 ascoltami --------------> mpd ----------> audio out
|
|
65 | (timing)
|
|
66 v
|
|
67 curvecalc subcomposer keyboardcomposer
|
|
68 | | |
|
|
69 +--- | ----+
|
|
70 \----- | --------/
|
|
71 \--+---/
|
|
72 | (light levels)
|
|
73 v
|
|
74 * dmxserver
|
|
75 | (dmx levels)
|
|
76 ......... v ....................
|
|
77 . chippy .
|
|
78 . | (dmx) . external hardware
|
|
79 . v .
|
|
80 . dmx dimmer .
|
|
81 . | (juice) .
|
|
82 . v .
|
|
83 . light .
|
|
84 ................................
|
|
85 """
|
|
86
|
|
87
|
|
88 def metrics():
|
|
89 """
|
|
90 selected linecounts:
|
|
91 356 ascoltami (music player)
|
|
92 318 curvecalc (curve and expression editor)
|
|
93 279 keyboardcomposer
|
|
94 189 dmxserver (hardware output)
|
|
95 153 subcomposer
|
|
96 17 wavecurve (create smoothed waveforms from .wav)
|
|
97
|
|
98 311 light9/curve.py (curve widgets)
|
|
99 191 light9/FlyingFader.py (enhanced tk.Scale)
|
|
100 168 light9/Submaster.py
|
|
101 * 151 light9/zoomcontrol.py
|
|
102 137 light9/dmxchanedit.py
|
|
103 40 light9/wavepoints.py
|
|
104
|
|
105 65 light9/io/parport.c (dmx interface protocol)
|
|
106 50 light9/io/serport.i (i2c interface to sliders)
|
|
107
|
|
108 total in project: about 3200 in about 30 files
|
|
109
|
|
110 """
|
|
111
|
|
112
|
|
113
|
|
114 def future_projects():
|
|
115 """
|
|
116 A submaster server that talks with the other programs and
|
|
117 eliminates all the explicit saving and reloading of subs
|
|
118
|
|
119 More abstract output layer, to which I can add home lighting, for
|
|
120 example
|
|
121
|
|
122 Small timed 'clips' that can be triggered
|
|
123
|
|
124 Generalize to a whizzy, distributed real-time circuit simulator
|
|
125 node network with a 5GL editor and failsafe checkpointing and
|
|
126 redundancy
|
|
127 *
|
|
128
|
|
129
|
|
130
|
|
131 """
|
|
132
|
|
133
|
|
134
|
|
135
|
|
136
|
|
137
|
|
138
|
|
139
|
|
140
|
|
141
|
|
142
|
|
143
|
|
144
|
|
145
|
|
146
|
|
147
|
|
148
|
|
149
|
|
150
|
|
151
|
|
152
|
|
153
|