Mercurial > code > home > repos > light9
changeset 167:79bc84310e80
changes from tonight's rehearsal:
changes from tonight's rehearsal:
- CueFader is closer to actually running the show, computes DMX levels
to send.
- KeyboardComposer is not a dummy. Use DMXDUMMY=1 to disable it.
- Submaster: subs can now be "temporary" -- i.e. they shouldn't be saved
or loaded. to save a temporary sub, make a copy of it with a proper name
since the computed name will be ugly.
Also, get_normalized_copy() and crossfade() methods added.
linear_fade helper (shouldn't be in Submaster, probably) added too.
- dmxchanedit: longer labels
- cuelist1 now has some bogus data in it and some crap removed
- dmxclient: now listens to the $DMXHOST and $DMXDUMMY env variables.
- patchdata: now up to date with this year's show
- danshow subs song{01..19}: removed. maybe we'll re-add them in an
archive directory.
author | dmcc |
---|---|
date | Tue, 08 Jul 2003 16:19:55 +0000 |
parents | 7ccf1d10804b |
children | f8b5cb5fbeed |
files | flax/CueFaders.py flax/KeyboardComposer.py flax/Submaster.py flax/cues/cuelist1 flax/dmxchanedit.py flax/subs/song01 flax/subs/song02 flax/subs/song03 flax/subs/song04 flax/subs/song05 flax/subs/song06 flax/subs/song07 flax/subs/song08 flax/subs/song09 flax/subs/song10 flax/subs/song11 flax/subs/song12 flax/subs/song13 flax/subs/song14 flax/subs/song15 flax/subs/song16 flax/subs/song17 flax/subs/song18 flax/subs/song19 light8/dmxclient.py light8/patchdata.py |
diffstat | 26 files changed, 228 insertions(+), 991 deletions(-) [+] |
line wrap: on
line diff
--- a/flax/CueFaders.py Tue Jul 08 09:19:10 2003 +0000 +++ b/flax/CueFaders.py Tue Jul 08 16:19:55 2003 +0000 @@ -3,6 +3,7 @@ import time from TreeDict import TreeDict, allow_class_to_be_pickled from TLUtility import enumerate +import Submaster cue_state_indicator_colors = { # bg fg @@ -79,11 +80,13 @@ bg='black', fg='white') self.timer_entry.pack(fill='y', side='left') self.disabled = (self.button['state'] == 'disabled') + self.fading = 0 def start_fade(self, end_level=1): try: fade_time = float(self.timer_var.get()) except ValueError: - # TODO figure out how to handle this + # since we use a control now, i don't think we need to worry about + # validation any more. print "can't fade -- bad time" return @@ -91,6 +94,7 @@ self.start_level = self.scale_to_fade.scale_var.get() self.end_level = end_level self.fade_length = fade_time + self.fading = 1 self.do_fade() def do_fade(self): diff = time.time() - self.start_time @@ -102,8 +106,11 @@ if newlevel != self.end_level: self.after(10, self.do_fade) + else: + self.fading = 0 else: self.scale_to_fade.scale_var.set(self.end_level) + self.fading = 0 def disable(self): if not self.disabled: self.button['state'] = 'disabled' @@ -116,6 +123,8 @@ self.timer_var.set(time) def get_time(self): return self.timer_var.get() + def is_fading(self): + return self.fading class CueFader(Tk.Frame): def __init__(self, master, cuelist): @@ -189,6 +198,7 @@ scale.scale.bind("<ButtonPress>", button_press) scale.scale.bind("<ButtonRelease>", button_release) faderframe.pack(side='bottom', fill='both', expand=1) + self.cues_as_subs = {} def get_scale_desc(self, val, name): go_button = self.go_buttons.get(name) if go_button: @@ -210,6 +220,12 @@ for scale_name, scale in self.scales.items(): scale.scale.set(0) self.cuelist.shift((-1, 1)[name == 'Next']) + + # now load the subs to fade between + for cue, name in zip(self.cuelist.get_current_cues(), + ('Prev', 'Cur', 'Next')): + self.cues_as_subs[name] = cue.get_levels_as_sub() + print "cues_as_subs", self.cues_as_subs def autoshift(self, name, scale): scale_val = scale.scale_var.get() @@ -237,6 +253,14 @@ # undo above work self.scales[d].enable() self.go_buttons[d].enable() + + cur_sub = self.cues_as_subs.get('Cur') + if cur_sub: + other_sub = self.cues_as_subs[name] + # print 'fade between %s and %s (%.2f)' % (cur_sub, other_sub, scale_val) + self.current_levels_as_sub = cur_sub.crossfade(other_sub, scale_val) + print "current levels", self.current_levels_as_sub.get_dmx_list() + # print def opposite_direction(self, d): if d == 'Next': return 'Prev' @@ -245,12 +269,37 @@ class Cue: """A Cue has a name, a time, and any number of other attributes.""" - def __init__(self, name, time=3, **attrs): + def __init__(self, name, time=3, sub_levels='', **attrs): self.name = name self.time = time + self.sub_levels = sub_levels self.__dict__.update(attrs) def __repr__(self): return "<Cue %s, length %s>" % (self.name, self.time) + def get_levels_as_sub(self): + """Get this Cue as a combined Submaster, normalized. This method + should not be called constantly, since it is somewhat expensive. It + will reload the submasters from disk, combine all subs together, and + then compute the normalized form.""" + subdict = {} + try: + print self, self.sub_levels + for line in self.sub_levels.split(','): + line = line.strip() + # print 'line', line + sub, scale = line.split(':') + # print 'sub', sub, 'scale', scale + sub = sub.strip() + scale = float(scale) + subdict[sub] = scale + # print 'subdict', subdict + except (ValueError, AttributeError): + print "parsing error when computing sub for", self + + s = Submaster.Submasters() + newsub = Submaster.sub_maxes(*[s[sub] * scale + for sub, scale in subdict.items()]) + return newsub.get_normalized_copy() empty_cue = Cue('empty') @@ -266,8 +315,8 @@ except IOError: self.treedict.cues = [] self.cues = self.treedict.cues - self.current_cue_index = 0 - self.next_pointer = None + self.current_cue_index = -1 + self.next_pointer = 0 self.prev_pointer = None import atexit @@ -465,7 +514,7 @@ pass def setup_editing_forms(self): self.variables = {} - for row, field in enumerate(('name', 'time', 'page', 'desc')): + for row, field in enumerate(('name', 'time', 'page', 'desc', 'sub_levels')): lab = Tk.Label(self, text=field, fg='white', bg='black') lab.grid(row=row, column=0, sticky='nsew') @@ -488,7 +537,7 @@ self.columnconfigure(1, weight=1) def fill_in_cue_info(self): self.enable_callbacks = 0 - for row, field in enumerate(('name', 'time', 'page', 'desc')): + for row, field in enumerate(('name', 'time', 'page', 'desc', 'sub_levels')): text = '' if self.cue: try:
--- a/flax/KeyboardComposer.py Tue Jul 08 09:19:10 2003 +0000 +++ b/flax/KeyboardComposer.py Tue Jul 08 16:19:55 2003 +0000 @@ -241,7 +241,7 @@ root = Tk() tl = toplevelat("Keyboard Composer", existingtoplevel=root) - kc = KeyboardComposer(tl, s, dmxdummy=1) + kc = KeyboardComposer(tl, s, dmxdummy=0) kc.pack(fill=BOTH, expand=1) atexit.register(kc.save) try:
--- a/flax/Submaster.py Tue Jul 08 09:19:10 2003 +0000 +++ b/flax/Submaster.py Tue Jul 08 16:19:55 2003 +0000 @@ -8,14 +8,17 @@ class Submaster: "Contain a dictionary of levels, but you didn't need to know that" - def __init__(self, name, leveldict=None): + def __init__(self, name, leveldict=None, temporary=0): self.name = name + self.temporary = temporary if leveldict: self.levels = leveldict else: self.levels = {} self.reload() def reload(self): + if self.temporary: + return try: self.levels.clear() subfile = file("subs/%s" % self.name) @@ -33,6 +36,9 @@ except IOError: print "Can't read file for sub: %s" % self.name def save(self): + if self.temporary: + return + subfile = file("subs/%s" % self.name, 'w') names = self.levels.keys() names.sort() @@ -52,7 +58,7 @@ return self.levels def __mul__(self, scalar): return Submaster("%s*%s" % (self.name, scalar), - dict_scale(self.levels, scalar)) + dict_scale(self.levels, scalar), temporary=1) __rmul__ = __mul__ def max(self, *othersubs): return sub_maxes(self, *othersubs) @@ -69,12 +75,45 @@ return levels def normalize_patch_names(self): + """Use only the primary patch names.""" # possibly busted -- don't use unless you know what you're doing self.set_all_levels(self.levels.copy()) + def get_normalized_copy(self): + """Get a copy of this sumbaster that only uses the primary patch + names. The levels will be the same.""" + newsub = Submaster("%s (normalized)" % self.name, temporary=1) + newsub.set_all_levels(self.levels) + return newsub + def crossfade(self, othersub, amount): + """Returns a new sub that is a crossfade between this sub and + another submaster. + + NOTE: You should only crossfade between normalized submasters.""" + otherlevels = othersub.get_levels() + keys_set = {} + for k in self.levels.keys() + otherlevels.keys(): + keys_set[k] = 1 + all_keys = keys_set.keys() + + xfaded_sub = Submaster("xfade", temporary=1) + for k in all_keys: + xfaded_sub.set_level(k, + linear_fade(self.levels.get(k, 0), + otherlevels.get(k, 0), + amount)) + + return xfaded_sub + +def linear_fade(start, end, amount): + """Fades between two floats by an amount. amount is a float between + 0 and 1. If amount is 0, it will return the start value. If it is 1, + the end value will be returned.""" + level = start + (amount * (end - start)) + return level def sub_maxes(*subs): return Submaster("max(%r)" % (subs,), - dict_max(*[sub.levels for sub in subs])) + dict_max(*[sub.levels for sub in subs]), temporary=1) class Submasters: "Collection o' Submaster objects"
--- a/flax/cues/cuelist1 Tue Jul 08 09:19:10 2003 +0000 +++ b/flax/cues/cuelist1 Tue Jul 08 16:19:55 2003 +0000 @@ -1,148 +1,160 @@ <?xml version="1.0"?> <!DOCTYPE PyObject SYSTEM "PyObjects.dtd"> <PyObject family="obj" type="builtin_wrapper" class="_EmptyClass"> -<attr name="__toplevel__" family="map" type="__compound__" extra="None TreeDict" id="138331628" > +<attr name="__toplevel__" family="map" type="__compound__" extra="None TreeDict" id="138432956" > <entry> <key type="string" value="cues" /> - <val type="list" id="139721548" > - <item type="PyObject" id="140191300" class="Cue"> + <val type="list" id="139794108" > + <item type="PyObject" id="140312100" class="Cue"> <attr name="desc" type="string" value="whoa - this works" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="3.2" /> <attr name="name" type="string" value="tevya special" /> - <attr name="page" type="string" value="3.2" /> + <attr name="sub_levels" type="string" value="green : 1.0" /> <attr name="time" type="string" value="0" /> </item> - <item type="PyObject" id="140191340" class="Cue"> - <attr name="desc" type="string" value="music flourish" /> - <attr name="some_attribute" type="numeric" value="3" /> + <item type="PyObject" id="139843388" class="Cue"> + <attr name="subdict" type="dict" id="140307292" > + </attr> <attr name="name" type="string" value="lady luck" /> - <attr name="page" type="string" value="1.1.5" /> <attr name="time" type="string" value="1" /> + <attr name="page" type="string" value="1.1.5" /> + <attr name="sub_levels" type="string" value="blue : 1.0, green : 0.5" /> + <attr name="desc" type="string" value="music flourish" /> </item> - <item type="PyObject" id="139672340" class="Cue"> - <attr name="desc" type="string" value="tevya: "what's happening to the tradition?"" /> - <attr name="some_attribute" type="numeric" value="3" /> + <item type="PyObject" id="139773172" class="Cue"> + <attr name="subdict" type="dict" id="139774164" > + </attr> <attr name="name" type="string" value="dolly solo" /> - <attr name="page" type="string" value="1.2.10" /> <attr name="time" type="string" value="2" /> + <attr name="page" type="string" value="1.2.10" /> + <attr name="sub_levels" type="string" value="blue : 0.1, green : 0.1" /> + <attr name="desc" type="string" value="tevya: "what's happening to the tradition?"" /> </item> - <item type="PyObject" id="140195900" class="Cue"> - <attr name="desc" type="string" value="the third cue" /> - <attr name="some_attribute" type="numeric" value="3" /> + <item type="PyObject" id="139793260" class="Cue"> + <attr name="subdict" type="dict" id="139774508" > + </attr> <attr name="name" type="string" value="cue 3" /> + <attr name="time" type="string" value="4" /> <attr name="page" type="string" value="1.2.14" /> - <attr name="time" type="string" value="41" /> + <attr name="sub_levels" type="string" value="red : 1" /> + <attr name="desc" type="string" value="the third cue" /> </item> - <item type="PyObject" id="139671436" class="Cue"> + <item type="PyObject" id="139775180" class="Cue"> + <attr name="subdict" type="dict" id="139774764" > + </attr> + <attr name="name" type="string" value="heart" /> <attr name="time" type="string" value="42" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="heart" /> <attr name="page" type="string" value="1.3.13" /> + <attr name="sub_levels" type="string" value="frontwhite : 0.2, red : 0.7" /> <attr name="desc" type="string" value=""you've gotta have heart"" /> </item> - <item type="PyObject" id="139673348" class="Cue"> + <item type="PyObject" id="140308580" class="Cue"> + <attr name="subdict" type="dict" id="140311956" > + </attr> + <attr name="name" type="string" value="more musical refs" /> <attr name="time" type="string" value="5" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="more musical refs" /> <attr name="page" type="string" value="1.3.17" /> + <attr name="sub_levels" type="string" value="blue : 1.0" /> <attr name="desc" type="string" value="etc." /> </item> - <item type="PyObject" id="139671036" class="Cue"> + <item type="PyObject" id="139772700" class="Cue"> + <attr name="subdict" type="dict" id="140311684" > + </attr> + <attr name="name" type="string" value="rainbow shimmer" /> <attr name="time" type="string" value="6" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="rainbow shimmer" /> <attr name="page" type="string" value="1.4.2" /> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value="curtain close" /> </item> - <item type="PyObject" id="138625292" class="Cue"> + <item type="PyObject" id="139774908" class="Cue"> + <attr name="subdict" type="dict" id="140310884" > + </attr> + <attr name="name" type="string" value="fade up" /> <attr name="time" type="string" value="7" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="fade up" /> <attr name="page" type="string" value="2.1.1" /> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value="stage manager: "worklights, please"" /> </item> - <item type="PyObject" id="140192780" class="Cue"> + <item type="PyObject" id="140311076" class="Cue"> + <attr name="subdict" type="dict" id="140310300" > + </attr> + <attr name="name" type="string" value="blackout" /> <attr name="time" type="string" value="8" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="blackout" /> <attr name="page" type="string" value="2.1.2" /> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value=""lights out!"" /> </item> - <item type="PyObject" id="139661388" class="Cue"> + <item type="PyObject" id="140304700" class="Cue"> + <attr name="subdict" type="dict" id="140302268" > + </attr> + <attr name="name" type="string" value="sill" /> <attr name="time" type="string" value="4.2" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="sill" /> <attr name="page" type="string" value="2.2.4" /> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value="another description" /> </item> - <item type="PyObject" id="139661252" class="Cue"> + <item type="PyObject" id="140309860" class="Cue"> <attr name="desc" type="string" value="mr. cue 10" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="2.7.3" /> <attr name="name" type="string" value="front only" /> - <attr name="page" type="string" value="2.7.3" /> + <attr name="sub_levels" type="string" value="" /> <attr name="time" type="string" value="10" /> </item> - <item type="PyObject" id="140192452" class="Cue"> + <item type="PyObject" id="140310788" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 11" /> - <attr name="page" type="string" value="" /> + <attr name="sub_levels" type="string" value="" /> <attr name="time" type="string" value="11" /> </item> - <item type="PyObject" id="139670252" class="Cue"> + <item type="PyObject" id="139762676" class="Cue"> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> - <attr name="name" type="string" value="cue 12" /> <attr name="page" type="string" value="" /> - <attr name="time" type="string" value="12" /> + <attr name="name" type="string" value="cue 12" /> + <attr name="time" type="string" value="2.1" /> </item> - <item type="PyObject" id="139670324" class="Cue"> + <item type="PyObject" id="140301540" class="Cue"> + <attr name="sub_levels" type="string" value="" /> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 13" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="13" /> </item> - <item type="PyObject" id="139670436" class="Cue"> + <item type="PyObject" id="140310636" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 14" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="14" /> </item> - <item type="PyObject" id="139670548" class="Cue"> + <item type="PyObject" id="140307748" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 15" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="15" /> </item> - <item type="PyObject" id="139664044" class="Cue"> + <item type="PyObject" id="140309436" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 16" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="16" /> </item> - <item type="PyObject" id="140194148" class="Cue"> + <item type="PyObject" id="140290764" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 17" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="17" /> </item> - <item type="PyObject" id="140185996" class="Cue"> + <item type="PyObject" id="140300196" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="some name" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="18" /> </item> - <item type="PyObject" id="139662308" class="Cue"> + <item type="PyObject" id="140301756" class="Cue"> <attr name="desc" type="string" value="" /> - <attr name="some_attribute" type="numeric" value="3" /> + <attr name="page" type="string" value="" /> <attr name="name" type="string" value="cue 19" /> - <attr name="page" type="string" value="" /> <attr name="time" type="string" value="19" /> </item> </val>
--- a/flax/dmxchanedit.py Tue Jul 08 09:19:10 2003 +0000 +++ b/flax/dmxchanedit.py Tue Jul 08 16:19:55 2003 +0000 @@ -34,7 +34,7 @@ # text description of channel self.desc_lab=tk.Label(self, text=Patch.get_channel_name(channelnum), - width=8, font=stdfont, anchor='w', + width=14, font=stdfont, anchor='w', padx=0, pady=0, bd=0, height=1, bg='black', fg='white') self.desc_lab.pack(side='left')
--- a/flax/subs/song01 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.81 -10 : 0.81 -11 : 0.81 -12 : 0.405 -2 : 0.81 -3 : 0.81 -4 : 0.81 -42 : 0.45 -43 : 0.45 -47 : 0.0 -48 : 0.0 -49 : 0.2646 -5 : 0.81 -50 : 0.245 -51 : 0.2744 -52 : 0.3332 -53 : 0.343 -54 : 0.3724 -55 : 0.1078 -57 : 0.4312 -59 : 0.588 -62 : 0.196 -64 : 0.343 -65 : 0.4214 -66 : 0.4312 -67 : 0.0 -7 : 0.81 -8 : 0.81 -9 : 0.81 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.63 -oran2 : 0.63 -oran3 : 0.63 -oran4 : 0.63 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.68 -upfill3 : 0.68 -upfill4 : 0.0
--- a/flax/subs/song02 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.25 -10 : 0.25 -11 : 0.25 -12 : 0.125 -2 : 0.25 -3 : 0.25 -4 : 0.25 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.25 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.25 -8 : 0.25 -9 : 0.25 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.27 -oran2 : 0.27 -oran3 : 0.27 -oran4 : 0.27 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.81 -red2 : 0.81 -red3 : 0.81 -red4 : 0.81 -sidefill1 : 0.41 -sidefill2 : 0.41 -upfill1 : 0.0 -upfill2 : 0.28 -upfill3 : 0.28 -upfill4 : 0.0
--- a/flax/subs/song03 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.56 -10 : 0.56 -11 : 0.56 -12 : 0.28 -2 : 0.56 -3 : 0.56 -4 : 0.56 -42 : 0.46 -43 : 0.46 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.56 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.56 -8 : 0.56 -9 : 0.56 -blue1 : 1.0 -blue2 : 1.0 -blue3 : 1.0 -blue4 : 1.0 -gree1 : 0.19 -gree2 : 0.285 -gree3 : 0.855 -gree4 : 0.76 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.17 -oran2 : 0.17 -oran3 : 0.17 -oran4 : 0.17 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.55 -red2 : 0.55 -red3 : 0.55 -red4 : 0.55 -sidefill1 : 0.56 -sidefill2 : 0.56 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song04 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.3 -10 : 0.3 -11 : 0.3 -12 : 0.15 -2 : 0.3 -3 : 0.3 -4 : 0.3 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.3 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.3 -8 : 0.3 -9 : 0.3 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.44 -oran2 : 0.44 -oran3 : 0.44 -oran4 : 0.44 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.84 -red2 : 0.84 -red3 : 0.84 -red4 : 0.84 -sidefill1 : 0.63 -sidefill2 : 0.63 -upfill1 : 0.0 -upfill2 : 0.25 -upfill3 : 0.25 -upfill4 : 0.0
--- a/flax/subs/song05 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -1 : 1 -2 : 1 -3 : 1 -4 : 1 -5 : 1 -7 : 1 -8 : 1 -9 : 1 -10 : 1 -11 : 1 -12 : 0.5
--- a/flax/subs/song06 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -1 : 1 -2 : 1 -3 : 1 -4 : 1 -5 : 1 -7 : 1 -8 : 1 -9 : 1 -10 : 1 -11 : 1 -12 : 0.5
--- a/flax/subs/song07 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -1 : 1 -2 : 1 -3 : 1 -4 : 1 -5 : 1 -7 : 1 -8 : 1 -9 : 1 -10 : 1 -11 : 1 -12 : 0.5
--- a/flax/subs/song08 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.0 -10 : 0.0 -11 : 0.0 -12 : 0.0 -2 : 0.0 -3 : 0.0 -4 : 0.0 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.0 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 1.0 -7 : 0.0 -8 : 0.0 -9 : 0.0 -blue1 : 0.77 -blue2 : 0.77 -blue3 : 0.77 -blue4 : 0.77 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.77 -red2 : 0.77 -red3 : 0.77 -red4 : 0.77 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song09 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.5 -10 : 0.5 -11 : 0.5 -12 : 0.25 -2 : 0.5 -3 : 0.5 -4 : 0.5 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.5 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.5 -8 : 0.5 -9 : 0.5 -blue1 : 1.0 -blue2 : 1.0 -blue3 : 1.0 -blue4 : 1.0 -gree1 : 0.068 -gree2 : 0.102 -gree3 : 0.306 -gree4 : 0.272 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.3 -oran2 : 0.3 -oran3 : 0.3 -oran4 : 0.3 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song10 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.5 -10 : 0.5 -11 : 0.5 -12 : 0.25 -2 : 0.5 -3 : 0.5 -4 : 0.5 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.5 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.5 -8 : 0.5 -9 : 0.5 -blue1 : 1.0 -blue2 : 1.0 -blue3 : 1.0 -blue4 : 1.0 -gree1 : 0.068 -gree2 : 0.102 -gree3 : 0.306 -gree4 : 0.272 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.3 -oran2 : 0.3 -oran3 : 0.3 -oran4 : 0.3 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song11 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -1 : 0.35 -10 : 0.35 -11 : 0.35 -12 : 0.175 -2 : 0.35 -3 : 0.35 -4 : 0.35 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.35 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.35 -8 : 0.35 -9 : 0.35 -blue1 : 1.0 -blue2 : 1.0 -blue3 : 1.0 -blue4 : 1.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 1.0 -red2 : 1.0 -red3 : 1.0 -red4 : 1.0 -sidefill1 : 0.25 -sidefill2 : 0.25 -upfill1 : 0.0 -upfill2 : 0.4 -upfill3 : 0.4 -upfill4 : 0.0
--- a/flax/subs/song12 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -main 2 : 0.43 -main 3 : 0.305 -main 4 : 1 -main 5 : 1 -main 7 : 0.835 -main 8 : 0.59 -main 9 : 1 -sidefill1 : 0.31 -sidefill2 : 0.06
--- a/flax/subs/song13 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -1 : 0.79 -10 : 0.79 -11 : 0.79 -12 : 0.395 -2 : 0.79 -3 : 0.79 -4 : 0.79 -42 : 1.0 -43 : 1.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.79 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.79 -8 : 0.79 -9 : 0.79 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -main 8 : 0.0 -main 9 : 0.0 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.62 -sidefill2 : 0.62 -upfill1 : 0.0 -upfill2 : 0.74 -upfill3 : 0.74 -upfill4 : 0.0
--- a/flax/subs/song14 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -1 : 0.0 -10 : 0.0 -11 : 0.0 -12 : 0.0 -2 : 0.0 -3 : 0.0 -4 : 0.0 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.0 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.0 -8 : 0.0 -9 : 0.0 -blue1 : 0.93 -blue2 : 0.93 -blue3 : 0.93 -blue4 : 0.93 -gree1 : 0.026 -gree2 : 0.039 -gree3 : 0.117 -gree4 : 0.104 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.089225 -main 3 : 0.0632875 -main 4 : 0.2075 -main 5 : 0.2075 -main 7 : 0.1732625 -main 8 : 0.122425 -main 9 : 0.2075 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.1 -red2 : 0.1 -red3 : 0.1 -red4 : 0.1 -sidefill1 : 0.064325 -sidefill2 : 0.01245 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song15 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -1 : 0.66 -10 : 0.66 -11 : 0.66 -12 : 0.33 -2 : 0.66 -3 : 0.66 -4 : 0.66 -42 : 0.72 -43 : 0.72 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.66 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.66 -8 : 0.66 -9 : 0.66 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -main 8 : 0.0 -main 9 : 0.0 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.64 -upfill3 : 0.64 -upfill4 : 0.0
--- a/flax/subs/song16 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -1 : 0.0 -10 : 0.0 -11 : 0.0 -12 : 0.0 -2 : 0.0 -3 : 0.0 -4 : 0.0 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.0 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.0 -8 : 0.0 -9 : 0.0 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.104 -gree2 : 0.156 -gree3 : 0.468 -gree4 : 0.416 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.3569 -main 3 : 0.25315 -main 4 : 0.83 -main 5 : 0.83 -main 7 : 0.69305 -main 8 : 0.4897 -main 9 : 0.83 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.4 -red2 : 0.4 -red3 : 0.4 -red4 : 0.4 -sidefill1 : 0.2573 -sidefill2 : 0.0498 -upfill1 : 0.0 -upfill2 : 0.0 -upfill3 : 0.0 -upfill4 : 0.0
--- a/flax/subs/song17 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -1 : 0.69 -10 : 0.69 -11 : 0.69 -12 : 0.345 -2 : 0.69 -3 : 0.69 -4 : 0.69 -42 : 0.0 -43 : 0.0 -47 : 0.0 -48 : 0.0 -49 : 0.0 -5 : 0.69 -50 : 0.0 -51 : 0.0 -52 : 0.0 -53 : 0.0 -54 : 0.0 -55 : 0.0 -57 : 0.0 -59 : 0.0 -62 : 0.0 -64 : 0.0 -65 : 0.0 -66 : 0.0 -67 : 0.0 -7 : 0.69 -8 : 0.69 -9 : 0.69 -blue1 : 0.0 -blue2 : 0.0 -blue3 : 0.0 -blue4 : 0.0 -gree1 : 0.0 -gree2 : 0.0 -gree3 : 0.0 -gree4 : 0.0 -house : 0.0 -main 10 : 0.0 -main 11 : 0.0 -main 2 : 0.0 -main 3 : 0.0 -main 4 : 0.0 -main 5 : 0.0 -main 7 : 0.0 -main 8 : 0.0 -main 9 : 0.0 -oran1 : 0.0 -oran2 : 0.0 -oran3 : 0.0 -oran4 : 0.0 -patio1 : 0.0 -patio2 : 0.0 -red1 : 0.0 -red2 : 0.0 -red3 : 0.0 -red4 : 0.0 -sidefill1 : 0.0 -sidefill2 : 0.0 -upfill1 : 0.0 -upfill2 : 0.57 -upfill3 : 0.57 -upfill4 : 0.0
--- a/flax/subs/song18 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -1 : 1 -2 : 1 -3 : 1 -4 : 1 -5 : 1 -7 : 1 -8 : 1 -9 : 1 -10 : 1 -11 : 1 -12 : 0.5
--- a/flax/subs/song19 Tue Jul 08 09:19:10 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -1 : 1 -2 : 1 -3 : 1 -4 : 1 -5 : 1 -7 : 1 -8 : 1 -9 : 1 -10 : 1 -11 : 1 -12 : 0.5
--- a/light8/dmxclient.py Tue Jul 08 09:19:10 2003 +0000 +++ b/light8/dmxclient.py Tue Jul 08 16:19:55 2003 +0000 @@ -20,7 +20,8 @@ global _dmx,_id if _dmx is None: - _dmx=xmlrpclib.Server("http://dash:8030") + host = os.getenv('DMXHOST', 'localhost') + _dmx=xmlrpclib.Server("http://%s:8030" % host) try: _dmx.outputlevels(_id,levellist) @@ -31,3 +32,9 @@ print "outputlevels had xml fault: %s" % e time.sleep(1) +dummy = os.getenv('DMXDUMMY') +if dummy: + print "dmxclient: DMX is in dummy mode." + def bogus(*args): + pass + outputlevels = bogus
--- a/light8/patchdata.py Tue Jul 08 09:19:10 2003 +0000 +++ b/light8/patchdata.py Tue Jul 08 16:19:55 2003 +0000 @@ -3,55 +3,52 @@ ('side l','sidepost1') : 45, # posts ('side r','sidepost2') : 46, - 'sidefill1' : 13, - 'sidefill2' : 14, - - ('patio1','main 1',) : 1, - ('main 2',) : 2, - ('main 3',) : 3, - ('main 4',) : 4, - ('main 5',) : 5, - ('god','main 6') : 6, - ('main 7',) : 7, - ('main 8',) : 8, - ('main 9',) : 9, - ('main 10',) : 10, - ('main 11',):11, - ('patio2','main 12',):12, - 'hotback':19, - - 'cycleft' : 43, - 'cycright' : 42, + ('god',) : 6, - 'house':68, - ('desk1' ,'b11'):54, # left bank over house - ('marry1' ,'b12'):53, - ('b13',):52, - ('hotbox1' ,'b14'):51, - ('edge' ,'b15'):50, - ('phone','b16'):49, - ('cuba1' ,'b21'):55, # mid bank - ('b22',):56, - ('b23',):57, - ('b24'):58, - ('b25'):59, - ('desk2' ,'b26'):60, - ('rock','b31'):61, # right bank - ('b32',):62, - ('hotbox2' ,'b33'):63, - ('b34',):64, - ('marry2' ,'b35'):65, - ('cuba2' ,'b36'):66, + 'house': 68, + ('ramp1','dolly-ramp-l','b11',): 54, # left bank over house + ('main-l-blue', 'b12',): 53, + ('ramp2', 'b13',): 52, + ('main-lc-fill', 'b14',): 51, + ('main-c1', 'b15',): 50, + ('main-r-red','b16',): 49, + ('ramp6','b21',): 55, # mid bank + ('ramp5','b22',): 56, + ('ramp0-stairs','b23',): 57, + ('main-c2', 'b24',): 58, + ('ramp9-stairs', 'stairs-r', 'b25',): 59, + ('ramp3', 'b26',): 60, + ('ramp4', 'b31',): 61, # right bank + ('main-l-red', 'b32',): 62, + ('main-c3', 'b33',): 63, + ('main-r-blue', 'b34',): 64, + ('ramp8', 'dolly-ramp-r', 'b35',) : 65, + ('ramp7', 'b36',): 66, + 'oran1':21, 'oran2':25, 'oran3':29, 'oran4':33, 'gree1':22, 'gree2':26, 'gree3':30, 'gree4':34, 'blue1':23, 'blue2':27, 'blue3':31, 'blue4':35, 'red1' :24, 'red2' :28, 'red3' :32, 'red4' :36, - 'upfill1' : 40, - 'upfill2' : 38, - 'upfill3' : 37, - 'upfill4' : 39, - 'cafe1': 15, - 'cafe2': 16, - 'dream':17, - 'xmas':41, + + # hello dolly + 'f1' : 1, + 'f1.5' : 3, + 'f2' : 4, + 'f3' : 5, + 'f4' : 7, + 'f5' : 8, + 'diag' : 9, + 'f6' : 10, + 'diag-back' : 11, + 'f7' : 12, + + 'downfill-left' : 13, + 'downfill-right' : 14, + 'l-scp' : 40, + 'r-scp' : 37, + 'upstairs above' : 39, + 'upstairs front' : 15, + 'storefill' : 17, + 'dayback' : 41, + 'judge' : 19, }