annotate light8/Cue.py @ 62:2f2eb802e93d

stage shows levels now. aims have blue halo for easy recognition. stage shows levels now. aims have blue halo for easy recognition. old dummy config stored
author dmcc
date Tue, 09 Jul 2002 08:35:27 +0000
parents 3011c1028eb7
children e5d14320fbd5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46
cfb00e8cc0ea (22:36:03) drewp: plaese use stronger quotes """ on Cue:1 to help my highlighter
dmcc
parents: 45
diff changeset
1 """And that's my cue to exit(0)..."""
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from time import time
45
62c47c3a90cb util.py: subsetdict added. see docs
dmcc
parents: 0
diff changeset
3 from util import subsetdict
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
4
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 class Cue:
46
cfb00e8cc0ea (22:36:03) drewp: plaese use stronger quotes """ on Cue:1 to help my highlighter
dmcc
parents: 45
diff changeset
6 """Cues are groups of fades. They can tell you the current levels at a
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 given time. They contain Fades, which are actually children of Cue,
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 meaning that Cues can contain Cues. This is similar to the Light9 concept
46
cfb00e8cc0ea (22:36:03) drewp: plaese use stronger quotes """ on Cue:1 to help my highlighter
dmcc
parents: 45
diff changeset
9 of Cues and Fades, but without all the Nodes."""
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 51
diff changeset
10 def __init__(self, name, starttime, dur, *fades):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 'Create a cue'
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 51
diff changeset
12
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 51
diff changeset
13 endtime = starttime + dur
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 51
diff changeset
14 dur = endtime - starttime
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
15
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 self.name = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 self.starttime = starttime
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
18 self.dur = dur
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 self.endtime = endtime
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 self.fades = fades
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 self.cuestart = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 self.init_levels = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 def channels_involved(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 'Return which channels are involved. This is important for marking.'
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 c = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 for fade in self.fades:
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 for f_chan in fade.channels_involved():
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 c[f_chan] = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 return c.keys()
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 def start(self, levels, time):
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 'Mark the beginning of a cue'
54
3011c1028eb7 Cue math error fixed.
dmcc
parents: 53
diff changeset
32 # print "cue marked with", levels
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 self.init_levels = levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 self.init_time = time
45b12307c695 Initial revision
drewp
parents:
diff changeset
35
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 for fade in self.fades:
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 subdict = subsetdict(levels, fade.channels_involved())
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 fade.start(subdict, time)
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 def get_levels(self, curtime):
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 'Returns the current levels'
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 d = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 for fade in self.fades:
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 fade_d = fade.get_levels(curtime)
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 for ch, lev in fade_d.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 d[ch] = max(lev, d.get(ch, 0))
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 return d
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
47 def get_end_levels(self):
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
48 'Returns the final levels'
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
49 d = {}
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
50 for fade in self.fades:
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
51 fade_d = fade.get_end_levels()
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
52 for ch, lev in fade_d.items():
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
53 d[ch] = max(lev, d.get(ch, 0))
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
54 return d
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
55
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 class Fade(Cue):
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 'See Cue.__doc__'
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 51
diff changeset
58 def __init__(self, channel, starttime, dur=None, endlevel=0, param=None):
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
59 'Fades are simple Cues'
54
3011c1028eb7 Cue math error fixed.
dmcc
parents: 53
diff changeset
60 Cue.__init__(self, "%s -> %.1f" % (channel, endlevel), starttime, dur)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 self.channel = channel
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 self.endlevel = endlevel
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 self.dur = dur
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 self.param = param
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 def start(self, levels, time):
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 'Mark the beginning of the fade'
54
3011c1028eb7 Cue math error fixed.
dmcc
parents: 53
diff changeset
67 # print "fade", self.name, "marked with", levels
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 self.init_levels = levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 self.init_level = levels[self.channel]
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 self.init_time = time
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 def channels_involved(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 'Speaks for itself, I hope'
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 return [self.channel]
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 def get_levels(self, curtime):
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 elapsed = curtime - self.init_time
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 if elapsed <= self.starttime:
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 return self.init_levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 elif elapsed >= self.endtime:
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 return {self.channel : self.endlevel}
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 else:
54
3011c1028eb7 Cue math error fixed.
dmcc
parents: 53
diff changeset
81 percent = float((curtime - self.init_time) - self.starttime) / \
3011c1028eb7 Cue math error fixed.
dmcc
parents: 53
diff changeset
82 self.dur
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 return {self.channel : self.init_level +
45b12307c695 Initial revision
drewp
parents:
diff changeset
84 percent * (self.endlevel - self.init_level)}
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
85 def get_end_levels(self):
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 46
diff changeset
86 return {self.channel : self.endlevel}
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
87
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 if __name__ == '__main__':
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 f1 = Fade('red', 0, 2, 100)
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 f2 = Fade('green', 1, 3, 50)
45b12307c695 Initial revision
drewp
parents:
diff changeset
91 f3 = Fade('blue', 0, 4, 0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 f4 = Fade('clear', 0, 8, 75)
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 c = Cue("Color shift", 0, 10, f1, f2, f3, f4)
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 tstart = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 # note how green is not mentioned -- it goes to 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 c.start({'red' : 0, 'blue' : 100, 'clear' : 25}, tstart)
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 while time() - tstart < 15:
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 curtime = time()
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 levs = c.get_levels(curtime)
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 s = '\t'.join(["%s: %d" % (k[0], v) for k, v, in levs.items()])
45b12307c695 Initial revision
drewp
parents:
diff changeset
101 print "%.1f" % (curtime - tstart), s