annotate flax/TheShow.py @ 15:c76b62eccdec

put **kw back in, they now go to the scale and can override the defaults. put **kw back in, they now go to the scale and can override the defaults. for our purposes, we probably want to edit the defaults so we don't have them in every call.
author dmcc
date Sun, 07 Jul 2002 06:18:40 +0000
parents 45b12307c695
children 5670f66845ce
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)
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 def get_timelines(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 "Get names of all timelines"
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 return self.timelines.keys()
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()