Changeset - 79bc84310e80
[Not reviewed]
default
19 7 0
dmcc - 21 years ago 2003-07-08 16:19:55

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.
26 files changed with 228 insertions and 991 deletions:
0 comments (0 inline, 0 general)
flax/CueFaders.py
Show inline comments
 
@@ -3,6 +3,7 @@ import Tix as Tk
 
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 @@ class TimedGoButton(Tk.Frame):
 
            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 @@ class TimedGoButton(Tk.Frame):
 
        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 @@ class TimedGoButton(Tk.Frame):
 

	
 
            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 @@ class TimedGoButton(Tk.Frame):
 
        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 @@ class CueFader(Tk.Frame):
 
            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 @@ class CueFader(Tk.Frame):
 
        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 @@ class CueFader(Tk.Frame):
 
            # 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 CueFader(Tk.Frame):
 

	
 
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 @@ class CueList:
 
        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 @@ class CueEditron(Tk.Frame):
 
                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 @@ class CueEditron(Tk.Frame):
 
        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:
flax/KeyboardComposer.py
Show inline comments
 
@@ -241,7 +241,7 @@ if __name__ == "__main__":
 

	
 
    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:
flax/Submaster.py
Show inline comments
 
@@ -8,14 +8,17 @@ import Patch
 

	
 
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 @@ class Submaster:
 
        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 @@ class Submaster:
 
        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 @@ class Submaster:
 

	
 
        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"
flax/cues/cuelist1
Show inline comments
 
<?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: &quot;what&apos;s happening to the tradition?&quot;" />
 
        <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: &quot;what&apos;s happening to the tradition?&quot;" />
 
      </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="&quot;you&apos;ve gotta have heart&quot;" />
 
      </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: &quot;worklights, please&quot;" />
 
      </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="&quot;lights out!&quot;" />
 
      </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>
flax/dmxchanedit.py
Show inline comments
 
@@ -34,7 +34,7 @@ class Onelevel(tk.Frame):
 

	
 
        # 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')
flax/subs/song01
Show inline comments
 
deleted file
flax/subs/song02
Show inline comments
 
deleted file
flax/subs/song03
Show inline comments
 
deleted file
flax/subs/song04
Show inline comments
 
deleted file
flax/subs/song05
Show inline comments
 
deleted file
flax/subs/song06
Show inline comments
 
deleted file
flax/subs/song07
Show inline comments
 
deleted file
flax/subs/song08
Show inline comments
 
deleted file
flax/subs/song09
Show inline comments
 
deleted file
flax/subs/song10
Show inline comments
 
deleted file
flax/subs/song11
Show inline comments
 
deleted file
flax/subs/song12
Show inline comments
 
deleted file
flax/subs/song13
Show inline comments
 
deleted file
flax/subs/song14
Show inline comments
 
deleted file
flax/subs/song15
Show inline comments
 
deleted file
flax/subs/song16
Show inline comments
 
deleted file
flax/subs/song17
Show inline comments
 
deleted file
flax/subs/song18
Show inline comments
 
deleted file
flax/subs/song19
Show inline comments
 
deleted file
light8/dmxclient.py
Show inline comments
 
@@ -20,7 +20,8 @@ def outputlevels(levellist):
 
    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 @@ def outputlevels(levellist):
 
        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
light8/patchdata.py
Show inline comments
 
@@ -3,55 +3,52 @@ patch = {
 
    ('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,
 
}
0 comments (0 inline, 0 general)