annotate light8/Configeffects.py @ 2405:69ca2b2fc133

overcomplicated attempt at persisting the pane layout in the rdf graph this was hard because we have to somehow wait for the graph to load before config'ing the panes
author drewp@bigasterisk.com
date Fri, 17 May 2024 16:58:26 -0700
parents 45b12307c695
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 from random import randrange
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from time import time
45b12307c695 Initial revision
drewp
parents:
diff changeset
3 from __future__ import generators,division
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from Subs import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from Cue import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
6
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 def strobe(params, slideradjuster):
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 patterns = {
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 'blue' : fulls((23,27,31,35,'b0 4 b','b2 3 b')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 'cyc' : {42:FL,43:FL},
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 'scp all' : fulls((13,16,18,19,39)),
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 '1-5' : fulls(range(1, 6)),
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 }
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 params.add_param('offtime',SliderParam(range=(0.1,0.3), res=0.001,
45b12307c695 Initial revision
drewp
parents:
diff changeset
15 initial=0.11, length=100))
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 params.add_param('ontime',SliderParam(range=(0.0,0.8), res=0.001,
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 length=100))
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 params.add_param('pattern',ListParam(patterns.keys()))
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 params.add_param('current',LabelParam('none'))
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 params.add_param('count',SliderParam(range=(0, 10), res=1, initial=0))
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 lastchanged = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 state = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 blinkcounter = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 my_pattern = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
25
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 while 1:
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 if params['count'] and blinkcounter > params['count']:
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 blinkcounter = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 slideradjuster.set(0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
30
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 if params['pattern'] != None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 params['current'] = params['pattern']
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 my_pattern = params['pattern']
45b12307c695 Initial revision
drewp
parents:
diff changeset
34
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 if state == 0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 delay = params['offtime']
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 delay = params['ontime']
45b12307c695 Initial revision
drewp
parents:
diff changeset
39
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 if time() > (lastchanged + delay):
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 # ready for change
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 state = not state
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 lastchanged = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 blinkcounter += 0.5
45b12307c695 Initial revision
drewp
parents:
diff changeset
45
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 try: # protect against keyerrors (and possibly everything else)
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 if state:
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 yield patterns[my_pattern]
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 yield scaledict(patterns[my_pattern], .1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 except:
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 yield {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
53
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 def chase(params, slideradjuster):
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 patterns = {
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 'all': ( fulls(('b01','b21')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 fulls(('b02','b22')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 fulls(('b03','b23')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 fulls(('b04','b24')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 fulls(('b05','b25')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 fulls(('b06','b26')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 ),
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 'red':( fulls(('b0 1 r','b2 2 r')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 fulls(('b0 5 r','b2 6 r'))),
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 'randcol':([fulls((x,)) for x
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 in ("b21 b23 b25 b03 b06 b24 b22 "+
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 "b24 b03 b23 b01 b04 b05 b22 "+
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 "b02 b02 b26 b21 b06 b25 b26 "+
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 "b01 b04 b05").split()]),
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 'ctrpong':[fulls((x,)) for x in (
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 "b11 b12 b13 b14 b15 b16 b15 b14 b13 b12".split())],
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 'l-r': ( fulls(('b01','b11','b21')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 fulls(('b02','b12','b22')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 fulls(('b03','b13','b23')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 fulls(('b04','b14','b24')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 fulls(('b05','b15','b25')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 fulls(('b06','b16','b26'))),
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 'flutter':(
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 fulls(('main 6','b15')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 fulls(('main 1','b12')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
81 fulls(('main 2','b11')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
82 fulls(('b12', 'main 3')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 fulls(('b15', 'main 9')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
84 fulls(('b16', 'main 4')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 fulls(('main 4','b13')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 fulls(('main 3','b11')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
87 fulls(('main 8','b15')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 fulls(('main 9','b12')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 fulls(('b11', 'main 1')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 fulls(('main 5','b15')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
91 fulls(('b13', 'main 6')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 fulls(('b14', 'main 2')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 fulls(('main 7','b16')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 ),
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 'randstage':([fulls((x,)) for x
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 in ("""
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 b22 27 b04 26 b26 21 28 b25 23 b02 31 b05 32 34 b03 24 b01 25
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 b23 29 22 35 30 b24 33 36 """).split()]),
45b12307c695 Initial revision
drewp
parents:
diff changeset
99
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 }
45b12307c695 Initial revision
drewp
parents:
diff changeset
101
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 params.add_param('steptime',SliderParam(range=(.1,3),
45b12307c695 Initial revision
drewp
parents:
diff changeset
103 initial=.4,length=150))
45b12307c695 Initial revision
drewp
parents:
diff changeset
104 params.add_param('overlap',SliderParam(range=(0,8),initial=1.5))
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 params.add_param('pattern',ListParam(options=patterns.keys(),
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 initial='all'))
45b12307c695 Initial revision
drewp
parents:
diff changeset
107 params.add_param('current',LabelParam('none'))
45b12307c695 Initial revision
drewp
parents:
diff changeset
108
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 steps=()
45b12307c695 Initial revision
drewp
parents:
diff changeset
110
45b12307c695 Initial revision
drewp
parents:
diff changeset
111 def fn(x):
45b12307c695 Initial revision
drewp
parents:
diff changeset
112 warm=.1
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 # the _/\_ wave for each step. input 0..1, output 0..1
45b12307c695 Initial revision
drewp
parents:
diff changeset
114 if x<0 or x>1:
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 return warm
45b12307c695 Initial revision
drewp
parents:
diff changeset
116 if x<.5:
45b12307c695 Initial revision
drewp
parents:
diff changeset
117 return warm+(1.0-warm)*(x*2)
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
119 return warm+(1.0-warm)*(2-(x*2))
45b12307c695 Initial revision
drewp
parents:
diff changeset
120
45b12307c695 Initial revision
drewp
parents:
diff changeset
121 def stepbrightness(stepnum,numsteps,overlap,pos):
45b12307c695 Initial revision
drewp
parents:
diff changeset
122 startpos = stepnum/numsteps
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 p=( (pos-startpos)*(1.0+overlap) )%1.0
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 ret=fn( p )
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 #print "step %(stepnum)i/%(numsteps)i pos %(pos)f ,p=%(p)f is %(ret)f" % locals()
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 return ret
45b12307c695 Initial revision
drewp
parents:
diff changeset
127
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 queued=[] # list of steps, each step is starttime,stepcue
45b12307c695 Initial revision
drewp
parents:
diff changeset
129 lastaddtime=time()-100
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 currentpattern='all'
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 steps=patterns[currentpattern]
45b12307c695 Initial revision
drewp
parents:
diff changeset
132 stepsiter=iter(())
45b12307c695 Initial revision
drewp
parents:
diff changeset
133 while 1:
45b12307c695 Initial revision
drewp
parents:
diff changeset
134 params['current'] = params['pattern']
45b12307c695 Initial revision
drewp
parents:
diff changeset
135
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 # changed pattern?
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 if params['pattern']!=currentpattern and params['pattern'] in patterns:
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 currentpattern=params['pattern']
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 steps=patterns[currentpattern]
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 stepsiter=iter(steps) # restart iterator
45b12307c695 Initial revision
drewp
parents:
diff changeset
141
45b12307c695 Initial revision
drewp
parents:
diff changeset
142 # time to put a new step in the queue?
45b12307c695 Initial revision
drewp
parents:
diff changeset
143 if time()>lastaddtime+params['steptime']:
45b12307c695 Initial revision
drewp
parents:
diff changeset
144 lastaddtime=time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
145 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
146 nextstep = stepsiter.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
147 except StopIteration:
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 stepsiter=iter(steps)
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 nextstep=stepsiter.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 queued.append( (time(),nextstep) )
45b12307c695 Initial revision
drewp
parents:
diff changeset
151
45b12307c695 Initial revision
drewp
parents:
diff changeset
152 # loop over queue, putting still-active (scaled) steps in shiftedsteps
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 keepers=[]
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 shiftedsteps=[]
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 for started,s in queued:
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 steptime = time()-started
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 finish = started+(1.0+params['overlap'])*params['steptime']
45b12307c695 Initial revision
drewp
parents:
diff changeset
158 pos = (time()-started)/(finish-started)
45b12307c695 Initial revision
drewp
parents:
diff changeset
159 if time()<finish:
45b12307c695 Initial revision
drewp
parents:
diff changeset
160 keepers.append((started,s))
45b12307c695 Initial revision
drewp
parents:
diff changeset
161 shiftedsteps.append( scaledict(s,fn(pos)) )
45b12307c695 Initial revision
drewp
parents:
diff changeset
162
45b12307c695 Initial revision
drewp
parents:
diff changeset
163 if len(keepers)>30:
45b12307c695 Initial revision
drewp
parents:
diff changeset
164 print "too many steps in chase - dumping some"
45b12307c695 Initial revision
drewp
parents:
diff changeset
165 queued=keepers[:20]
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
167 queued=keepers
45b12307c695 Initial revision
drewp
parents:
diff changeset
168
45b12307c695 Initial revision
drewp
parents:
diff changeset
169
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 # pos=(time()%params['steptime'])/params['steptime'] # 0..1 animated variable
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 # shiftedsteps=[]
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 # for i,s in zip(range(0,len(steps)),steps):
45b12307c695 Initial revision
drewp
parents:
diff changeset
173 # shiftedsteps.append( scaledict(s, stepbrightness(i,len(steps),params['overlap'],pos)) )
45b12307c695 Initial revision
drewp
parents:
diff changeset
174 yield maxes(shiftedsteps)
45b12307c695 Initial revision
drewp
parents:
diff changeset
175
45b12307c695 Initial revision
drewp
parents:
diff changeset
176
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 def randomdimmer(params, slideradjuster):
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 params.add_param('magic', CheckboxParam())
45b12307c695 Initial revision
drewp
parents:
diff changeset
179 params.add_param('cheese', TextParam())
45b12307c695 Initial revision
drewp
parents:
diff changeset
180 params.add_param('stuff', ListParam(('a', 'b', 'c')))
45b12307c695 Initial revision
drewp
parents:
diff changeset
181
45b12307c695 Initial revision
drewp
parents:
diff changeset
182 curtime = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 dim = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
184 while 4:
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 if time() - curtime > 1:
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 dim = randrange(1, 64)
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 curtime = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 yield {dim : 100, 20 : params.get_param_value('magic')}
45b12307c695 Initial revision
drewp
parents:
diff changeset
189