annotate flax/TheShow.py @ 2381:3a2e58725037

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