Changeset - 551f06733559
[Not reviewed]
default
0 2 0
David McClosky - 18 years ago 2007-06-15 23:05:21
dmcc@bigasterisk.com
bcf2000 and kc: sliders can be turned off
2 files changed with 26 insertions and 4 deletions:
0 comments (0 inline, 0 general)
bcf2000.py
Show inline comments
 
@@ -39,13 +39,13 @@ class BCF2000(object):
 
        loop = LoopingCall(self.poll)
 
        loop.start(.01)
 

	
 
    def poll(self):
 
        try:
 
            bytes = self.dev.read(3)
 
        except IOError, e:
 
        except (IOError, AttributeError):
 
            return
 
        if len(bytes) == 0:
 
            print "midi stall, reopen slider device"
 
            self.reopen()
 
            return
 
        self.packet += bytes
 
@@ -88,21 +88,27 @@ class BCF2000(object):
 
            for x in range(1,8+1):
 
                self.valueOut('button-upper%s' % x, value > x*15)
 
                self.valueOut('button-lower%s' % x, value > (x*15+7))
 

	
 
    def valueOut(self, name, value):
 
        """call this to send an event to the hardware"""
 
        if self.dev is None:
 
            return
 

	
 
        value = int(value)
 
        if self.lastValue.get(name) == value:
 
            return
 
        self.lastValue[name] = value
 
        which = [k for k,v in self.control.items() if v == name]
 
        assert len(which) == 1, "unknown control name %r" % name
 
        if isinstance(value, bool):
 
            value = value * 127
 
        #print "bcf: write %s %s" % (name, value)
 
        self.dev.write(chr(0xb0) + chr(which[0]) + chr(int(value)))
 
        
 

	
 
    def close(self):
 
        self.dev.close()
 
        self.dev = None
 

	
 
if __name__ == '__main__':
 
    b = BCF2000()
 
    reactor.run()
bin/keyboardcomposer
Show inline comments
 
@@ -82,16 +82,16 @@ class KeyboardComposer(Frame, SubClient)
 
                self.current_sub_levels, self.current_row = \
 
                    pickle.load(file('.keyboardcomposer.savedlevels'))
 
            except IOError:
 
                pass
 

	
 
        self.connect_to_hw(hw_sliders)
 
        self.draw_ui()
 
        self.draw_ui(hw_sliders)
 
        self.send_levels_loop()
 

	
 
    def draw_ui(self):
 
    def draw_ui(self, hw_sliders):
 
        self.rows = [] # this holds Tk Frames for each row
 
        self.slider_vars = {} # this holds subname:sub Tk vars
 
        self.slider_table = {} # this holds coords:sub Tk vars
 
        self.name_to_subtk.clear() # subname : SubmasterTk instance
 

	
 
        self.make_key_hints()
 
@@ -108,16 +108,32 @@ class KeyboardComposer(Frame, SubClient)
 
            command=self.refresh, bg='black', fg='white')
 
        self.refreshbutton.pack(side=LEFT)
 
        self.save_stage_button = Button(self.buttonframe, text="Save", 
 
            command=lambda: self.save_current_stage(self.sub_name.get()), 
 
            bg='black', fg='white')
 
        self.save_stage_button.pack(side=LEFT)
 
        self.sliders_status_var = IntVar()
 
        self.sliders_status_var.set(hw_sliders)
 
        self.sliders_checkbutton = Checkbutton(self.buttonframe, 
 
            text="Sliders", variable=self.sliders_status_var,
 
            command=lambda: self.toggle_slider_connectedness(),
 
            bg='black', fg='white')
 
        self.sliders_checkbutton.pack(side=LEFT)
 

	
 
        self.sub_name = Entry(self.buttonframe, bg='black', fg='white')
 
        self.sub_name.pack(side=LEFT)
 
        self.stop_frequent_update_time = 0
 

	
 
    def toggle_slider_connectedness(self):
 
        state = self.sliders_status_var.get()
 
        if state:
 
            self.sliders.reopen()
 
        else:
 
            self.sliders.close()
 
        self.change_row(self.current_row)
 
        self.rows[self.current_row].focus()
 
    def connect_to_hw(self, hw_sliders):
 
        if hw_sliders:
 
            self.sliders = Sliders(self)
 
        else:
 
            self.sliders = DummySliders()
 

	
0 comments (0 inline, 0 general)