135
|
1
|
|
2
|
0
|
3 from Timeline import *
|
|
4 from Submaster import Submasters, sub_maxes
|
|
5
|
|
6 class Show:
|
|
7 def __init__(self, timelines, submasters):
|
|
8 self.timelines = dict([(timeline.name, timeline)
|
|
9 for timeline in timelines])
|
|
10 self.submasters = submasters
|
|
11 self.current_timeline = None
|
|
12 self.current_time = 0
|
|
13 try:
|
|
14 self.current_timeline = timelines[0]
|
|
15 except ValueError:
|
|
16 pass
|
|
17 def calc_active_submaster(self):
|
|
18 "get levels from the current timeline at the current time"
|
|
19 if not (self.current_timeline or self.current_time):
|
|
20 return {}
|
|
21 tl = self.current_timeline
|
|
22 tl.set_time(self.current_time)
|
|
23 levels = tl.get_levels()
|
|
24 scaledsubs = [self.submasters.get_sub_by_name(sub) * level \
|
|
25 for sub, level in levels.items()]
|
|
26 maxes = sub_maxes(*scaledsubs)
|
|
27
|
|
28 return maxes
|
|
29 def set_timeline(self, name):
|
|
30 "select a timeline"
|
|
31 self.current_timeline = self.timelines.get(name)
|
|
32 self.set_time(0)
|
|
33 if not self.current_timeline:
|
|
34 print "Show: '%s' is not the same of a timeline."
|
|
35 def set_time(self, time):
|
|
36 "set time of current timeline"
|
|
37 self.current_time = time
|
|
38 self.current_timeline.set_time(time)
|
|
39
|
|
40 # this is the default blender
|
|
41 linear = LinearBlender()
|
|
42 def T(time, level, **kw):
|
|
43 """This used to be a synonym for TimedEvent:
|
|
44
|
|
45 T = TimedEvent
|
|
46
|
|
47 It now acts in a similar way, except that it will fill in a default
|
|
48 blender if you don't. The default blender is a LinearBlender. It also
|
|
49 sets frame to MISSING so the track can fill it in."""
|
|
50 if 'blender' not in kw:
|
|
51 global linear
|
|
52 kw['blender'] = linear
|
|
53
|
|
54 return TimedEvent(time, level=level, frame=MISSING, **kw)
|
|
55
|
|
56 quad = ExponentialBlender(2)
|
|
57 invquad = ExponentialBlender(0.5)
|
|
58 smoove = SmoothBlender()
|
|
59
|
|
60 track1 = TimelineTrack('red track',
|
|
61 T(0, 0),
|
|
62 T(4, 0.5, blender=quad),
|
|
63 T(12, 0.7, blender=smoove),
|
|
64 T(15, level=0.0), default_frame='red')
|
|
65 track2 = TimelineTrack('green track',
|
|
66 T(0, 0.2, blender=invquad),
|
|
67 T(5, 1.0, blender=smoove),
|
|
68 T(10, 0.8),
|
|
69 T(15, 0.6),
|
|
70 T(20, 0.0), default_frame='green')
|
|
71 track3 = TimelineTrack('tableau demo',
|
|
72 T(0, 0.0),
|
|
73 T(2, 1.0, blender=InstantEnd()),
|
|
74 T(18, 1.0),
|
|
75 T(20, 0.0), default_frame='blue')
|
|
76 track4 = TimelineTrack('MJ fader',
|
|
77 T(0, 0.0),
|
|
78 T(5, 1.0),
|
|
79 T(10, 0.0), default_frame='red')
|
|
80 bump21 = TimelineTrack('bump at 21',
|
|
81 T(0, 0),
|
|
82 T(20.4, 0.05),
|
|
83 T(20.7, 1),
|
|
84 T(25, 0.4),
|
|
85 T(31, 0),
|
|
86 T(31.1, 1),
|
|
87
|
|
88 default_frame='sill')
|
|
89
|
|
90 # tl = Timeline('test', [track1, track2, track3, track4])
|
|
91 tl = Timeline('test', [track4, bump21])
|
|
92
|
|
93 strobe1 = TimelineTrack('strobify',
|
|
94 T(0, 0, blender=Strobe(ontime=0.25, offtime=0.25)),
|
|
95 T(200, 1), default_frame='sill')
|
|
96
|
|
97 strobe_tl = Timeline('strobe test', [strobe1])
|
|
98
|
|
99 show = Show([tl, strobe_tl], Submasters())
|
|
100
|
|
101 if __name__ == "__main__":
|
|
102 show.set_timeline('test')
|
|
103 show.set_time(4)
|
|
104 print show.get_levels().get_levels()
|
|
105 print
|
|
106 print show.get_levels()
|