comparison light8/Configs/Config.danceshow2002.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:45b12307c695
1 from random import randrange
2 from time import time
3 from __future__ import generators,division
4 from Subs import *
5
6
7 patch = {
8 'side l' : 45,
9 'side r' : 46,
10 'main 1' : 1,
11 'main 2' : 2,
12 'main 3' : 3,
13 'main 4' : 4,
14 'main 5' : 5,
15 'main 6' : 6,
16 'main 7' : 7,
17 'main 8' : 8,
18 'main 9' : 9,
19 'main 10' : 10,
20 'center sc' : 20,
21 'sr sky' : 43,
22 'blacklight' : 15,
23 'house':68,
24 ('b0 1 r' ,'b01'):54, # left bank over house
25 ('b0 2 p' ,'b02'):53,
26 ('b0 3 o' ,'b03'):52,
27 ('b0 4 b' ,'b04'):51,
28 ('b0 5 r' ,'b05'):50,
29 ('b0 6 lb','b06'):49,
30 ('b1 1' ,'b11'):55, # mid bank
31 ('b1 2' ,'b12'):56,
32 ('b1 3' ,'b13'):57,
33 ('b1 4' ,'b14'):58,
34 ('b1 5' ,'b15'):59,
35 ('b1 6' ,'b16'):60,
36 ('b2 1 lb','b21'):61, # right bank
37 ('b2 2 r' ,'b22'):62,
38 ('b2 3 b' ,'b23'):63,
39 ('b2 4 o' ,'b24'):64,
40 ('b2 5 p' ,'b25'):65,
41 ('b2 6 r' ,'b26'):66,
42 }
43
44 from util import maxes,scaledict
45 FL=100
46 def fulls(chans):
47 # pass a list or multiple args
48 return dict([(c,FL) for c in chans])
49 def levs(chans,levs):
50 return dict([(c,v) for c,v in zip(chans,levs)])
51
52 def blacklight(params, slideradjuster):
53 params.add_param('nd',CheckboxParam())
54 while 1:
55 yield {'blacklight':100*params['nd']}
56
57 def strobe(params, slideradjuster):
58 patterns = {
59 'blue' : fulls((23,27,31,35,'b0 4 b','b2 3 b')),
60 'cyc' : {42:FL,43:FL},
61 'scp all' : fulls((13,16,18,19,39)),
62 '1-5' : fulls(range(1, 6)),
63 }
64 params.add_param('offtime',SliderParam(range=(0.1,0.3), res=0.001,
65 initial=0.11, length=100))
66 params.add_param('ontime',SliderParam(range=(0.0,0.8), res=0.001,
67 length=100))
68 params.add_param('pattern',ListParam(patterns.keys()))
69 params.add_param('current',LabelParam('none'))
70 params.add_param('count',SliderParam(range=(0, 10), res=1, initial=0))
71 lastchanged = time()
72 state = 0
73 blinkcounter = 0
74 my_pattern = None
75
76 while 1:
77 if params['count'] and blinkcounter > params['count']:
78 blinkcounter = 0
79 slideradjuster.set(0)
80
81 if params['pattern'] != None:
82 params['current'] = params['pattern']
83 my_pattern = params['pattern']
84
85 if state == 0:
86 delay = params['offtime']
87 else:
88 delay = params['ontime']
89
90 if time() > (lastchanged + delay):
91 # ready for change
92 state = not state
93 lastchanged = time()
94 blinkcounter += 0.5
95
96 try: # protect against keyerrors (and possibly everything else)
97 if state:
98 yield patterns[my_pattern]
99 else:
100 yield scaledict(patterns[my_pattern], .1)
101 except:
102 yield {}
103
104 def chase(params, slideradjuster):
105 patterns = {
106 'all': ( fulls(('b01','b21')),
107 fulls(('b02','b22')),
108 fulls(('b03','b23')),
109 fulls(('b04','b24')),
110 fulls(('b05','b25')),
111 fulls(('b06','b26')),
112 ),
113 'red':( fulls(('b0 1 r','b2 2 r')),
114 fulls(('b0 5 r','b2 6 r'))),
115 'randcol':([fulls((x,)) for x
116 in ("b21 b23 b25 b03 b06 b24 b22 "+
117 "b24 b03 b23 b01 b04 b05 b22 "+
118 "b02 b02 b26 b21 b06 b25 b26 "+
119 "b01 b04 b05").split()]),
120 'ctrpong':[fulls((x,)) for x in (
121 "b11 b12 b13 b14 b15 b16 b15 b14 b13 b12".split())],
122 'l-r': ( fulls(('b01','b11','b21')),
123 fulls(('b02','b12','b22')),
124 fulls(('b03','b13','b23')),
125 fulls(('b04','b14','b24')),
126 fulls(('b05','b15','b25')),
127 fulls(('b06','b16','b26'))),
128 'flutter':(
129 fulls(('main 6','b15')),
130 fulls(('main 1','b12')),
131 fulls(('main 2','b11')),
132 fulls(('b12', 'main 3')),
133 fulls(('b15', 'main 9')),
134 fulls(('b16', 'main 4')),
135 fulls(('main 4','b13')),
136 fulls(('main 3','b11')),
137 fulls(('main 8','b15')),
138 fulls(('main 9','b12')),
139 fulls(('b11', 'main 1')),
140 fulls(('main 5','b15')),
141 fulls(('b13', 'main 6')),
142 fulls(('b14', 'main 2')),
143 fulls(('main 7','b16')),
144 ),
145 'randstage':([fulls((x,)) for x
146 in ("""
147 b22 27 b04 26 b26 21 28 b25 23 b02 31 b05 32 34 b03 24 b01 25
148 b23 29 22 35 30 b24 33 36 """).split()]),
149
150 }
151
152 params.add_param('steptime',SliderParam(range=(.1,3),
153 initial=.4,length=150))
154 params.add_param('overlap',SliderParam(range=(0,8),initial=1.5))
155 params.add_param('pattern',ListParam(options=patterns.keys(),
156 initial='all'))
157 params.add_param('current',LabelParam('none'))
158
159 steps=()
160
161 def fn(x):
162 warm=.1
163 # the _/\_ wave for each step. input 0..1, output 0..1
164 if x<0 or x>1:
165 return warm
166 if x<.5:
167 return warm+(1.0-warm)*(x*2)
168 else:
169 return warm+(1.0-warm)*(2-(x*2))
170
171 def stepbrightness(stepnum,numsteps,overlap,pos):
172 startpos = stepnum/numsteps
173 p=( (pos-startpos)*(1.0+overlap) )%1.0
174 ret=fn( p )
175 #print "step %(stepnum)i/%(numsteps)i pos %(pos)f ,p=%(p)f is %(ret)f" % locals()
176 return ret
177
178 queued=[] # list of steps, each step is starttime,stepcue
179 lastaddtime=time()-100
180 currentpattern='all'
181 steps=patterns[currentpattern]
182 stepsiter=iter(())
183 while 1:
184 params['current'] = params['pattern']
185
186 # changed pattern?
187 if params['pattern']!=currentpattern and params['pattern'] in patterns:
188 currentpattern=params['pattern']
189 steps=patterns[currentpattern]
190 stepsiter=iter(steps) # restart iterator
191
192 # time to put a new step in the queue?
193 if time()>lastaddtime+params['steptime']:
194 lastaddtime=time()
195 try:
196 nextstep = stepsiter.next()
197 except StopIteration:
198 stepsiter=iter(steps)
199 nextstep=stepsiter.next()
200 queued.append( (time(),nextstep) )
201
202 # loop over queue, putting still-active (scaled) steps in shiftedsteps
203 keepers=[]
204 shiftedsteps=[]
205 for started,s in queued:
206 steptime = time()-started
207 finish = started+(1.0+params['overlap'])*params['steptime']
208 pos = (time()-started)/(finish-started)
209 if time()<finish:
210 keepers.append((started,s))
211 shiftedsteps.append( scaledict(s,fn(pos)) )
212
213 if len(keepers)>30:
214 print "too many steps in chase - dumping some"
215 queued=keepers[:20]
216 else:
217 queued=keepers
218
219
220 # pos=(time()%params['steptime'])/params['steptime'] # 0..1 animated variable
221 # shiftedsteps=[]
222 # for i,s in zip(range(0,len(steps)),steps):
223 # shiftedsteps.append( scaledict(s, stepbrightness(i,len(steps),params['overlap'],pos)) )
224 yield maxes(shiftedsteps)
225
226
227 def randomdimmer(params, slideradjuster):
228 params.add_param('magic', CheckboxParam())
229 params.add_param('cheese', TextParam())
230 params.add_param('stuff', ListParam(('a', 'b', 'c')))
231
232 curtime = time()
233 dim = 1
234 while 4:
235 if time() - curtime > 1:
236 dim = randrange(1, 64)
237 curtime = time()
238 yield {dim : 100, 20 : params.get_param_value('magic')}
239
240
241 subs = {
242 'over pit sm' : levs(range(1, 13),(100,0,0,91,77,79,86,55,92,77,59,0)),
243 'over pit lg' : fulls(range(1, 13)),
244 ('house', 'black') : { 68:100 },
245 ('cyc', 'lightBlue'):{42:FL,43:FL},
246 ('scp hot ctr', 'yellow'):{18:FL},
247 ('scp more', '#AAAA00'):{18:FL,14:FL},
248 ('scp all', '#AAAA00'):fulls((13,16,18,19,39)),
249 ('col oran', '#EEEE99'):fulls((21,25,29,33)),
250 ('col red', 'red'):fulls((24,28,32,36)),
251 ('col red big', 'red'):fulls((24,28,32,36,
252 'b0 1 r','b0 5 r','b2 2 r','b2 6 r')),
253 ('col blue', 'blue'):fulls((23,27,31,35,'b0 4 b','b2 3 b')),
254 ('col gree', 'green'):fulls((22,26,30,34)),
255 'sidepost':fulls((45,46)),
256 'edges':fulls((55,60,49,54,61,66)),
257 'bank1ctr':fulls(('b12','b13','b14','b15')),
258 ('blacklight', 'purple'):blacklight,
259 'over pit ctr' : fulls((6,)),
260 ('strobe', 'grey'):strobe,
261
262 # 'midstage' : dict([(r, 100) for r in range(11, 21)]),
263 # 'backstage' : dict([(r, 100) for r in range(21, 31)]),
264 # 'frontchase' : mr_effect,
265 'chase' : chase,
266 'chase2' : chase,
267 # 'random' : randomdimmer,
268 }
269 subs["*10"] = { "14" : 46.000000,
270 "18" : 46.000000,
271 "22" : 88.000000,
272 "23" : 95.000000,
273 "24" : 19.000000,
274 "26" : 88.000000,
275 "27" : 95.000000, "28" : 19.000000,
276 "30" : 88.000000, "31" : 95.000000,
277 "32" : 19.000000, "34" : 88.000000,
278 "35" : 95.000000, "36" : 19.000000,
279 "b0 5 r" : 7.000000, "b0 4 b" : 95.000000,
280 "b0 1 r" : 7.000000, "b2 2 r" : 7.000000,
281 "b2 3 b" : 95.000000, "b2 6 r" : 7.000000, }
282 subs["*13"] = { "main 1" : 51.0, "main 2" : 51.0, "main 3" : 51.0,
283 "main 4" : 51.0, "main 5" : 51.0, "main 6" : 51.0,
284 "main 7" : 51.0, "main 8" : 51.0, "main 9" : 51.0,
285 "main 10" : 51.0, "11" : 51.0, "12" : 51.0,
286 "blacklight" : 0.0, "21" : 56.0, "22" : 50.0,
287 "24" : 51.0, "25" : 56.0, "26" : 50.0, "28" : 51.0,
288 "29" : 56.0, "30" : 50.0, "32" : 51.0, "33" : 56.0,
289 "34" : 50.0, "36" : 51.0, "b0 5 r" : 51.0,
290 "b0 1 r" : 51.0, "b2 2 r" : 51.0, "b2 6 r" : 51.0, }
291 subs["*16"] = { "main 1" : 54, "main 4" : 49, "main 5" : 41, "main 6" : 43,
292 "main 7" : 46, "main 8" : 29, "main 9" : 50, "main 10" : 41,
293 "11" : 32, "13" : 77, "16" : 77, "18" : 77, "19" : 77, "39" : 77,
294 "42" : 30, "sr sky" : 30,}
295 subs["*3"] = { "main 1" : 47, "main 2" : 47, "main 3" : 47, "main 4" : 47,
296 "main 5" : 47, "main 6" : 47, "main 7" : 47, "main 8" : 47, "main 9" : 47,
297 "main 10" : 47, "11" : 47, "12" : 47, "blacklight" : 0, "21" : 67,
298 "22" : 69, "23" : 69, "24" : 78, "25" : 67, "26" : 69, "27" : 69,
299 "28" : 78, "29" : 67, "30" : 69, "31" : 69, "32" : 78, "33" : 67,
300 "34" : 69, "35" : 69, "36" : 78, "b0 4 b" : 69, "b1 2" : 61,
301 "b1 3" : 61, "b1 4" : 61, "b1 5" : 61, "b2 3 b" : 69,}
302 subs["*12"] = { "main 1" : 25, "main 4" : 23, "main 5" : 19, "main 6" : 20,
303 "main 7" : 22, "main 8" : 14, "main 9" : 23, "main 10" : 19,
304 "11" : 15, "13" : 36, "16" : 36, "18" : 36, "19" : 36, "22" : 65,
305 "23" : 100, "24" : 23, "26" : 65, "27" : 100, "28" : 23, "30" : 65,
306 "31" : 100, "32" : 23, "34" : 65, "35" : 100, "36" : 23, "39" : 36,
307 "b0 4 b" : 100, "b1 2" : 62, "b1 3" : 62, "b1 4" : 62, "b1 5" : 62,
308 "b2 3 b" : 100,}
309 subs["*curtain"] = { "main 4" : 44, "main 5" : 37, "main 6" : 86,
310 "main 7" : 42, "main 8" : 32, "main 9" : 45, "42" : 41, "sr sky" : 41,
311 "b0 6 lb" : 27, "b0 1 r" : 27, "b1 1" : 27, "b1 2" : 100, "b1 3" : 100,
312 "b1 4" : 100, "b1 5" : 100, "b1 6" : 27, "b2 1 lb" : 27, "b2 6 r" : 27,
313
314 }
315 subs["ba outrs"] = fulls("b01 b02 b03 b04 b05 b06 b21 b22 b23 b24 b25 b26".split())
316 subs["ba some"] = {'b02':40,'b03':FL,'b04':FL,'b05':40,
317 'b22':40,'b23':FL,'b24':FL,'b25':40,}
318 subs['*curtain'].update(subs['ba some'])
319
320 subs["*2"] = { "main 1" : 77, "main 4" : 70, "main 5" : 59, "main 6" : 61,
321 "main 7" : 66, "main 8" : 42, "main 9" : 71, "main 10" : 59,
322 "11" : 45, "24" : 77, "28" : 77, "32" : 77, "36" : 77, "b0 5 r" : 77,
323 "b0 1 r" : 77, "b2 2 r" : 77, "b2 6 r" : 77,}
324 subs["*6"] = { "main 1" : 37, "main 4" : 33, "main 5" : 28, "main 6" : 29,
325 "main 7" : 32, "main 8" : 20, "main 9" : 34, "main 10" : 28,
326 "11" : 22, "13" : 37, "blacklight" : 0, "16" : 37, "18" : 37,
327 "19" : 37, "21" : 82, "22" : 82, "23" : 82, "24" : 82, "25" : 82,
328 "26" : 82, "27" : 82, "28" : 82, "29" : 82, "30" : 82, "31" : 82,
329 "32" : 82, "33" : 82, "34" : 82, "35" : 82, "36" : 82, "39" : 37,
330 "b0 5 r" : 82, "b0 4 b" : 82, "b0 1 r" : 82, "b2 2 r" : 82, "b2 3 b" : 82,
331 "b2 6 r" : 82,}
332 subs["*8"] = { "13" : 60, "16" : 60, "18" : 60, "19" : 60, "22" : 14,
333 "23" : 100, "26" : 14, "27" : 100, "30" : 14, "31" : 100, "34" : 14,
334 "35" : 100, "39" : 60, "b0 6 lb" : 14, "b0 4 b" : 100, "b0 1 r" : 14,
335 "b1 1" : 14, "b1 2" : 70, "b1 3" : 70, "b1 4" : 70, "b1 5" : 70,
336 "b1 6" : 14, "b2 1 lb" : 14, "b2 3 b" : 100, "b2 6 r" : 14,}
337 subs["*5"] = { "main 1" : 81, "main 4" : 74, "main 5" : 62, "main 6" : 64,
338 "main 7" : 70, "main 8" : 44, "main 9" : 75, "main 10" : 62,
339 "11" : 48, "21" : 29, "24" : 29, "25" : 29, "28" : 29, "29" : 29,
340 "32" : 29, "33" : 29, "36" : 29, "42" : 37, "sr sky" : 37, "b0 5 r" : 29,
341 "b0 4 b" : 72, "b0 3 o" : 72, "b0 2 p" : 29, "b2 2 r" : 29, "b2 3 b" : 72,
342 "b2 4 o" : 72, "b2 5 p" : 29,}