comparison light8/Cue.py @ 51:71489bb71528

- Meet Fader. He is going to grow up and be a crossfader some day - Meet Fader. He is going to grow up and be a crossfader some day (tomarrow) - Tkinter -> Tix so we can use ScrolledListBox which has a command - Some improvements to Cue - Cues need to specify their final values - Cues are imported by subs. This should be fixed for style points. - Some other cleanups
author dmcc
date Sun, 07 Jul 2002 15:40:45 +0000
parents cfb00e8cc0ea
children 032b2b67bc10
comparison
equal deleted inserted replaced
50:5ff08b489693 51:71489bb71528
5 class Cue: 5 class Cue:
6 """Cues are groups of fades. They can tell you the current levels at a 6 """Cues are groups of fades. They can tell you the current levels at a
7 given time. They contain Fades, which are actually children of Cue, 7 given time. They contain Fades, which are actually children of Cue,
8 meaning that Cues can contain Cues. This is similar to the Light9 concept 8 meaning that Cues can contain Cues. This is similar to the Light9 concept
9 of Cues and Fades, but without all the Nodes.""" 9 of Cues and Fades, but without all the Nodes."""
10 def __init__(self, name, starttime, endtime, *fades): 10 def __init__(self, name, starttime, endtime=None, dur=None, *fades):
11 'Create a cue' 11 'Create a cue'
12 if not endtime:
13 endtime = starttime + dur
14 else:
15 dur = endtime - starttime
16
12 self.name = name 17 self.name = name
13 self.starttime = starttime 18 self.starttime = starttime
19 self.dur = dur
14 self.endtime = endtime 20 self.endtime = endtime
15 self.fades = fades 21 self.fades = fades
16 self.cuestart = None 22 self.cuestart = None
17 self.init_levels = None 23 self.init_levels = None
18 def channels_involved(self): 24 def channels_involved(self):
36 for fade in self.fades: 42 for fade in self.fades:
37 fade_d = fade.get_levels(curtime) 43 fade_d = fade.get_levels(curtime)
38 for ch, lev in fade_d.items(): 44 for ch, lev in fade_d.items():
39 d[ch] = max(lev, d.get(ch, 0)) 45 d[ch] = max(lev, d.get(ch, 0))
40 return d 46 return d
47 def get_end_levels(self):
48 'Returns the final levels'
49 d = {}
50 for fade in self.fades:
51 fade_d = fade.get_end_levels()
52 for ch, lev in fade_d.items():
53 d[ch] = max(lev, d.get(ch, 0))
54 return d
41 55
42 class Fade(Cue): 56 class Fade(Cue):
43 'See Cue.__doc__' 57 'See Cue.__doc__'
44 def __init__(self, channel, starttime, endtime=None, endlevel=0, dur=None, 58 def __init__(self, channel, starttime, endtime=None, endlevel=0, dur=None,
45 param=None): 59 param=None):
46 'Only specify an end time or a duration' 60 'Fades are simple Cues'
47 if not endtime: 61 Cue.__init__(self, "%s -> %f" % (channel, endlevel), starttime, endtime,
48 endtime = starttime + dur 62 dur)
49 else:
50 dur = endtime - starttime
51 Cue.__init__(self, "%s -> %f" % (channel, endlevel), starttime, endtime)
52 self.channel = channel 63 self.channel = channel
53 self.endlevel = endlevel 64 self.endlevel = endlevel
54 self.dur = dur 65 self.dur = dur
55 self.param = param 66 self.param = param
56 def start(self, levels, time): 67 def start(self, levels, time):
69 return {self.channel : self.endlevel} 80 return {self.channel : self.endlevel}
70 else: 81 else:
71 percent = float(elapsed) / self.dur 82 percent = float(elapsed) / self.dur
72 return {self.channel : self.init_level + 83 return {self.channel : self.init_level +
73 percent * (self.endlevel - self.init_level)} 84 percent * (self.endlevel - self.init_level)}
85 def get_end_levels(self):
86 return {self.channel : self.endlevel}
74 87
75 if __name__ == '__main__': 88 if __name__ == '__main__':
76 f1 = Fade('red', 0, 2, 100) 89 f1 = Fade('red', 0, 2, 100)
77 f2 = Fade('green', 1, 3, 50) 90 f2 = Fade('green', 1, 3, 50)
78 f3 = Fade('blue', 0, 4, 0) 91 f3 = Fade('blue', 0, 4, 0)