Esempio n. 1
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title = "Control Buses"
     self.app = app
     self.proxy = app.proxy
     self.parser = app.ls_parser
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     lab_title = factory.label(main, "Control Busses", modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list, command=self.select_bus)
     self.listbox.pack(expand=True, fill=BOTH)
     sb = factory.scrollbar(main, yclient=self.listbox)
     lab_name = factory.label(main, "Name", modal=True)
     lab_channels = factory.label(main, "Channels", modal=True)
     self._var_name = StringVar()
     entry_name = factory.entry(main,
                                self._var_name,
                                ttip="Control bus name")
     #self._var_chancount = StringVar()
     #spin_chancount = factory.int_spinbox(main, self._var_chancount, 1, 64)
     self.lab_warning = factory.warning_label(main, modal=True)
     button_bar = factory.frame(main, modal=True)
     #b_remove = factory.delete_button(button_bar,ttip="Delete control bus",command=self.remove_bus)
     b_add = factory.add_button(button_bar,
                                ttip="Add new control bus",
                                command=self.add_bus)
     #b_refresh = factory.refresh_button(button_bar, ttip="Refresh bus list", command=self.refresh)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_help = factory.help_button(button_bar, command=self.display_help)
     lab_title.grid(row=0, column=0, columnspan=6, pady=8)
     frame_list.grid(row=1, column=0, rowspan=5, columnspan=5, pady=8)
     sb.grid(row=1, column=4, rowspan=5, sticky=NS, pady=4, padx=4)
     lab_name.grid(row=6, column=0, sticky=W, padx=4)
     entry_name.grid(row=6, column=1)
     lab_channels.grid(row=7, column=0, sticky=W, pady=8, padx=4)
     #spin_chancount.grid(row=7, column=1)
     self.lab_warning.grid(row=8, column=0, columnspan=6)
     button_bar.grid(row=9, column=0, columnspan=6, padx=8, pady=4)
     #b_remove.grid(row=0, column=0)
     b_add.grid(row=0, column=1)
     #b_refresh.grid(row=0, column=2)
     b_help.grid(row=0, column=3)
     #factory.label(button_bar, "").grid(row=0, column=4, padx=16)
     factory.padding_label(button_bar).grid(row=0, column=4, padx=16)
     b_accept.grid(row=0, column=5)
     self._current_selection = 0
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     entry_name.bind('<Return>', self.add_bus)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.refresh()
     self.grab_set()
     self.mainloop()
Esempio n. 2
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title = "Control Buses"
     self.app = app
     self.proxy = app.proxy
     self.parser = app.ls_parser
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     lab_title = factory.label(main, "Control Busses", modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list, command=self.select_bus)
     self.listbox.pack(expand=True, fill=BOTH)
     sb = factory.scrollbar(main, yclient=self.listbox)
     lab_name = factory.label(main, "Name", modal=True)
     lab_channels = factory.label(main, "Channels", modal=True)
     self._var_name = StringVar()
     entry_name = factory.entry(main, self._var_name, ttip="Control bus name")
     #self._var_chancount = StringVar()
     #spin_chancount = factory.int_spinbox(main, self._var_chancount, 1, 64)
     self.lab_warning = factory.warning_label(main, modal=True)
     button_bar = factory.frame(main, modal=True)
     #b_remove = factory.delete_button(button_bar,ttip="Delete control bus",command=self.remove_bus)
     b_add = factory.add_button(button_bar, ttip="Add new control bus", command=self.add_bus)
     #b_refresh = factory.refresh_button(button_bar, ttip="Refresh bus list", command=self.refresh)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_help = factory.help_button(button_bar, command=self.display_help)
     lab_title.grid(row=0, column=0, columnspan=6, pady=8)
     frame_list.grid(row=1, column=0, rowspan=5, columnspan=5, pady=8)
     sb.grid(row=1, column=4, rowspan=5, sticky=NS, pady=4, padx=4)
     lab_name.grid(row=6, column=0, sticky=W, padx=4)
     entry_name.grid(row=6, column=1)
     lab_channels.grid(row=7, column=0, sticky=W, pady=8, padx=4)
     #spin_chancount.grid(row=7, column=1)
     self.lab_warning.grid(row=8, column=0, columnspan=6)
     button_bar.grid(row=9, column=0, columnspan=6, padx=8, pady=4)
     #b_remove.grid(row=0, column=0)
     b_add.grid(row=0, column=1)
     #b_refresh.grid(row=0, column=2)
     b_help.grid(row=0, column=3)
     #factory.label(button_bar, "").grid(row=0, column=4, padx=16)
     factory.padding_label(button_bar).grid(row=0, column=4, padx=16)
     b_accept.grid(row=0, column=5)
     self._current_selection = 0
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     entry_name.bind('<Return>', self.add_bus)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.refresh()
     self.grab_set()
     self.mainloop()
Esempio n. 3
0
    def _edit_remarks(self):
        bnk = self.synth.bank()
        name = bnk.name
        filename = bnk.filename
        remarks = bnk.remarks
        dialog = Toplevel(self)
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.center_label(frame, "Bank Info")
        lab_name = factory.label(frame, "Bank name :  '%s'" % name)
        lab_filename = factory.label(frame, "Filename :  '%s'" % filename)
        frame_text = factory.label_frame(frame, "Remarks")
        lab_title.grid(row=0, column=0, columnspan=3,pady=12)
        lab_name.grid(row=1, column=0, sticky="w", padx=4)
        lab_filename.grid(row=2, column=0, sticky="w", padx=4)
        frame_text.grid(row=3, column=0, columnspan=3, padx=4, pady=8)
        text_widget = factory.text_widget(frame_text, "Bank remarks")
        text_widget.insert('end', remarks)
        text_widget.config(width=80, height=20)
        vsb = factory.scrollbar(frame_text, orientation="vertical")
        hsb = factory.scrollbar(frame_text, orientation="horizontal")
        text_widget.grid(row=0, column=0, rowspan=8, columnspan=8, ipadx=4, ipady=4)
        vsb.grid(row=0, column=8, rowspan=8, columnspan=1, sticky="ns")
        hsb.grid(row=8, column=0, rowspan=1, columnspan=8, sticky="ew")
        vsb.config(command=text_widget.yview)
        hsb.config(command=text_widget.xview)
        text_widget.config(yscrollcommand=vsb.set)
        text_widget.config(xscrollcommand=hsb.set)

        frame_toolbar = factory.frame(frame, True)
        frame_toolbar.grid(row=4, column=0, padx=4, pady=8)

        def clear():
            text_widget.delete(1.0, 'end')

        def accept():
            rem = text_widget.get(1.0, 'end')
            bnk.remarks = rem
            self.status("Bank remarks updated")
            dialog.destroy()

        def cancel():
            self.status("Change bank remarks canceld")
            dialog.destroy()
            
        b_clear = factory.clear_button(frame_toolbar, command=clear, ttip="Clear remarks")
        b_accept = factory.accept_button(frame_toolbar, command=accept)
        b_cancel = factory.cancel_button(frame_toolbar, command=cancel)
        b_clear.grid(row=0, column=0, padx=4, pady=8)
        b_accept.grid(row=0, column=1)
        b_cancel.grid(row=0, column=2)
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 4
0
    def _edit_remarks(self):
        bnk = self.synth.bank()
        name = bnk.name
        filename = bnk.filename
        remarks = bnk.remarks
        dialog = Toplevel(self)
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.center_label(frame, "Bank Info")
        lab_name = factory.label(frame, "Bank name :  '%s'" % name)
        lab_filename = factory.label(frame, "Filename :  '%s'" % filename)
        frame_text = factory.label_frame(frame, "Remarks")
        lab_title.grid(row=0, column=0, columnspan=3,pady=12)
        lab_name.grid(row=1, column=0, sticky="w", padx=4)
        lab_filename.grid(row=2, column=0, sticky="w", padx=4)
        frame_text.grid(row=3, column=0, columnspan=3, padx=4, pady=8)
        text_widget = factory.text_widget(frame_text, "Bank remarks")
        text_widget.insert('end', remarks)
        text_widget.config(width=80, height=20)
        vsb = factory.scrollbar(frame_text, orientation="vertical")
        hsb = factory.scrollbar(frame_text, orientation="horizontal")
        text_widget.grid(row=0, column=0, rowspan=8, columnspan=8, ipadx=4, ipady=4)
        vsb.grid(row=0, column=8, rowspan=8, columnspan=1, sticky="ns")
        hsb.grid(row=8, column=0, rowspan=1, columnspan=8, sticky="ew")
        vsb.config(command=text_widget.yview)
        hsb.config(command=text_widget.xview)
        text_widget.config(yscrollcommand=vsb.set)
        text_widget.config(xscrollcommand=hsb.set)

        frame_toolbar = factory.frame(frame, True)
        frame_toolbar.grid(row=4, column=0, padx=4, pady=8)

        def clear():
            text_widget.delete(1.0, 'end')

        def accept():
            rem = text_widget.get(1.0, 'end')
            bnk.remarks = rem
            self.status("Bank remarks updated")
            dialog.destroy()

        def cancel():
            self.status("Change bank remarks canceld")
            dialog.destroy()
            
        b_clear = factory.clear_button(frame_toolbar, command=clear, ttip="Clear remarks")
        b_accept = factory.accept_button(frame_toolbar, command=accept)
        b_cancel = factory.cancel_button(frame_toolbar, command=cancel)
        b_clear.grid(row=0, column=0, padx=4, pady=8)
        b_accept.grid(row=0, column=1)
        b_cancel.grid(row=0, column=2)
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 5
0
    def __init__(self, master, sproxy):
        """
        Construct new TkSynthWindow

        master - The Tk container for self.  In practice this is an 
                 instance of llia.gui.tk.GroupWindow

        sproxy - An instance of llia.Proxy.
        """
        Frame.__init__(self, master)
        self.config(background=factory.bg())
        self.synth = sproxy
        self.synth.synth_editor = self
        self.app = sproxy.app
        self.sid = sproxy.sid
        self.group_index = -1
        factory.set_pallet(sproxy.specs["pallet"])
        main = factory.paned_window(self)
        main.pack(expand=True, fill="both")
        self.bank_editor = TkBankEditor(main, self, sproxy)
        self.bus_and_buffer_editor = None
        east = factory.frame(main)
        self.notebook = factory.notebook(east)
        self.notebook.pack(anchor="nw", expand=True, fill="both")
        south = factory.frame(east)
        south.pack(after=self.notebook, anchor="w", expand=True, fill="x")
        self._lab_status = factory.label(south, "<status>")
        self._lab_extended = factory.label(south, "")
        b_panic = factory.panic_button(south, command=self.panic)
        b_lower = factory.button(south, "-", command=self.lower_window)
        b_lift = factory.button(south, "+", command=self.lift_window)
        b_panic.grid(row=0, column=0)
        self._lab_status.grid(row=0, column=4, sticky='ew')
        self._lab_extended.grid(row=0,column=5,sticky='e',padx=16)
        self._lab_extended.config(fg="#f1f1cd")
        self._progressbar = Progressbar(south,mode="indeterminate")
        self._progressbar.grid(row=0,column=PROGRESSBAR_COLUMN, sticky='w', padx=8)
        south.config(background=factory.bg())
        main.add(self.bank_editor)
        main.add(east)
        self.list_channel = None
        self.list_keytab = None
        self.var_transpose = StringVar()
        self.var_keyrange_low = StringVar()
        self.var_keyrange_high = StringVar()
        self.var_bendrange = StringVar()
        self._init_midi_tab(self.notebook)
        self._init_map1_tab(self.notebook) # MIDI controllers and pitchwheel
        self._init_map2_tab(self.notebook) # velocity, aftertouch, keynumber
        self._init_info_tab(self.notebook)
        self._child_editors = {}
        self.update_progressbar(100, 0)
Esempio n. 6
0
 def _init_info_tab(self, master):
     img = factory.image("resources/Tabs/info.png")
     frame = factory.frame(master)
     inner_frame = factory.frame(frame)
     master.add(frame, text="Info", image=img,compound="top")
     text_widget = factory.text_widget(inner_frame)
     text_widget.config(width=120, height=40)
     vsb = factory.scrollbar(inner_frame, orientation='vertical')
     vsb.config(command=text_widget.yview)
     text_widget.config(yscrollcommand=vsb.set, wrap='word',)
     text_widget.grid(row=0, column=0,sticky="ewns")
     vsb.grid(row=0, column=1, sticky='ns')
     inner_frame.grid(row=0, column=0, rowspan=8, columnspan=8, sticky="ewns")
     self._info_text_widget = text_widget
Esempio n. 7
0
    def __init__(self, master, sproxy):
        Frame.__init__(self, master)
        self.config(background=factory.bg())
        self.synth = sproxy
        self.synth.synth_editor = self
        self.app = sproxy.app
        self.sid = sproxy.sid
        self.group_index = -1
        factory.set_pallet(sproxy.specs["pallet"])
        main = factory.paned_window(self)
        main.pack(expand=True, fill="both")
        self.bank_editor = TkBankEditor(main, self, sproxy)
        self.bus_and_buffer_editor = None
        east = factory.frame(main)
        self.notebook = factory.notebook(east)
        self.notebook.pack(anchor="nw", expand=True, fill="both")
        south = factory.frame(east)
        south.pack(after=self.notebook, anchor="w", expand=True, fill="x")
        # b_panic = factory.panic_button(south, command=self.panic)
        # b_clear_status = factory.clear_button(south, command=self.clear_status)
        # self._lab_status = factory.label(south, "<status>")
        # b_panic.grid(row=0, column=0, sticky='w')
        # b_clear_status.grid(row=0, column=1, sticky='w')
        # self._lab_status.grid(row=0, column=2, sticky='w', padx=8)

        self._lab_status = factory.label(south, "<status>")
        b_panic = factory.panic_button(south, command=self.panic)
        b_lower = factory.button(south, "-", command=self.lower_window)
        b_lift = factory.button(south, "+", command=self.lift_window)
        self._lab_status.grid(row=0, column=2, sticky='w', padx=8)
        b_panic.grid(row=0, column=0)
        self._lab_status.grid(row=0, column=3, sticky='w')
        
        south.config(background=factory.bg())
        main.add(self.bank_editor)
        main.add(east)
        self.list_channel = None
        self.list_keytab = None
        self.var_transpose = StringVar()
        self.var_keyrange_low = StringVar()
        self.var_keyrange_high = StringVar()
        self.var_bendrange = StringVar()
        self._init_info_tab(self.notebook)
        self._init_busconnection_tab(self.notebook)
        self._init_performance_tab(self.notebook)
        self._init_map1_tab(self.notebook) # MIDI controllers and pitchwheel
        self._init_map2_tab(self.notebook) # velocity, aftertouch, keynumber
        self._child_editors = {}
        self.sync()
Esempio n. 8
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.bg())
     config = app.config
     id_ = config["global-osc-id"]
     host, port = config['host'], config['port']
     client, cport = config['client'], config['client_port']
     midi_receiver = app.midi_receiver.port_name()
     midi_transmitter = "n/a" # FIX ME
     main = VFrame(self)
     main.pack(anchor="nw", expand=True, fill=BOTH)
     image = Image.open("resources/logos/llia_logo_medium.png")
     photo = ImageTk.PhotoImage(image)
     lab_logo = Label(main, image=photo)
     main.add(lab_logo)
     south = factory.frame(main)
     main.add(south)
     acc = "Llia Version %s.%s.%s \n" % VERSION[0:3]
     acc += "(c) 2016 Steven Jones\n\n"
     acc += "OSC ID      : %s\n" % id_
     acc += "OSC Host    : %-12s port : %s\n" % (host, port)
     acc += "OSC client  : %-12s port  : %s\n\n" % (client, cport)
     acc += "MIDI Receiver    : %s\n" % midi_receiver
     acc += "MIDI Transmitter : %s\n" % midi_transmitter
     tx = factory.read_only_text(south, acc)
     tx.pack(pady=32)
     self.grab_set()
     self.mainloop()
Esempio n. 9
0
 def __init__(self, master, param, editor, include_off=False, ttip=""):
     octaves =  [(3, "+3"),
                 (2, "+2"),
                 (1, "+1"),
                 (0, " 0"),
                 (-1, "-1"),
                 (-2, "-2"),
                 (-3, "-3")]
     if include_off:
         octaves.append((ZERO_FREQ, "Off"))
     frame = factory.frame(master)
     super(OscFrequencyControl, self).__init__(param, editor, frame)
     self.var_octave = tk.StringVar()
     self.var_octave.set(0)
     row = 1
     for value, text in octaves:
         rb = factory.radio(frame, text, self.var_octave, value, ttip,
                            command=self.callback)
         widget_key = "radio_coarse_%s" % value
         self._widgets[widget_key] = rb
         rb.grid(row = row, column=0, sticky="w")
         row += 1
     self.scale_fine = factory.scale(frame, command=self.callback, ttip="Fine Frequency Scale")
     self.scale_fine.grid(row=1, column=1, rowspan=row)
     self.lab_freq = factory.label(frame, "X.XXXX")
     self.lab_freq.grid(row=row+1, column=0, columnspan=2)
Esempio n. 10
0
 def __init__(self, canvas, paramobj):
     super(TkMutationStrip,self).__init__()
     self.paramobj = paramobj
     self.frame = factory.frame(canvas)
     lab_param = factory.label(self.frame, "%-16s" % paramobj.param)
     lab_param.config(width=17)
     lab_prob = factory.label(self.frame, "P")
     lab_range = factory.label(self.frame, "R")
     self.var_prob = StringVar()
     self.var_prob.set(10)   # as int percent 0..100
     self.var_range = StringVar()
     self.var_range.set(1)   # as int percent 0..100
     
     spin_prob = factory.int_spinbox(self.frame,
                                       self.var_prob,0.0,100,
                                       self._set_probability)
     spin_prob.config(width=6)
     spin_range = factory.int_spinbox(self.frame,
                                        self.var_range,0.0,100,
                                        self._set_range)
     spin_range.config(width=6)
     
     lab_param.grid(row=1,column=0, sticky="w", padx=4)
     lab_prob.grid(row=1,column=1, sticky="w", padx=4)
     spin_prob.grid(row=1,column=2, sticky="w", padx=4)
     lab_range.grid(row=1,column=3, sticky="w", padx=4)
     spin_range.grid(row=1,column=4, sticky="w", padx=4)
Esempio n. 11
0
 def __init__(self, master, param, editor, include_off=False, ttip=""):
     octaves =  [(3, "+3"),
                 (2, "+2"),
                 (1, "+1"),
                 (0, " 0"),
                 (-1, "-1"),
                 (-2, "-2"),
                 (-3, "-3")]
     if include_off:
         octaves.append((ZERO_FREQ, "Off"))
     frame = factory.frame(master)
     super(OscFrequencyControl, self).__init__(param, editor, frame)
     self.var_octave = tk.StringVar()
     self.var_octave.set(0)
     row = 1
     for value, text in octaves:
         rb = factory.radio(frame, text, self.var_octave, value, ttip,
                            command=self.callback)
         widget_key = "radio_coarse_%s" % value
         self._widgets[widget_key] = rb
         rb.grid(row = row, column=0, sticky="w")
         row += 1
     self.scale_fine = factory.scale(frame, command=self.callback, ttip="Fine Frequency Scale")
     self.scale_fine.grid(row=1, column=1, rowspan=row)
     self.lab_freq = factory.label(frame, "X.XXXX")
     self.lab_freq.grid(row=row+1, column=0, columnspan=2)
Esempio n. 12
0
 def _layout_env_time(self, master):
     var = Tkinter.StringVar()
     frame = factory.frame(master)
     frame.grid(row=1,column=3,sticky='n',padx=8)
     def select(n):
         rndgen.gen_config["env-time-hint"] = n
     rb_random = factory.radio(frame,"Random",var,7,
                               command=lambda : select(None))
     rb_ufast = factory.radio(frame,"Ultra Fast",var,ULTRA_FAST,
                              command=lambda : select(ULTRA_FAST))
     rb_fast = factory.radio(frame,"Fast",var,FAST,
                             command=lambda : select(FAST))
     rb_med =  factory.radio(frame,"Medium",var,MEDIUM,
                             command=lambda : select(MEDIUM))
     rb_slow = factory.radio(frame,"Slow",var,SLOW,
                             command=lambda : select(SLOW))
     rb_glac = factory.radio(frame,"Glacial",var,GLACIAL,
                             command=lambda : select(GLACIAL))
     lab = factory.label(frame,"Envelope Times")
     lab.grid(row=0,column=0,sticky='w')
     rb_random.grid(row=1,column=0,sticky='w')
     rb_ufast.grid(row=2,column=0,sticky='w')
     rb_fast.grid(row=3,column=0,sticky='w')
     rb_med.grid(row=4,column=0,sticky='w')
     rb_slow.grid(row=5,column=0,sticky='w')
     rb_glac.grid(row=6,column=0,sticky='w')
     self._var_env_changeup = Tkinter.StringVar()
     s = factory.scale(frame,from_=100,to=0,
                       var = self._var_env_changeup,
                       command=self._env_changeup_callback)
     lab = factory.label(frame,"Env Changeup")
     lab.grid(row=0,column=1,sticky='ew',padx=16)
     s.grid(row=1,column=1,rowspan=6,sticky='ns')
Esempio n. 13
0
 def _init_north_toolbar(self):
     frame = factory.frame(self)
     toolbar = factory.label_frame(frame, "Bank")
     specs = self.synth.specs
     format_ = specs["format"]
     sid = self.synth.sid
     logo_filename = os.path.join("resources", format_, "logo_small.png")
     lab_logo = factory.image_label(frame, logo_filename, format_)
     lab_sid = factory.label(frame, "ID = %s" % sid)
     b_open = factory.button(toolbar, "Open", ttip="Read bank file", 
                             command=self._open_bank)
     b_save = factory.button(toolbar, "Save", ttip="Save bank file", 
                             command=self._save_bank)
     b_init = factory.button(toolbar, "Init", ttip="Initialize bank", 
                             command=self._init_bank)
     b_rem = factory.button(toolbar, "Rem", ttip="Edit bank remarks", 
                            command=self._edit_remarks)
     b_help = factory.help_button(toolbar, command= self._help)
     b_open.grid(row=0, column=0, sticky="ew")
     b_save.grid(row=0, column=1, sticky="ew")
     b_init.grid(row=0, column=2, sticky="ew")
     b_rem.grid(row=1, column=0, sticky="ew")
     b_help.grid(row=1, column=1, sticky="ew")
     lab_logo.grid(row=0, column=0, sticky='w', pady=4)
     lab_sid.grid(row=0, column=1, columnspan=2)
     toolbar.grid(row=1, column=0, columnspan=2)
     return frame
Esempio n. 14
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.bg())
     config = app.config
     id_ = config["global-osc-id"]
     host, port = config['host'], config['port']
     client, cport = config['client'], config['client_port']
     midi_receiver = app.midi_receiver.port_name()
     midi_transmitter = "n/a"  # FIX ME
     main = VFrame(self)
     main.pack(anchor="nw", expand=True, fill=BOTH)
     image = Image.open("resources/logos/llia_logo_medium.png")
     photo = ImageTk.PhotoImage(image)
     lab_logo = Label(main, image=photo)
     main.add(lab_logo)
     south = factory.frame(main)
     main.add(south)
     acc = "Llia Version %s.%s.%s \n" % VERSION[0:3]
     acc += "(c) 2016 Steven Jones\n\n"
     acc += "OSC ID      : %s\n" % id_
     acc += "OSC Host    : %-12s port : %s\n" % (host, port)
     acc += "OSC client  : %-12s port  : %s\n\n" % (client, cport)
     acc += "MIDI Receiver    : %s\n" % midi_receiver
     acc += "MIDI Transmitter : %s\n" % midi_transmitter
     tx = factory.read_only_text(south, acc)
     tx.pack(pady=32)
     self.grab_set()
     self.mainloop()
Esempio n. 15
0
 def _layout_common_widgets(self):
     lab_head = factory.label(self.canvas,"Porgram Mutation")
     lab_head.grid(row=0, column=0, columnspan=4, pady=16, padx=16)
     lab_help = factory.label(self.canvas,"P = Probability of change, R = Maximum change.")
     lab_help.grid(row=0,column=4,columnspan=4, sticky='w', padx=16)
     
     frame = factory.frame(self.canvas)
     frame.grid(row=1,column=0,rowspan=15, columnspan=4,pady=16)
     b_mutate = factory.button(frame,"Mutate",command=self.mutate)
     lab_slot = factory.label(frame,"Slot")
     sb_slot = factory.int_spinbox(frame,self._var_fill_start,from_=0,to=127)
     sb_slot.config(width=4)
     sb_slot.config(command=self._link_slots)
     b_reset = factory.button(frame,"Reset",command=self.reset)
     b_zero = factory.button(frame,"Zero",command=self.zero)
     b_max = factory.button(frame,"Max",command=self.max_change)
     b_mutate.grid(row=1,column=0, columnspan=3,sticky="ew", padx=4, pady=6)
     lab_slot.grid(row=2,column=0,sticky="w", padx=4)
     sb_slot.grid(row=2,column=2,sticky="e", padx=4, pady=6)
     #  Fill controls
     lab_fill = factory.label(frame,"Fill to:")
     sb_end = factory.int_spinbox(frame,self._var_fill_end,from_=0,to=127)
     sb_end.config(width=4)
     cb_progressive = factory.checkbutton(frame,"+", var=self._var_progressive_fill)
     lab_fill.grid(row=5,column=0,sticky="e",padx=4,pady=6)
     cb_progressive.grid(row=6,column=0,sticky="w")
     sb_end.grid(row=6,column=2,sticky='e')
     pad1 = factory.padding_label(frame)
     pad1.grid(row=7,column=0,pady=64)
     b_reset.grid(row=8,column=0,columnspan=3,sticky="ew", padx=4)
     b_zero.grid(row=9,column=0,columnspan=3,sticky="ew",padx=4,pady=4)
     b_max.grid(row=10,column=0,columnspan=3,sticky="ew",padx=4)
     pad2 = factory.padding_label(frame)
Esempio n. 16
0
 def _init_north_toolbar(self):
     frame = factory.frame(self)
     toolbar = factory.label_frame(frame, "Bank")
     specs = self.synth.specs
     format_ = specs["format"]
     sid = self.synth.sid
     logo_filename = os.path.join("resources", format_, "logo_small.png")
     lab_logo = factory.image_label(frame, logo_filename, format_)
     lab_sid = factory.label(frame, "ID = %s" % sid)
     b_open = factory.button(toolbar, "Open", ttip="Read bank file", 
                             command=self._open_bank)
     b_save = factory.button(toolbar, "Save", ttip="Save bank file", 
                             command=self._save_bank)
     b_init = factory.button(toolbar, "Init", ttip="Initialize bank", 
                             command=self._init_bank)
     b_rem = factory.button(toolbar, "Rem", ttip="Edit bank remarks", 
                            command=self._edit_remarks)
     b_help = factory.help_button(toolbar, command= self._help)
     b_open.grid(row=0, column=0, sticky="ew")
     b_save.grid(row=0, column=1, sticky="ew")
     b_init.grid(row=0, column=2, sticky="ew")
     b_rem.grid(row=1, column=0, sticky="ew")
     b_help.grid(row=1, column=1, sticky="ew")
     lab_logo.grid(row=0, column=0, sticky='w', pady=4)
     lab_sid.grid(row=0, column=1, columnspan=2)
     toolbar.grid(row=1, column=0, columnspan=2)
     return frame
Esempio n. 17
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.pallet("DIALOG-BG"))
     self.wm_title = "MIDI Controllers"
     self.app = app
     self.config = app.config()
     self.parser = app.ls_parser
     self._current_controller=0
     self._save_backup()
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     main.pack_propagate(False)
     lab_title = factory.label(main, "MIDI Controller Names", modal=True)
     self.lab_warning = factory.warning_label(main, "", modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list, command=self.select_controller)
     self.listbox.pack(expand=True, fill=BOTH)
     sb = factory.scrollbar(main, yclient=self.listbox)
     self.refresh()
     self.var_name = StringVar()
     entry_name = factory.entry(main, self.var_name)
     button_bar = factory.frame(main, modal=True)
     b_refresh = factory.refresh_button(button_bar, command=self.refresh)
     b_help = factory.help_button(button_bar, command = self.display_help)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_cancel = factory.cancel_button(button_bar, command=self.cancel)
     lab_title.grid(row=0, column=0, columnspan=4, pady=8)
     frame_list.grid(row=1, column=0, rowspan=6, columnspan=4, sticky=N)
     sb.grid(row=1, column=4, rowspan=6, sticky=NS, padx=4)
     factory.label(main, "Name", modal=True).grid(row=7, column=0, padx=4, sticky="w")
     entry_name.grid(row=7, column=1, columnspan=1, sticky=W, padx=4, pady=8)
     self.lab_warning.grid(row=8, column=0, columnspan=5, sticky=W)
     button_bar.grid(row=9, column=0, columnspan=5, sticky=EW, padx=4, pady=4)
     b_refresh.grid(row=0, column=0)
     b_help.grid(row=0, column=1)
     b_accept.grid(row=0, column=2)
     b_cancel.grid(row=0, column=3)
     entry_name.bind('<Return>', self.change_name)
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.protocol("WM_DELETE_WINDOW", None)
     self.grab_set()
     self.mainloop()
Esempio n. 18
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.bg())
     self.wm_title("Lliascript History")
     self.app = app
     self.filename = ""
     toolbar = factory.frame(self)
     south = factory.frame(self)
     toolbar.pack(side=TOP, anchor=NW, expand=True, fill=X)
     south.pack(anchor=SW, expand=True, fill=BOTH)
     b_open = factory.button(toolbar,
                             "Open",
                             ttip="Open lliascript file",
                             command=self.open_lliascript_file)
     b_save = factory.button(toolbar,
                             "Save",
                             ttip="Save lliascript file",
                             command=self.save_lliascript_file)
     b_exec = factory.button(toolbar,
                             "Exec",
                             ttip="Execute text",
                             command=self.exec_)
     b_compose = factory.button(toolbar,
                                "Compose",
                                ttip="Build script from current state",
                                command=self.compose_current_state)
     b_help = factory.help_button(toolbar)
     b_help.config(command=self.help_)
     b_open.pack(side=LEFT, expand=True, fill=X)
     b_save.pack(side=LEFT, expand=True, fill=X)
     b_exec.pack(side=LEFT, expand=True, fill=X)
     b_compose.pack(side=LEFT, expand=True, fill=X)
     b_help.pack(side=LEFT, expand=True, fill=X)
     self.text_widget = factory.text_widget(south, modal=True)
     sb1 = factory.scrollbar(south)
     sb2 = factory.scrollbar(south, orientation="horizontal")
     sb1.config(command=self.text_widget.yview)
     sb2.config(command=self.text_widget.xview)
     self.text_widget.config(yscrollcommand=sb1.set)
     self.text_widget.config(xscrollcommand=sb2.set)
     self.text_widget.grid(row=0, column=0, rowspan=5, columnspan=5)
     sb1.grid(row=0, column=5, rowspan=5, sticky=NS)
     sb2.grid(row=5, column=0, columnspan=5, sticky=EW)
     self._get_current_history()
     self.grab_set()
     self.mainloop()
Esempio n. 19
0
 def _create_compund_tab(self,text,image_filename):
     try:
         icon = factory.image(image_filename)
         f = factory.frame(self.notebook)
         self.notebook.add(f,text=text,image=icon,compound="top")
         return f
     except IOError:
         msg = "IOError while loaidng image file '%s'" % image_filename
         print(msg)
         return self._create_basic_tab(text)
Esempio n. 20
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title = "MIDI Channels"
     self.app = app
     self.config = app.config
     self.parser = app.ls_parser
     self._current_index=0
     self._save_backup()
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     lab_title = factory.dialog_title_label(main, "MIDI Channels", modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list, command=self.select)
     self.listbox.pack(expand=True, fill=BOTH)
     self.lab_warning = factory.warning_label(main)
     self.var_name = StringVar()
     entry_name = factory.entry(main, self.var_name)
     button_bar = factory.frame(main, modal=True)
     b_refresh = factory.refresh_button(button_bar, command=self.refresh)
     b_help = factory.help_button(button_bar, command=self.display_help)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_cancel = factory.cancel_button(button_bar, command=self.cancel)
     b_refresh.grid(row=0, column=0)
     b_help.grid(row=0, column=1)
     b_accept.grid(row=0, column=2)
     b_cancel.grid(row=0, column=3)
     lab_title.grid(row=0, column=0, columnspan=5, pady=8)
     frame_list.grid(row=1, column=0, rowspan=5, columnspan=6, padx=4, pady=8)
     factory.label(main, text="Name", modal=True).grid(row=6, column=0)
     entry_name.grid(row=6, column=1, columnspan=4, sticky=W, padx=4, pady=0)
     self.lab_warning.grid(row=7, column=0, columnspan=5, sticky=W, padx=4, pady=8)
     button_bar.grid(row=8, column=0, columnspan=5, sticky=EW, padx=4, pady=8)
     self.refresh()
     self.protocol("WM_DELETE_WINDOW", None) # ISSUE: Not Working
     entry_name.bind('<Return>', self.change_name)
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.grab_set()
     self.mainloop()
Esempio n. 21
0
 def _create_compund_tab(self,text,image_filename):
     try:
         icon = factory.image(image_filename)
         f = factory.frame(self.notebook)
         self.notebook.add(f,text=text,image=icon,compound="top")
         return f
     except IOError:
         msg = "IOError while loading image file '%s'" % image_filename
         print(msg)
         return self._create_basic_tab(text)
Esempio n. 22
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title("Llia Buffers")
     self.tbl = TkBufferList(self, app)
     self.tbl.pack(anchor=NW, expand=True, fill=BOTH)
     button_bar = factory.frame(self)
     button_bar.pack(side=BOTTOM, anchor=W, expand=True, fill=X)
     b_refresh = factory.refresh_button(button_bar, command=self.tbl.refresh)
     b_accept = factory.accept_button(button_bar, command=self.destroy)
     b_refresh.pack(side=LEFT)
     b_accept.pack(side=RIGHT)
     self.grab_set()
     self.mainloop()
Esempio n. 23
0
 def _init_list_frame(self):
     frame = factory.frame(self)
     lbx = factory.listbox(frame)
     sbar = factory.scrollbar(frame, orientation="vertical")
     lbx.pack(side="left", expand=True, fill="both")
     sbar.pack(after=lbx, side="right", expand=True, fill="y")
     lbx.config(yscrollcommand=sbar.set)
     lbx.bind("<<ListboxSelect>>", self._select_slot)
     lbx.bind("<Up>", self._decrement_selection)
     lbx.bind("<Down>", self._increment_selection)
     sbar.config(command = lbx.yview)
     self.listbox = lbx
     return frame
Esempio n. 24
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.bg())
     self.wm_title("Lliascript History")
     self.app = app
     self.filename = ""
     toolbar = factory.frame(self)
     south = factory.frame(self)
     toolbar.pack(side=TOP, anchor=NW, expand=True, fill=X)
     south.pack(anchor=SW, expand=True, fill=BOTH)
     b_open = factory.button(toolbar, "Open", ttip="Open lliascript file",
                             command=self.open_lliascript_file)
     b_save = factory.button(toolbar, "Save", ttip="Save lliascript file",
                             command=self.save_lliascript_file)
     b_exec = factory.button(toolbar, "Exec", ttip="Execute text",
                             command=self.exec_)
     b_compose = factory.button(toolbar, "Compose",
                                ttip="Build script from current state",
                                command=self.compose_current_state)
     b_help = factory.help_button(toolbar)
     b_help.config(command=self.help_)
     b_open.pack(side=LEFT, expand=True, fill=X)
     b_save.pack(side=LEFT, expand=True, fill=X)
     b_exec.pack(side=LEFT, expand=True, fill=X)
     b_compose.pack(side=LEFT, expand=True, fill=X)
     b_help.pack(side=LEFT, expand=True, fill=X)
     self.text_widget = factory.text_widget(south, modal=True)
     sb1 = factory.scrollbar(south)
     sb2 = factory.scrollbar(south, orientation="horizontal")
     sb1.config(command=self.text_widget.yview)
     sb2.config(command=self.text_widget.xview)
     self.text_widget.config(yscrollcommand = sb1.set)
     self.text_widget.config(xscrollcommand = sb2.set)
     self.text_widget.grid(row=0, column=0, rowspan=5, columnspan=5)
     sb1.grid(row=0, column=5, rowspan=5, sticky=NS)
     sb2.grid(row=5, column=0, columnspan=5, sticky=EW)
     self._get_current_history()
     self.grab_set()
     self.mainloop()
Esempio n. 25
0
 def _init_info_tab(self, master):
     img = factory.image("resources/Tabs/info.png")
     frame = factory.frame(master)
     inner_frame = factory.frame(frame)
     master.add(frame, text="Info", image=img,compound="top")
     text_widget = factory.text_widget(inner_frame)
     text_widget.config(width=90, height=40)
     vsb = factory.scrollbar(inner_frame, orientation='vertical')
     vsb.config(command=text_widget.yview)
     hsb = factory.scrollbar(inner_frame, orientation='horizontal')
     hsb.config(command=text_widget.xview)
     text_widget.config(yscrollcommand=vsb.set, xscrollcommand=hsb.set,
                        wrap='word',)
     text_widget.grid(row=0, column=0, rowspan=8, columnspan=8)
     vsb.grid(row=0, column=9, rowspan=8, columnspan=1, sticky='ns')
     hsb.grid(row=9, column=0, rowspan=1, columnspan=8, stick='we')
     inner_frame.grid(row=0, column=0, rowspan=8, columnspan=8)
     b_update = factory.button(frame, "Update",
                               command=self.sync_program_tab)
     b_update.grid(row=9, column=0, sticky='ew', pady=8)
     b_remove = factory.button(frame, "Remove Synth", command=self.remove_synth)
     b_remove.grid(row=9, column=1, sticky='ew', pady=8)
     self._info_text_widget = text_widget
Esempio n. 26
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title("Llia Buffers")
     self.tbl = TkBufferList(self, app)
     self.tbl.pack(anchor=NW, expand=True, fill=BOTH)
     button_bar = factory.frame(self)
     button_bar.pack(side=BOTTOM, anchor=W, expand=True, fill=X)
     b_refresh = factory.refresh_button(button_bar,
                                        command=self.tbl.refresh)
     b_accept = factory.accept_button(button_bar, command=self.destroy)
     b_refresh.pack(side=LEFT)
     b_accept.pack(side=RIGHT)
     self.grab_set()
     self.mainloop()
Esempio n. 27
0
 def __init__(self, app, root, name=""):
     Toplevel.__init__(self, root)
     self.root = root
     main = factory.frame(self)
     main.pack(expand=True, fill="both")
     self.app = app
     if not name:
         name = "Group_%d" % self.instance_counter
     self.name = str(name)
     GroupWindow.instance_counter += 1
     self.notebook = factory.notebook(main)
     self.notebook.pack(expand=True, fill="both")
     self.protocol("WM_DELETE_WINDOW", self.on_closing)
     self.bind("<Destroy>", self.on_closing)
     self.withdraw() # hide initially
Esempio n. 28
0
    def _fill_performance(self):
        bnk = self.synth.bank()
        dialog = Toplevel(self)
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.label(frame, "Fill Performance", modal=True)
        lab_start = factory.label(frame, "Starting slot", modal=True)
        lab_end = factory.label(frame, "Ending slot", modal=True)
        var_start = StringVar()
        var_end = StringVar()
        spin_start = factory.int_spinbox(frame, var_start, 0, len(bnk))
        spin_end = factory.int_spinbox(frame, var_end, 0, len(bnk))
        var_start.set(bnk.current_slot)
        var_end.set(bnk.current_slot+1)
        lab_title.grid(row=0, column=0, columnspan=3, padx=4, pady=8)
        lab_start.grid(row=1, column=0, sticky="w", padx=4)
        spin_start.grid(row=1, column=1, columnspan=2, padx=4)
        lab_end.grid(row=2, column=0, sticky="w", padx=4)
        spin_end.grid(row=2, column=1, columnspan=2, padx=4)

        def accept():
            try:
                a,b = int(var_start.get()), int(var_end.get())
                bnk.fill_performance(a,b)
                msg = "Performance filled slots [%3d, %3d]" % (a,b)
                self.status(msg)
                dialog.destroy()
            except ValueError:
                msg = "Invalid slot number"
                self.warning(msg)
            except KeyError as err:
                self.warning(err.message)
                

        def cancel():
            msg = "Performance fill canceld"
            self.status(msg)
            dialog.destroy()
            
        b_accept = factory.accept_button(frame, command=accept)
        b_cancel = factory.cancel_button(frame, command=cancel)
        b_accept.grid(row=3, column=1, padx=4, pady=8,sticky="ew")
        b_cancel.grid(row=3, column=2, padx=4, pady=8,sticky="ew")
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 29
0
    def _fill_performance(self):
        bnk = self.synth.bank()
        dialog = Toplevel(self)
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.label(frame, "Fill Performance", modal=True)
        lab_start = factory.label(frame, "Starting slot", modal=True)
        lab_end = factory.label(frame, "Ending slot", modal=True)
        var_start = StringVar()
        var_end = StringVar()
        spin_start = factory.int_spinbox(frame, var_start, 0, len(bnk))
        spin_end = factory.int_spinbox(frame, var_end, 0, len(bnk))
        var_start.set(bnk.current_slot)
        var_end.set(bnk.current_slot+1)
        lab_title.grid(row=0, column=0, columnspan=3, padx=4, pady=8)
        lab_start.grid(row=1, column=0, sticky="w", padx=4)
        spin_start.grid(row=1, column=1, columnspan=2, padx=4)
        lab_end.grid(row=2, column=0, sticky="w", padx=4)
        spin_end.grid(row=2, column=1, columnspan=2, padx=4)

        def accept():
            try:
                a,b = int(var_start.get()), int(var_end.get())
                bnk.fill_performance(a,b)
                msg = "Performance filled slots [%3d, %3d]" % (a,b)
                self.status(msg)
                dialog.destroy()
            except ValueError:
                msg = "Invalid slot number"
                self.warning(msg)
            except KeyError as err:
                self.warning(err.message)
                

        def cancel():
            msg = "Performance fill canceld"
            self.status(msg)
            dialog.destroy()
            
        b_accept = factory.accept_button(frame, command=accept)
        b_cancel = factory.cancel_button(frame, command=cancel)
        b_accept.grid(row=3, column=1, padx=4, pady=8,sticky="ew")
        b_cancel.grid(row=3, column=2, padx=4, pady=8,sticky="ew")
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 30
0
 def __init__(self, app, root, name=""):
     title = "LLia Group Window %s" % self.instance_counter
     Toplevel.__init__(self, root)
     AbstractGroupWindow.__init__(self, app,root,name)
     self.title(title)
     self.root = root
     main = factory.frame(self)
     main.pack(expand=True, fill="both")
     self.app = app
     if not name:
         name = "Group_%d" % self.instance_counter
     self.name = str(name)
     GroupWindow.instance_counter += 1
     self.notebook = factory.notebook(main)
     self.notebook.pack(expand=True, fill="both")
     self.protocol("WM_DELETE_WINDOW", self._on_closing)
     self.bind("<Destroy>", self.on_closing)
     self.withdraw() # hide initially
Esempio n. 31
0
 def _layout_engion_selection(self, master):
     var = Tkinter.StringVar()
     frame = factory.frame(master)
     frame.grid(row=1,column=1,sticky='n',padx=8)
     rb_gen_random = factory.radio(frame,"Random",
                                   var,"Random",
                                   command = lambda : rndgen.set_engion("random"))
     rb_gen_basic = factory.radio(frame,"Basic",
                                  var,"Basic",
                                  command = lambda : rndgen.set_engion("basic"))
     rb_gen_chorus = factory.radio(frame,"Chorus",
                                  var,"Chorus",
                                  command = lambda : rndgen.set_engion("chorus"))
     lab = factory.label(frame,"Engion")
     lab.grid(row=0,column=0,sticky='w')
     rb_gen_random.grid(row=1,column=0,sticky='w')
     rb_gen_basic.grid(row=2,column=0,sticky='w')
     rb_gen_chorus.grid(row=3,column=0,sticky='w')
Esempio n. 32
0
 def _layout_slider_panel(self,master):
     frame = factory.frame(master)
     frame.grid(row=1,column=4,sticky='n',padx=8)
     self._var_harmonic = Tkinter.StringVar()
     self._var_deepmod = Tkinter.StringVar()
     self._var_feedback = Tkinter.StringVar()
     lab = factory.label(frame,"Harmonic")
     lab.grid(row=0,column=0,sticky='ew',padx=16)
     lab = factory.label(frame,"Modulation")
     lab.grid(row=0,column=1,sticky='ew',padx=16)
     lab = factory.label(frame,"Feedback")
     lab.grid(row=0,column=2,sticky='ew',padx=16)
     sh = factory.scale(frame,from_=100,to=0,
                        var = self._var_harmonic,
                        command = self._harmonic_callback)
     sm = factory.scale(frame,from_=100,to=0,
                        var = self._var_deepmod,
                        command = self._deepmod_callback)
     sf = factory.scale(frame,from_=100,to=0,
                        var = self._var_feedback,
                        command = self._feedback_callback)
     sh.grid(row=1,column=0,rowspan=6,sticky='ns')
     sm.grid(row=2,column=1,rowspan=6,sticky='ns')
     sf.grid(row=3,column=2,rowspan=6,sticky='ns')
Esempio n. 33
0
 def _init_list_frame(self):
     frame = factory.frame(self)
     lbx = factory.listbox(frame)
     sbar = factory.scrollbar(frame, orientation="vertical")
     # lbx.pack(side="left", expand=True, fill="both")
     # sbar.pack(after=lbx, side="right", expand=True, fill="y")
     lbx.config(yscrollcommand=sbar.set)
     lbx.bind("<<ListboxSelect>>", self._select_slot)
     lbx.bind("<Up>", self._decrement_selection)
     lbx.bind("<Down>", self._increment_selection)
     sbar.config(command = lbx.yview)
     self.listbox = lbx
     self.cbExtend = factory.checkbutton(frame,"Extend",self._var_extend_enable,
                                         command = self._cbextended_callback)
     self.sbExtend = factory.int_spinbox(frame,self._var_extend_count,
                                         from_=0,to=self.synth.voice_count,
                                         command = self._sbextended_callback)
     self.sbExtend.config(width=2)
     lbx.grid(row=0,column=0,rowspan=3,columnspan=2,sticky="ewns")
     sbar.grid(row=0,column=2,rowspan=3,columnspan=1,sticky="ns")
     if self.synth.keymode in constants.SUPPORTS_EXTENDED_PROGRAMS:
         self.cbExtend.grid(row=3,column=0,stick="w",pady=4,padx=4)
         self.sbExtend.grid(row=3,column=1,sticky='w')
     return frame
Esempio n. 34
0
 def _layout_env_type(self, master):
     var = Tkinter.StringVar()
     frame = factory.frame(master)
     frame.grid(row=1,column=2,sticky='n',padx=8)
     def select(n):
         rndgen.gen_config["env-type-hint"] = n
     rb_random = factory.radio(frame,"Random",var,5,
                               command = lambda : select(None))
     rb_gate = factory.radio(frame,"Gate",var,GATE,
                             command = lambda : select(GATE))
     rb_perc = factory.radio(frame,"Percussive",var,PERCUSSIVE,
                             command = lambda : select(PERCUSSIVE))
     rb_asr = factory.radio(frame,"ASR",var,ASR,
                            command = lambda : select(ASR))
     rb_adsr = factory.radio(frame,"ADSR",var,ADSR,
                             command = lambda : select(ADSR))
    
     lab = factory.label(frame,"Envelope Type")
     lab.grid(row=0,column=0,sticky='w')
     rb_random.grid(row=1,column=0,sticky='w')
     rb_gate.grid(row=2,column=0,sticky='w')
     rb_perc.grid(row=3,column=0,sticky='w')
     rb_asr.grid(row=4,column=0,sticky='w')
     rb_adsr.grid(row=5,column=0,sticky='w')
Esempio n. 35
0
    def _store_program(self):
        bnk = self.synth.bank()
        program = bnk[None]
        slot = bnk.current_slot
        var_name = StringVar()
        var_start = StringVar()
        var_name.set(program.name)
        var_start.set(slot)
        dialog = Toplevel()
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.label(frame, "Store Program", modal=True)
        lab_name = factory.label(frame, "Name", modal=True)
        lab_start = factory.label(frame, "Slot", modal=True)
        entry_name = factory.entry(frame, var_name, "Program name")
        spin_start = factory.int_spinbox(frame, var_start, 0, len(bnk), "Startng slot")
        frame_remarks = factory.label_frame(frame, "Remarks", True)
        text_remarks = factory.text_widget(frame_remarks, "Remarks text", modal=True)
        text_remarks.insert("end", program.remarks)
        vsb = factory.scrollbar(frame_remarks, orientation="vertical")
        hsb = factory.scrollbar(frame_remarks, orientation="horizontal")
        text_remarks.config(width=40, height=10)
        text_remarks.grid(row=0, column=0, rowspan=4, columnspan=4)
        vsb.grid(row=0, column=4, rowspan=4, sticky="ns")
        hsb.grid(row=4, column=0, columnspan=4, sticky="ew")
        vsb.config(command=text_remarks.yview)
        hsb.config(command=text_remarks.xview)
        text_remarks.config(yscrollcommand=vsb.set)
        text_remarks.config(xscrollcommand=hsb.set)
        lab_title.grid(row=0, column=0, columnspan=3, pady=8, padx=4)
        lab_name.grid(row=1, column=0, padx=4)
        entry_name.grid(row=1, column=1, columnspan=2)
        frame_remarks.grid(row=2, column=0, rowspan=4, columnspan=4, padx=4, pady=4)
        lab_start.grid(row=6, column=0, padx=4, sticky="w")
        spin_start.grid(row=6, column=1, columnspan=2, pady=4)
        b_accept = factory.accept_button(frame)
        b_cancel = factory.cancel_button(frame)
        b_accept.grid(row=8, column=1, pady=8, sticky="ew")
        b_cancel.grid(row=8, column=2, pady=8, sticky="ew")
        
        def accept():
            try:
                a = int(var_start.get())
                name = var_name.get()
                remarks = text_remarks.get(1.0, "end")
                program.name = name
                program.remarks = remarks
                bnk[a] = program
                msg = "Stored program '%s' to slots [%3d]" % (name, a)
                self.status(msg)
                dialog.destroy()
                self.sync()
            except ValueError:
                msg = "Invalid slot number"
                self.warning(msg)

        def cancel():
            msg = "Store program canceld"
            self.status(msg)
            dialog.destroy()

        b_accept.config(command=accept)
        b_cancel.config(command=cancel)
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 36
0
 def _create_basic_tab(self,text):
     f = factory.frame(self.notebook)
     self.notebook.add(f, text=text)
     return f
Esempio n. 37
0
    def __init__(self,
                 master,
                 app,
                 synth_type,
                 is_efx=False,
                 is_controller=False):
        Toplevel.__init__(self, master)
        main = factory.frame(self)
        main.pack(anchor=W, expand=True, fill=BOTH)
        self.app = app
        self.stype = synth_type
        self.is_efx = is_efx
        self.is_controller = is_controller
        sid = "%s_%d" % (synth_type, SynthProxy.current_synth_serial_number())
        specs = SynthSpecs.global_synth_type_registry[synth_type]
        self._combo_audio_in = {}  # Maps synth parameter to combo box
        self._combo_audio_out = {}
        self._combo_control_in = {}
        self._combo_control_out = {}
        self._buffername_map = {}
        title = "Add %s " % synth_type
        if is_efx:
            title += "Effect"
        elif is_controller:
            title += "Controller Synth"
        else:
            title += "Synth"
        title += "      sid = %s" % sid
        frame_north = factory.frame(main)
        frame_north.grid(row=0,
                         column=0,
                         columnspan=2,
                         sticky='ew',
                         padx=4,
                         pady=8)
        logo_filename = os.path.join("resources", synth_type, "logo_small.png")
        lab_logo = factory.image_label(frame_north, logo_filename, synth_type)
        lab_id = factory.dialog_title_label(frame_north, title)
        lab_logo.grid(row=0, column=0, padx=8)
        lab_id.grid(row=0, column=1)
        # Audio Input Buses
        frame_audio_in = factory.label_frame(main, "Audio Input Buses")
        row = 0
        for i in range(MAX_BUS_COUNT):
            try:
                b = specs["audio-input-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_audio_in,
                                         "%d - %s" % (i + 1, param))
                combo = factory.audio_bus_combobox(frame_audio_in, self.app)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
                combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
                self._combo_audio_in[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_audio_in,
                                          "%d - n/a" % (i + 1, ))
                lab_dummy.grid(row=row, column=0)
            row += 1
        factory.padding_label(frame_audio_in).grid(row=row, column=0)
        frame_audio_in.grid(row=1, column=0, padx=4, pady=4, sticky='ew')
        # Audio Output Buses
        frame_audio_out = factory.label_frame(main, "Audio Output Buses")
        row = 0
        for i in range(MAX_BUS_COUNT):
            try:
                b = specs["audio-output-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_audio_out,
                                         "%d - %s" % (i + 1, param))
                combo = factory.audio_bus_combobox(frame_audio_out, self.app)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
                combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
                self._combo_audio_out[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_audio_out,
                                          "%d - n/a" % (i + 1, ))
                lab_dummy.grid(row=row, column=0)
            row += 1
        factory.padding_label(frame_audio_out).grid(row=row, column=0)
        frame_audio_out.grid(row=5, column=0, padx=4, pady=4, sticky='ew')
        # Control Input Buses
        frame_control_in = factory.label_frame(main, "Control Input Buses")
        row = 0
        for i in range(MAX_BUS_COUNT):
            try:
                b = specs["control-input-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_control_in,
                                         "%d - %s" % (i + 1, param))
                combo = factory.control_bus_combobox(frame_control_in,
                                                     self.app)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
                combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
                self._combo_control_in[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_control_in,
                                          "%d - n/a" % (i + 1, ))
                lab_dummy.grid(row=row, column=0)
            row += 1
        factory.padding_label(frame_control_in).grid(row=row, column=0)
        frame_control_in.grid(row=1, column=3, padx=4, pady=4, sticky='ew')
        # Control Output Buses
        frame_control_out = factory.label_frame(main, "Control Output Buses")
        row = 0
        for i in range(MAX_BUS_COUNT):
            try:
                b = specs["control-output-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_control_out,
                                         "%d - %s" % (i + 1, param))
                combo = factory.control_bus_combobox(frame_control_out,
                                                     self.app)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
                combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
                self._combo_control_out[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_control_out,
                                          "%d - n/a" % (i + 1, ))
                lab_dummy.grid(row=row, column=0)
            row += 1
        factory.padding_label(frame_control_out).grid(row=row, column=0)
        frame_control_out.grid(row=5, column=3, padx=4, pady=4, sticky='ew')
        # Buffers
        # if specs["buffers"]:
        #     frame_buffers = factory.label_frame(main, "Buffers")
        #     row = 0
        #     for param in specs["buffers"]:
        #         lab_name = factory.label(frame_buffers, param)
        #         combo = factory.buffer_combobox(frame_buffers, self.app)
        #         lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
        #         combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
        #         self._buffername_map[param] = combo
        #         row += 1
        #     factory.padding_label(frame_buffers).grid(row=row, column=0, sticky='ew')
        #     frame_buffers.grid(row=9, column=3, padx=4, pady=4)

        # Keymode
        self.var_keymode = StringVar()
        self.var_voice_count = StringVar()
        self.var_voice_count.set(8)
        frame_keymode = factory.label_frame(main, "Key mode")
        col = 0
        for km in specs["keymodes"]:
            rb = factory.radio(frame_keymode, km, self.var_keymode, km)
            rb.grid(row=0, column=col, sticky="w", padx=4, pady=4)
            col += 1
        self.var_keymode.set(specs["keymodes"][0])  # Set default keymode
        lab_vc = factory.label(frame_keymode, "Voice count")
        spin_vc = factory.int_spinbox(frame_keymode,
                                      self.var_voice_count,
                                      from_=1,
                                      to=128)
        lab_vc.grid(row=1, column=0, padx=4)
        spin_vc.grid(row=1, column=1, columnspan=3, padx=4, pady=4)
        frame_keymode.grid(row=9, column=0, padx=4, pady=4, sticky='ew')
        factory.padding_label(frame_keymode).grid(row=2, column=0)
        # South Toolbar
        toolbar = factory.frame(main)
        b_help = factory.help_button(toolbar, command=self.display_help)
        b_accept = factory.accept_button(toolbar, command=self.accept)
        b_cancel = factory.cancel_button(toolbar, command=self.cancel)
        b_help.grid(row=0, column=0, sticky="w")
        factory.padding_label(toolbar).grid(row=0, column=1)
        b_accept.grid(row=0, column=2, sticky="e")
        b_cancel.grid(row=0, column=3, sticky="e")
        toolbar.grid(row=10,
                     column=0,
                     columnspan=5,
                     sticky="ew",
                     padx=4,
                     pady=8)
Esempio n. 38
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.wm_title = "MIDI Channels"
     self.app = app
     self.config = app.config
     self.parser = app.ls_parser
     self._current_index = 0
     self._save_backup()
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     lab_title = factory.dialog_title_label(main,
                                            "MIDI Channels",
                                            modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list, command=self.select)
     self.listbox.pack(expand=True, fill=BOTH)
     self.lab_warning = factory.warning_label(main)
     self.var_name = StringVar()
     entry_name = factory.entry(main, self.var_name)
     button_bar = factory.frame(main, modal=True)
     b_refresh = factory.refresh_button(button_bar, command=self.refresh)
     b_help = factory.help_button(button_bar, command=self.display_help)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_cancel = factory.cancel_button(button_bar, command=self.cancel)
     b_refresh.grid(row=0, column=0)
     b_help.grid(row=0, column=1)
     b_accept.grid(row=0, column=2)
     b_cancel.grid(row=0, column=3)
     lab_title.grid(row=0, column=0, columnspan=5, pady=8)
     frame_list.grid(row=1,
                     column=0,
                     rowspan=5,
                     columnspan=6,
                     padx=4,
                     pady=8)
     factory.label(main, text="Name", modal=True).grid(row=6, column=0)
     entry_name.grid(row=6,
                     column=1,
                     columnspan=4,
                     sticky=W,
                     padx=4,
                     pady=0)
     self.lab_warning.grid(row=7,
                           column=0,
                           columnspan=5,
                           sticky=W,
                           padx=4,
                           pady=8)
     button_bar.grid(row=8,
                     column=0,
                     columnspan=5,
                     sticky=EW,
                     padx=4,
                     pady=8)
     self.refresh()
     self.protocol("WM_DELETE_WINDOW", None)  # ISSUE: Not Working
     entry_name.bind('<Return>', self.change_name)
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.grab_set()
     self.mainloop()
Esempio n. 39
0
    def _init_map1_tab(self, master):
        img = factory.image("resources/Tabs/map.png")
        HELP_TOPIC = "parameter-maps"
        frame = factory.frame(master)
        master.add(frame, text="Map1", image=img, compound="top")
        north = factory.label_frame(frame, "MIDI Controller Maps")
        south = factory.label_frame(frame, "Pitch Wheel Maps")
        north.grid(row=0, column=0, sticky="ew", padx=8, pady=8)
        south.grid(row=1, column=0, sticky="ew", padx=8, pady=8)

        def help_callback():
            self.app.main_window().display_help(HELP_TOPIC)
       
        list_cc_maps = factory.listbox(north, 
                                       ttip="Active MIDI controller maps")
        list_cc_maps.config(width=80, height=16)
        self.list_cc_maps = list_cc_maps
        sb = factory.scrollbar(north, orientation="vertical")
        sb.config(command=list_cc_maps.yview)
        list_cc_maps.config(yscrollcommand=sb.set)
        b_add_cc = factory.add_button(north, ttip="Add new controller map")
        b_delete_cc = factory.delete_button(north, 
                                            ttip="Delete controller map")
        list_cc_maps.grid(row=0, column=0, rowspan=4, 
                          columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, rowspan=4, sticky="ns")
        b_add_cc.grid(row=4, column=0, sticky="ew")
        b_delete_cc.grid(row=4, column=1, sticky="ew")

        list_pwheel_maps = factory.listbox(south, 
                                           ttip="Active pitch wheel maps")
        list_pwheel_maps.config(width=80, height=8)
        self.list_pwheel_maps = list_pwheel_maps
        sb = factory.scrollbar(south, orientation="vertical")

        sb.config(command=list_pwheel_maps.yview)
        list_pwheel_maps.config(yscrollcommand=sb.set)
        b_add_pw = factory.add_button(south, ttip="Add pitchwheel map")
        b_delete_pw = factory.delete_button(south, 
                                            ttip="Delete pitchwheel map")
        b_help = factory.help_button(south, command=help_callback)
        list_pwheel_maps.grid(row=0, column=0, rowspan=4,
                              columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, rowspan=4, sticky="ns")
        b_add_pw.grid(row=4, column=0, sticky="ew")
        b_delete_pw.grid(row=4, column=1, sticky="ew")
        b_help.grid(row=4, column=7, sticky="ew")

        def add_cc_callback():
            dialog = add_map_dialog(self.synth, "cc", self.app)

        def delete_cc_callback():
            dialog = delete_map_dialog(self, self.synth, "cc", self.app)

        def add_pw_callback():
            dialog = add_map_dialog(self.synth, "PitchWheel", self.app)

        def delete_pw_callback():
            dialog = delete_map_dialog(self, self.synth, "PitchWheel", self.app)

        b_add_cc.config(command=add_cc_callback)
        b_delete_cc.config(command=delete_cc_callback)
        b_add_pw.config(command=add_pw_callback)
        b_delete_pw.config(command=delete_pw_callback)
Esempio n. 40
0
    def _init_midi_tab(self, master):
        img = factory.image("resources/Tabs/midi.png")
        frame = factory.frame(master)
        master.add(frame, text = "Performance", image=img, compound="top")
        frame_channel = factory.frame(frame)
        frame_keytab = factory.frame(frame)
        lab_transpose = factory.label(frame, "Transpose")
        lab_keyrange = factory.label(frame, "Key Range")
        lab_bend = factory.label(frame, "Bend Range")
        self.list_channel = factory.listbox(frame_channel)
        sb_channel = factory.scrollbar(frame_channel)
        sb_channel.config(command=self.list_channel.yview)
        self.list_channel.config(yscrollcommand=sb_channel.set)
        self.list_keytab = factory.listbox(frame_keytab)
        sb_keytab = factory.scrollbar(frame_keytab)
        sb_keytab.config(command=self.list_keytab.yview)
        self.list_keytab.config(yscrollcommand=sb_keytab.set)
        spin_transpose = factory.int_spinbox(frame,self.var_transpose,-36,36)
        spin_keylow = factory.int_spinbox(frame,self.var_keyrange_low,0,127)
        spin_keyhigh = factory.int_spinbox(frame,self.var_keyrange_high,0,127)
        spin_bendrange = factory.int_spinbox(frame,self.var_bendrange, 0, 2400)
        factory.padding_label(frame).grid(row=0)
        lab_channel = factory.label(frame,"MIDI Input Channel")
        lab_channel.grid(row=0,column=0,columnspan=2, pady=8)
        frame_channel.grid(row=1, column=0, rowspan=4, columnspan=2,padx=8,pady=8)
        self.list_channel.pack(side="left", expand=True, fill="both")
        sb_channel.pack(after=self.list_channel, side="right", expand=True, fill="y")
        lab_ktab = factory.label(frame, "Key Table")
        lab_ktab.grid(row=0,column=2,columnspan=2,pady=8)
        frame_keytab.grid(row=1, column=2, rowspan=4, columnspan=2,padx=8,pady=8)
        self.list_keytab.pack(side="left", expand=True, fill="both")
        sb_keytab.pack(after=self.list_keytab, side="right", 
                       expand=True, fill="y")
        factory.padding_label(frame).grid(row=6)
        lab_transpose.grid(row=7, column=0, sticky="w", padx=4, pady=4)
        lab_keyrange.grid(row=8, column=0, sticky="w", padx=4, pady=4)
        lab_bend.grid(row=9, column=0, sticky="w", padx=4, pady=4)

        spin_transpose.grid(row=7, column=1, padx=4)
        spin_keylow.grid(row=8, column=1, padx=4)
        spin_keyhigh.grid(row=8, column=2, padx=4)
        spin_bendrange.grid(row=9, column=1, padx=4)
   
        def channel_callback(_):
            i = self.list_channel.curselection()[0]
            c = i+1
            self.synth.midi_input_channel(c)
            self.status("MIDI Input Channel = %s" % c)

        def keytab_callback(_):
            i = self.list_keytab.curselection()[0]
            kt = self.list_keytab.get(i)
            self.synth.keytable(kt)
            self.status("Using keytable: %s" % kt)

        def transpose_callback(*_):
            try:
                x = int(self.var_transpose.get())
                self.synth.transpose(x)
                self.status("Transpose = %s" % x)
            except ValueError:
                self.warning("Invalid transpose")
                
        def keyrange_callback(*_):
            try:
                a = int(self.var_keyrange_low.get())
                b = int(self.var_keyrange_high.get())
                a, b = min(a,b), max(a,b)
                self.synth.key_range((a,b))
                self.status("Key range = [%3d, %3d]" % (a, b))
            except ValueError:
                self.warning("Invalid keyrange")
                
        def bend_callback(*_):
            try:
                b = int(self.var_bendrange.get())
                self.synth.bend_range(b)
                self.status("Bend range = %s" % b)
            except ValueError:
                self.warning("Invalid Bendrange")
        
        self.list_channel.bind("<<ListboxSelect>>", channel_callback)
        self.list_keytab.bind("<<ListboxSelect>>", keytab_callback)
        spin_transpose.config(command=transpose_callback)
        spin_transpose.bind("<Return>", transpose_callback)
        spin_keylow.config(command=keyrange_callback)
        spin_keylow.bind("<Return>", keyrange_callback)
        spin_keyhigh.config(command=keyrange_callback)
        spin_keyhigh.bind("<Return>", keyrange_callback)
        spin_bendrange.config(command=bend_callback)
        spin_bendrange.bind("<Return>", bend_callback)
Esempio n. 41
0
 def __init__(self, master, synth, src, app):
     Toplevel.__init__(self, master)
     self.src = src
     self.synth = synth
     self.app = app
     self.var_curve = StringVar()
     self.var_modifier = StringVar()
     self.var_range_low = StringVar()
     self.var_range_high = StringVar()
     self.var_limit_low = StringVar()
     self.var_limit_high = StringVar()
     self.var_curve.set("linear")
     self.var_modifier.set("1.0")
     self.var_range_low.set("0.0")
     self.var_range_high.set("1.0")
     self.var_limit_low.set("0.0")
     self.var_limit_high.set("1.0")
     frame = factory.frame(self, modal=True)
     frame.pack(expand=True, fill="both")
     lab_title = factory.label(frame, "Add MIDI Source Map", modal=True)
     lab_title.grid(row=0, column=0, columnspan=4, padx=4, pady=8)
     if src == "cc":
         lab_src1 = factory.label(frame, "Controller", modal=True)
         self.combo_source = factory.controller_combobox(frame, app)
         lab_src1.grid(row=1, column=0, sticky="w", padx=4)
         self.combo_source.grid(row=1, column=1)
     else:
         lab_src1 = factory.label(frame, "Source", modal=True)
         lab_src2 = factory.label(frame, src, modal=True)
         self.combo_source = factory.combobox(None, [src])  # Hidden
         lab_src1.grid(row=1, column=0, sticky="w", padx=4)
         lab_src2.grid(row=1, column=1, sticky="w")
     lab_params = factory.label(frame, "Params", modal=True)
     bnk = synth.bank()
     params = sorted(bnk.template.keys())
     self.combo_params = factory.combobox(frame, params, 
                                          "Synth parameters")
     frame_curve = factory.label_frame(frame, "Curve", modal=True)
     for i, c in enumerate((("Linear", "linear"), 
                            ("Exponential","exp"), 
                            ("Logistic (S)", "s"), 
                            ("Step","step"))):
         rb = factory.radio(frame_curve, c[0], self.var_curve, c[1], 
                            modal=True)
         rb.config(command=self._auto_modifier_callback)
         rb.grid(row=i, column=0, columnspan=2, sticky="w", padx=4)
     lab_modifier = factory.label(frame_curve, "Modifier", modal=True)
     spin_modifier = factory.float_spinbox(frame_curve, 
                                           self.var_modifier, 
                                           -10, 10, "Curve modifier")
     lab_modifier.grid(row=4, column=0, padx=4, pady=8, sticky="w")
     spin_modifier.grid(row=4, column=1)
     frame_range = factory.label_frame(frame, "Range", modal=True)
     lab_low = factory.label(frame_range, "Low", modal=True)
     lab_high = factory.label(frame_range, "High", modal=True)
     spin_range_low = factory.float_spinbox(frame_range, 
                                            self.var_range_low, -100, 100)
     spin_range_low.config(command=self._auto_limit_callback)
     spin_range_high = factory.float_spinbox(frame_range, 
                                             self.var_range_high, -100, 100)
     spin_range_high.config(command=self._auto_limit_callback)
     lab_low.grid(row=0, column=0, sticky="w", padx=4)
     spin_range_low.grid(row=0, column=1, sticky="ew")
     lab_high.grid(row=1, column=0, sticky="w", padx=4)
     spin_range_high.grid(row=1, column=1, sticky="ew")
     frame_limit = factory.label_frame(frame, "Limit", modal=True)
     lab_low = factory.label(frame_limit, "Low", modal=True)
     lab_high = factory.label(frame_limit, "High", modal=True)
     spin_limit_low = factory.float_spinbox(frame_limit, 
                                            self.var_limit_low, -100, 100)
     spin_limit_high = factory.float_spinbox(frame_limit, 
                                             self.var_limit_high, -100, 100)
     lab_low.grid(row=0, column=0, sticky="w", padx=4)
     spin_limit_low.grid(row=0, column=1, sticky="ew")
     lab_high.grid(row=1, column=0, sticky="w", padx=4)
     spin_limit_high.grid(row=1, column=1, sticky="ew")
     toolbar = factory.frame(frame, modal=True)
     b_help = factory.help_button(toolbar,command=self.help_callback)
     b_restore = factory.clear_button(toolbar, ttip="Restore defaults", 
                                      command=self.restore_callback)
     b_accept = factory.accept_button(toolbar, 
                                      command=self.accept_callback)
     b_cancel = factory.cancel_button(toolbar, 
                                      command=self.cancel_callback)
     b_help.grid(row=0, column=0, sticky="ew")
     b_restore.grid(row=0, column=1, sticky="ew")
     b_accept.grid(row=0, column=2, sticky="ew")
     b_cancel.grid(row=0, column=3, sticky="ew")
     lab_params.grid(row=2, column=0, padx=4, sticky="w")
     self.combo_params.grid(row=2, column=1)
     frame_curve.grid(row=3, column=0, columnspan=2, 
                      padx=4, pady=8, sticky="ew")
     frame_range.grid(row=4, column=0, columnspan=2, 
                      padx=4, pady=4, sticky="ew")
     frame_limit.grid(row=5, column=0, columnspan=2, 
                      padx=4, pady=4, sticky="ew")
     toolbar.grid(row=6, column=0, columnspan=4, 
                  padx=4, pady=8, sticky="ew")
     if src == "cc":
         index = self.get_default_controller(synth)
         if is_string(index):
             index = int(index[1:4])
         self.combo_source.current(index)
     index = self.get_default_param(synth)
     self.combo_params.set(index)
Esempio n. 42
0
    def _init_map2_tab(self, master):
        img = factory.image("resources/Tabs/map.png")
        HELP_TOPIC = "parameter-maps"
        HEIGHT = 8
        frame = factory.frame(master)
        master.add(frame, text="Map2",image=img,compound="top")
        north = factory.label_frame(frame, "Velocity Maps")
        center = factory.label_frame(frame, "Aftertouch Maps")
        south = factory.label_frame(frame, "Keynumber Maps")
        north.grid(row=0, column=0, sticky="ew", padx=8, pady=8)
        center.grid(row=1, column=0, sticky="ew", padx=8)
        south.grid(row=2, column=0, sticky="ew", padx=8, pady=8)

        def help_callback():
            self.app.main_window().display_help(HELP_TOPIC)

        list_vel_maps = factory.listbox(north, ttip="Active velocity maps")
        list_vel_maps.config(width=80, height=HEIGHT)
        self.list_vel_maps = list_vel_maps
        sb = factory.scrollbar(north, orientation="vertical")
        sb.config(command=list_vel_maps.yview)
        list_vel_maps.config(yscrollcommand=sb.set)
        b_add_vel = factory.add_button(north, ttip="Add velocity map")
        b_delete_vel = factory.delete_button(north, 
                                             ttip="Delete velocity map")
        list_vel_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_vel.grid(row=1, column=0, sticky="ew")
        b_delete_vel.grid(row=1, column=1, sticky="ew")

        list_atouch_maps = factory.listbox(center, 
                                           ttip="Active after touch maps")
        list_atouch_maps.config(width=80, height=HEIGHT)
        self.list_atouch_maps = list_atouch_maps
        sb = factory.scrollbar(center, orientation="vertical")
        sb.config(command=list_atouch_maps.yview)
        list_atouch_maps.config(yscrollcommand=sb.set)
        b_add_atouch = factory.add_button(center, ttip="Add after touch map")
        b_delete_atouch = factory.delete_button(center, 
                                                ttip="Delete after touch map")
        list_atouch_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_atouch.grid(row=1, column=0, sticky="ew")
        b_delete_atouch.grid(row=1, column=1, sticky="ew")

        list_keynum_maps = factory.listbox(south, 
                                           ttip="Active key number maps")
        list_keynum_maps.config(width=80, height=HEIGHT)
        self.list_keynum_maps = list_keynum_maps
        sb = factory.scrollbar(south, orientation="vertical")
        sb.config(command=list_keynum_maps.yview)
        list_keynum_maps.config(yscrollcommand=sb.set)
        b_add_keynum = factory.add_button(south, ttip="Add key number map")
        b_delete_keynum = factory.delete_button(south, 
                                                ttip="Delete key number map")
	b_help = factory.help_button(south, command=help_callback)
        list_keynum_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_keynum.grid(row=1, column=0, sticky="ew")
        b_delete_keynum.grid(row=1, column=1, sticky="ew")
        b_help.grid(row=1, column=7, sticky="ew")

        def add_map_callback(event):
            widget = event.widget
            if widget is b_add_vel:
                dialog = add_map_dialog(self.synth, "velocity", self.app)
            elif widget is b_add_atouch:
                dialog = add_map_dialog(self.synth, "aftertouch", self.app)
            elif widget is b_add_keynum:
                dialog = add_map_dialog(self.synth, "keynumber", self.app)
            else:
                msg = "Invalid widget - Should never see this"
                raise ValueError(msg)

        def delete_map_callback(event):
            widget = event.widget
            if widget is b_delete_vel:
                dialog = delete_map_dialog(self, self.synth, "velocity", self.app)
            elif widget is b_delete_atouch:
                dialog = delete_map_dialog(self, self.synth, "aftertouch", self.app)
            elif widget is b_delete_keynum:
                dialog = delete_map_dialog(self, self.synth, "keynumber", self.app)
            else:
                msg = "Invalid widget - Should never see this"
                raise ValueError(msg)

        b_add_vel.bind("<Button-1>", add_map_callback)
        b_add_atouch.bind("<Button-1>", add_map_callback)
        b_add_keynum.bind("<Button-1>", add_map_callback)
        b_delete_vel.bind("<Button-1>", delete_map_callback)
        b_delete_atouch.bind("<Button-1>", delete_map_callback)
        b_delete_keynum.bind("<Button-1>", delete_map_callback)
Esempio n. 43
0
 def __init__(self, master, app, synth_type, is_efx=False, is_controller=False):
     Toplevel.__init__(self, master)
     main = factory.frame(self)
     main.pack(anchor=W, expand=True, fill=BOTH)
     self.app = app
     self.stype = synth_type
     self.is_efx = is_efx
     self.is_controller = is_controller
     sid = "%s_%d" % (synth_type, SynthProxy.current_synth_serial_number())
     specs = SynthSpecs.global_synth_type_registry[synth_type]
     self._combo_audio_in = {}    # Maps synth parameter to combo box
     self._combo_audio_out = {}
     self._combo_control_in = {}
     self._combo_control_out = {}
     self._buffername_map = {}
     title = "Add %s " % synth_type
     if is_efx:
         title += "Effect"
     elif is_controller:
         title += "Controller Synth"
     else:
         title += "Synth"
     title += "      sid = %s" % sid
     frame_north = factory.frame(main)
     frame_north.grid(row=0, column=0, columnspan=2, sticky='ew', padx=4, pady=8)
     logo_filename = os.path.join("resources", synth_type, "logo_small.png")
     lab_logo = factory.image_label(frame_north, logo_filename, synth_type)
     lab_id = factory.dialog_title_label(frame_north, title)
     lab_logo.grid(row=0, column=0, padx=8)
     lab_id.grid(row=0, column=1)
     # Audio Input Buses
     frame_audio_in = factory.label_frame(main, "Audio Input Buses")
     row = 0
     for i in range(MAX_BUS_COUNT):
         try:
             b = specs["audio-input-buses"][i]
             param = b[0]
             lab_name = factory.label(frame_audio_in, "%d - %s" % (i+1, param))
             combo = factory.audio_bus_combobox(frame_audio_in, self.app)
             combo.set(b[1])
             lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
             combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
             self._combo_audio_in[param] = combo
         except IndexError:
             lab_dummy = factory.label(frame_audio_in, "%d - n/a" % (i+1, ))
             lab_dummy.grid(row=row, column=0)
         row += 1
     factory.padding_label(frame_audio_in).grid(row=row, column=0)
     frame_audio_in.grid(row=1, column=0, padx=4, pady=4, sticky='ew')
     # Audio Output Buses
     frame_audio_out = factory.label_frame(main, "Audio Output Buses")
     row = 0
     for i in range(MAX_BUS_COUNT):
         try:
             b = specs["audio-output-buses"][i]
             param = b[0]
             lab_name = factory.label(frame_audio_out, "%d - %s" % (i+1, param))
             combo = factory.audio_bus_combobox(frame_audio_out, self.app)
             combo.set(b[1])
             lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
             combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
             self._combo_audio_out[param] = combo
         except IndexError:
             lab_dummy = factory.label(frame_audio_out, "%d - n/a" % (i+1,))
             lab_dummy.grid(row=row, column=0)
         row += 1
     factory.padding_label(frame_audio_out).grid(row=row, column=0)
     frame_audio_out.grid(row=5, column=0, padx=4, pady=4, sticky='ew')
     # Control Input Buses
     frame_control_in = factory.label_frame(main, "Control Input Buses")
     row = 0
     for i in range(MAX_BUS_COUNT):
         try:
             b = specs["control-input-buses"][i]
             param = b[0]
             lab_name = factory.label(frame_control_in, "%d - %s" % (i+1, param))
             combo = factory.control_bus_combobox(frame_control_in, self.app)
             combo.set(b[1])
             lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
             combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
             self._combo_control_in[param] = combo
         except IndexError:
             lab_dummy = factory.label(frame_control_in, "%d - n/a" % (i+1, ))
             lab_dummy.grid(row=row, column=0)
         row += 1
     factory.padding_label(frame_control_in).grid(row=row, column=0)
     frame_control_in.grid(row=1, column=3, padx=4, pady=4, sticky='ew')
     # Control Output Buses
     frame_control_out = factory.label_frame(main, "Control Output Buses")
     row = 0
     for i in range(MAX_BUS_COUNT):
         try:
             b = specs["control-output-buses"][i]
             param = b[0]
             lab_name = factory.label(frame_control_out, "%d - %s" % (i+1, param))
             combo = factory.control_bus_combobox(frame_control_out, self.app)
             combo.set(b[1])
             lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
             combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
             self._combo_control_out[param] = combo
         except IndexError:
             lab_dummy = factory.label(frame_control_out, "%d - n/a" % (i+1, ))
             lab_dummy.grid(row=row, column=0)
         row += 1
     factory.padding_label(frame_control_out).grid(row=row, column=0)
     frame_control_out.grid(row=5, column=3, padx=4, pady=4, sticky='ew')
     # Buffers
     # if specs["buffers"]:
     #     frame_buffers = factory.label_frame(main, "Buffers")
     #     row = 0
     #     for param in specs["buffers"]:
     #         lab_name = factory.label(frame_buffers, param)
     #         combo = factory.buffer_combobox(frame_buffers, self.app)
     #         lab_name.grid(row=row, column=0, sticky="w", padx=4, pady=4)
     #         combo.grid(row=row, column=1, sticky="w", padx=4, pady=4)
     #         self._buffername_map[param] = combo
     #         row += 1
     #     factory.padding_label(frame_buffers).grid(row=row, column=0, sticky='ew')
     #     frame_buffers.grid(row=9, column=3, padx=4, pady=4)
     
     # Keymode
     self.var_keymode = StringVar()
     self.var_voice_count = StringVar()
     self.var_voice_count.set(8)
     frame_keymode = factory.label_frame(main, "Key mode")
     col = 0
     for km in specs["keymodes"]:
         rb = factory.radio(frame_keymode, km, self.var_keymode, km)
         rb.grid(row=0, column=col, sticky="w", padx=4, pady=4)
         col += 1
     self.var_keymode.set(specs["keymodes"][0])  # Set default keymode
     lab_vc = factory.label(frame_keymode, "Voice count")
     spin_vc = factory.int_spinbox(frame_keymode, self.var_voice_count, from_=1, to=128)
     lab_vc.grid(row=1, column=0, padx=4)
     spin_vc.grid(row=1, column=1, columnspan=3, padx=4, pady=4)
     frame_keymode.grid(row=9, column=0, padx=4, pady=4, sticky='ew')
     factory.padding_label(frame_keymode).grid(row=2, column=0)
     # South Toolbar
     toolbar = factory.frame(main)
     b_help = factory.help_button(toolbar, command=self.display_help)
     b_accept = factory.accept_button(toolbar, command=self.accept)
     b_cancel = factory.cancel_button(toolbar, command=self.cancel)
     b_help.grid(row=0, column=0, sticky="w")
     factory.padding_label(toolbar).grid(row=0, column=1)
     b_accept.grid(row=0, column=2, sticky="e")
     b_cancel.grid(row=0, column=3, sticky="e")
     toolbar.grid(row=10, column=0, columnspan=5, sticky="ew", padx=4, pady=8)
Esempio n. 44
0
 def _create_basic_tab(self,text):
     f = factory.frame(self.notebook)
     self.notebook.add(f, text=text)
     return f
Esempio n. 45
0
    def _init_map2_tab(self, master):
        img = factory.image("resources/Tabs/map.png")
        HELP_TOPIC = "parameter-maps"
        HEIGHT = 8
        frame = factory.frame(master)
        master.add(frame, text="Map2",image=img,compound="top")
        north = factory.label_frame(frame, "Velocity Maps")
        center = factory.label_frame(frame, "Aftertouch Maps")
        south = factory.label_frame(frame, "Keynumber Maps")
        north.grid(row=0, column=0, sticky="ew", padx=8, pady=8)
        center.grid(row=1, column=0, sticky="ew", padx=8)
        south.grid(row=2, column=0, sticky="ew", padx=8, pady=8)

        def help_callback():
            self.app.main_window().display_help(HELP_TOPIC)

        list_vel_maps = factory.listbox(north, ttip="Active velocity maps")
        list_vel_maps.config(width=80, height=HEIGHT)
        self.list_vel_maps = list_vel_maps
        sb = factory.scrollbar(north, orientation="vertical")
        sb.config(command=list_vel_maps.yview)
        list_vel_maps.config(yscrollcommand=sb.set)
        b_add_vel = factory.add_button(north, ttip="Add velocity map")
        b_delete_vel = factory.delete_button(north, 
                                             ttip="Delete velocity map")
        list_vel_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_vel.grid(row=1, column=0, sticky="ew")
        b_delete_vel.grid(row=1, column=1, sticky="ew")

        list_atouch_maps = factory.listbox(center, 
                                           ttip="Active after touch maps")
        list_atouch_maps.config(width=80, height=HEIGHT)
        self.list_atouch_maps = list_atouch_maps
        sb = factory.scrollbar(center, orientation="vertical")
        sb.config(command=list_atouch_maps.yview)
        list_atouch_maps.config(yscrollcommand=sb.set)
        b_add_atouch = factory.add_button(center, ttip="Add after touch map")
        b_delete_atouch = factory.delete_button(center, 
                                                ttip="Delete after touch map")
        list_atouch_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_atouch.grid(row=1, column=0, sticky="ew")
        b_delete_atouch.grid(row=1, column=1, sticky="ew")

        list_keynum_maps = factory.listbox(south, 
                                           ttip="Active key number maps")
        list_keynum_maps.config(width=80, height=HEIGHT)
        self.list_keynum_maps = list_keynum_maps
        sb = factory.scrollbar(south, orientation="vertical")
        sb.config(command=list_keynum_maps.yview)
        list_keynum_maps.config(yscrollcommand=sb.set)
        b_add_keynum = factory.add_button(south, ttip="Add key number map")
        b_delete_keynum = factory.delete_button(south, 
                                                ttip="Delete key number map")
	b_help = factory.help_button(south, command=help_callback)
        list_keynum_maps.grid(row=0, column=0, columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, sticky="ns")
        b_add_keynum.grid(row=1, column=0, sticky="ew")
        b_delete_keynum.grid(row=1, column=1, sticky="ew")
        b_help.grid(row=1, column=7, sticky="ew")

        def add_map_callback(event):
            widget = event.widget
            if widget is b_add_vel:
                dialog = add_map_dialog(self.synth, "velocity", self.app)
            elif widget is b_add_atouch:
                dialog = add_map_dialog(self.synth, "aftertouch", self.app)
            elif widget is b_add_keynum:
                dialog = add_map_dialog(self.synth, "keynumber", self.app)
            else:
                msg = "Invald widget - Should never see this"
                raise ValueError(msg)

        def delete_map_callback(event):
            widget = event.widget
            if widget is b_delete_vel:
                dialog = delete_map_dialog(self, self.synth, "velocity", self.app)
            elif widget is b_delete_atouch:
                dialog = delete_map_dialog(self, self.synth, "aftertouch", self.app)
            elif widget is b_delete_keynum:
                dialog = delete_map_dialog(self, self.synth, "keynumber", self.app)
            else:
                msg = "Invald widget - Should never see this"
                raise ValueError(msg)

        b_add_vel.bind("<Button-1>", add_map_callback)
        b_add_atouch.bind("<Button-1>", add_map_callback)
        b_add_keynum.bind("<Button-1>", add_map_callback)
        b_delete_vel.bind("<Button-1>", delete_map_callback)
        b_delete_atouch.bind("<Button-1>", delete_map_callback)
        b_delete_keynum.bind("<Button-1>", delete_map_callback)
Esempio n. 46
0
    def __init__(self, master, synth, src, app):
        Toplevel.__init__(self, master)
        self.src = src
        self.synth = synth
        self.app = app
        self.var_all = StringVar()
        self.var_all.set(0)
        frame = factory.frame(self, modal=True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.label(frame, "Remove MIDI Source Map", modal=True)
        lab_title.grid(row=0, column=0, columnspan=3, padx=4, pady=8)
        if src == "cc":
            lab_src = factory.label(frame, "Controller", modal=True)
            self.combo_source = factory.controller_combobox(frame, app)
            lab_src.grid(row=1, column=0, padx=4, sticky='w')
            self.combo_source.grid(row=1, column=1, columnspan=2, sticky="ew")
        else:
            lab_src = factory.label(frame, "Source: %s" % src, modal=True)
            self.combo_source = factory.combobox(None, [src])
            lab_src.grid(row=1, column=0, columnspan=3, padx=4, sticky='w')
        lab_param = factory.label(frame, "Param", modal=True)
        self.cb_all = factory.checkbutton(frame, "All", var = self.var_all, modal=True)
        params = sorted(synth.bank().template.keys())
        self.combo_params = factory.combobox(frame, params, 
                                             "Synth Parameters")
        lab_param.grid(row=2, column=0, padx=4, pady=4, sticky='w')
        self.cb_all.grid(row=2, column=1, padx=4)
        self.combo_params.grid(row=2, column=2)

        def disable_param_callback():
            val = int(self.var_all.get())
            if val == 0:
                self.combo_params.config(state="normal")
            else:
                self.combo_params.config(state="disabled")
        
        def accept_callback():
            shelper = self.app.ls_parser.synthhelper
            if self.src == "cc":
                src = self.combo_source.get()[1:4]
            else:
                src = self.src
            src = src.lower()
            if int(self.var_all.get()) == 0:
                param = self.combo_params.get()
            else:
                param = "ALL"
            shelper.remove_parameter_map(src, param, self.synth.sid)
            msg = "Removed MIDI source map"
            self.status(msg)
            self.destroy()
            self.synth.synth_editor.sync()

        def cancel_callback():
            msg = "Delete source map canceld"
            self.status(msg)
            self.destroy()

        toolbar = factory.frame(frame, modal=True)
        b_accept = factory.accept_button(toolbar, command=accept_callback)
        b_cancel = factory.cancel_button(toolbar, command=cancel_callback)
        toolbar.grid(row=3, column=0, columnspan=3, padx=4, pady=8, sticky="ew")
        b_accept.grid(row=0, column=0, sticky="ew")
        b_cancel.grid(row=0, column=1, sticky="ew")
        self.cb_all.config(command=disable_param_callback)
        try:                    # ISSUE BUG 0004
            self.grab_set()
        except TclError as err:
            print("-" * 60)
            print("BUG 0004 trapped. TkDeleteSourceMapDialog.__init__")
            print(err.message)
            print("Unable to open dialog as modal")
            
        self.mainloop()
Esempio n. 47
0
 def __init__(self, master, app):
     Toplevel.__init__(self, master)
     self.config(background=factory.pallet("DIALOG-BG"))
     self.wm_title = "MIDI Controllers"
     self.app = app
     self.config = app.config
     self.parser = app.ls_parser
     self._current_controller = 0
     self._save_backup()
     main = factory.frame(self, modal=True)
     main.pack(expand=True)
     main.pack_propagate(False)
     lab_title = factory.label(main, "MIDI Controller Names", modal=True)
     self.lab_warning = factory.warning_label(main, "", modal=True)
     frame_list = factory.frame(main, modal=True)
     frame_list.config(width=248, height=320)
     frame_list.pack_propagate(False)
     self.listbox = factory.listbox(frame_list,
                                    command=self.select_controller)
     self.listbox.pack(expand=True, fill=BOTH)
     sb = factory.scrollbar(main, yclient=self.listbox)
     self.refresh()
     self.var_name = StringVar()
     entry_name = factory.entry(main, self.var_name)
     button_bar = factory.frame(main, modal=True)
     b_refresh = factory.refresh_button(button_bar, command=self.refresh)
     b_help = factory.help_button(button_bar, command=self.display_help)
     b_accept = factory.accept_button(button_bar, command=self.accept)
     b_cancel = factory.cancel_button(button_bar, command=self.cancel)
     lab_title.grid(row=0, column=0, columnspan=4, pady=8)
     frame_list.grid(row=1, column=0, rowspan=6, columnspan=4, sticky=N)
     sb.grid(row=1, column=4, rowspan=6, sticky=NS, padx=4)
     factory.label(main, "Name", modal=True).grid(row=7,
                                                  column=0,
                                                  padx=4,
                                                  sticky="w")
     entry_name.grid(row=7,
                     column=1,
                     columnspan=1,
                     sticky=W,
                     padx=4,
                     pady=8)
     self.lab_warning.grid(row=8, column=0, columnspan=5, sticky=W)
     button_bar.grid(row=9,
                     column=0,
                     columnspan=5,
                     sticky=EW,
                     padx=4,
                     pady=4)
     b_refresh.grid(row=0, column=0)
     b_help.grid(row=0, column=1)
     b_accept.grid(row=0, column=2)
     b_cancel.grid(row=0, column=3)
     entry_name.bind('<Return>', self.change_name)
     entry_name.bind('<Down>', self.increment_selection)
     entry_name.bind('<Up>', self.decrement_selection)
     self.listbox.bind('<Down>', self.increment_selection)
     self.listbox.bind('<Up>', self.decrement_selection)
     self.protocol("WM_DELETE_WINDOW", None)
     self.grab_set()
     self.mainloop()
Esempio n. 48
0
    def __init__(self, master, editor, synth):
        Frame.__init__(self, master)
        self.editor = editor
        self.synthhelper = editor.app.ls_parser.synthhelper
        self.synth = synth
        self.config(background=factory.bg())
        self.pack(anchor="nw", expand=True, fill="both")
        frame_audio_input = factory.label_frame(self, 
                                                "Audio Input Buses")
        frame_audio_output  = factory.label_frame(self, 
                                                  "Audio Output Buses")
        frame_control_input = factory.label_frame(self, 
                                                  "Control Input Buses")
        frame_control_output = factory.label_frame(self, 
                                                   "Control Output Buses")
        frame_audio_input.grid(row=0, column=0, rowspan=4, columnspan=4, 
                               padx=16, pady=16, sticky='nesw')
        frame_audio_output.grid(row=4, column=0, rowspan=4, columnspan=4, 
                                padx=16, pady=16, sticky='nesw')
        frame_control_input.grid(row=0, column=4, rowspan=4, columnspan=4, 
                                 padx=16, pady=16, sticky='nesw')
        frame_control_output.grid(row=4, column=4, rowspan=4, columnspan=4, 
                                  padx=16, pady=16, sticky='nesw')
        specs = synth.specs

        frame_south = factory.frame(self)
        frame_south.grid(row=9, column=0, rowspan=1, columnspan=8, sticky='ew',
                        padx=16, pady=16)
        b_sync = factory.button(frame_south, "Sync", command=self.sync)
        b_sync.grid(row=0, column=0)
        
        # audio inputs
        self._combo_audio_in = {}
        row = 0
        for i in range(con.MAX_BUS_COUNT):
            try:
                b = specs["audio-input-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_audio_input, "%d - %s" % (i+1, param))
                combo = factory.audio_bus_combobox(frame_audio_input, self.editor.app)
                combo.param = param
                combo.bind("<<ComboboxSelected>>", self.audio_in_callback)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky='ew', padx=4, pady=4)
                combo.grid(row=row, column=1, sticky='ew', padx=4, pady=4)
                self._combo_audio_in[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_audio_input, "%d - n/a" % (i+1,))
                lab_dummy.grid(row=row, column=0)
            row += 1
            
                                         
        # audio output
        self._combo_audio_out = {}
        row = 0
        for i in range(con.MAX_BUS_COUNT):
            try:
                b = specs["audio-output-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_audio_output, "%d - %s" % (i+1, param))
                combo = factory.audio_bus_combobox(frame_audio_output, self.editor.app)
                combo.param = param
                combo.bind("<<ComboboxSelected>>", self.audio_out_callback)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky='ew', padx=4, pady=4)
                combo.grid(row=row, column=1, sticky='ew', padx=4, pady=4)
                self._combo_audio_out[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_audio_output, "%d - n/a" % (i+1,))
                lab_dummy.grid(row=row, column=0)
            row += 1

        # control inputs
        self._combo_control_in = {}
        row = 0
        for i in range(con.MAX_BUS_COUNT):
            try:
                b = specs["control-input-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_control_input, "%d - %s" % (i+1, param))
                combo = factory.control_bus_combobox(frame_control_input, self.editor.app)
                combo.param = param
                combo.bind("<<ComboboxSelected>>", self.control_in_callback)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky='ew', padx=4, pady=4)
                combo.grid(row=row, column=1, sticky='ew', padx=4, pady=4)
                self._combo_control_in[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_control_input, "%d - n/a" % (i+1,))
                lab_dummy.grid(row=row, column=0)
            row += 1
            
                                         
        # control output
        self._combo_control_out = {}
        row = 0
        for i in range(con.MAX_BUS_COUNT):
            try:
                b = specs["control-output-buses"][i]
                param = b[0]
                lab_name = factory.label(frame_control_output, "%d - %s" % (i+1, param))
                combo = factory.control_bus_combobox(frame_control_output, self.editor.app)
                combo.param = param
                combo.bind("<<ComboboxSelected>>", self.control_out_callback)
                combo.set(b[1])
                lab_name.grid(row=row, column=0, sticky='ew', padx=4, pady=4)
                combo.grid(row=row, column=1, sticky='ew', padx=4, pady=4)
                self._combo_control_out[param] = combo
            except IndexError:
                lab_dummy = factory.label(frame_control_output, "%d - n/a" % (i+1,))
                lab_dummy.grid(row=row, column=0)
            row += 14
        self.sync()
Esempio n. 49
0
    def _store_program(self):
        bnk = self.synth.bank()
        program = bnk[None]
        slot = bnk.current_slot
        var_name = StringVar()
        var_start = StringVar()
        var_name.set(program.name)
        var_start.set(slot)
        dialog = Toplevel()
        frame = factory.frame(dialog, True)
        frame.pack(expand=True, fill="both")
        lab_title = factory.label(frame, "Store Program", modal=True)
        lab_name = factory.label(frame, "Name", modal=True)
        lab_start = factory.label(frame, "Slot", modal=True)
        entry_name = factory.entry(frame, var_name, "Program name")
        spin_start = factory.int_spinbox(frame, var_start, 0, len(bnk), "Startng slot")
        frame_remarks = factory.label_frame(frame, "Remarks", True)
        text_remarks = factory.text_widget(frame_remarks, "Remarks text", modal=True)
        text_remarks.insert("end", program.remarks)
        vsb = factory.scrollbar(frame_remarks, orientation="vertical")
        hsb = factory.scrollbar(frame_remarks, orientation="horizontal")
        text_remarks.config(width=40, height=10)
        text_remarks.grid(row=0, column=0, rowspan=4, columnspan=4)
        vsb.grid(row=0, column=4, rowspan=4, sticky="ns")
        hsb.grid(row=4, column=0, columnspan=4, sticky="ew")
        vsb.config(command=text_remarks.yview)
        hsb.config(command=text_remarks.xview)
        text_remarks.config(yscrollcommand=vsb.set)
        text_remarks.config(xscrollcommand=hsb.set)
        lab_title.grid(row=0, column=0, columnspan=3, pady=8, padx=4)
        lab_name.grid(row=1, column=0, padx=4)
        entry_name.grid(row=1, column=1, columnspan=2)
        frame_remarks.grid(row=2, column=0, rowspan=4, columnspan=4, padx=4, pady=4)
        lab_start.grid(row=6, column=0, padx=4, sticky="w")
        spin_start.grid(row=6, column=1, columnspan=2, pady=4)
        b_accept = factory.accept_button(frame)
        b_cancel = factory.cancel_button(frame)
        b_accept.grid(row=8, column=1, pady=8, sticky="ew")
        b_cancel.grid(row=8, column=2, pady=8, sticky="ew")
        
        def accept():
            try:
                a = int(var_start.get())
                name = var_name.get()
                remarks = text_remarks.get(1.0, "end")
                program.name = name
                program.remarks = remarks
                bnk[a] = program
                msg = "Stored program '%s' to slots [%3d]" % (name, a)
                self.status(msg)
                dialog.destroy()
                self.sync()
            except ValueError:
                msg = "Invalid slot number"
                self.warning(msg)

        def cancel():
            msg = "Store program canceld"
            self.status(msg)
            dialog.destroy()

        b_accept.config(command=accept)
        b_cancel.config(command=cancel)
        dialog.grab_set()
        dialog.mainloop()
Esempio n. 50
0
    def _init_map1_tab(self, master):
        img = factory.image("resources/Tabs/map.png")
        HELP_TOPIC = "parameter-maps"
        frame = factory.frame(master)
        master.add(frame, text="Map1", image=img, compound="top")
        north = factory.label_frame(frame, "MIDI Controller Maps")
        south = factory.label_frame(frame, "Pitch Wheel Maps")
        north.grid(row=0, column=0, sticky="ew", padx=8, pady=8)
        south.grid(row=1, column=0, sticky="ew", padx=8, pady=8)

        def help_callback():
            self.app.main_window().display_help(HELP_TOPIC)
       
        list_cc_maps = factory.listbox(north, 
                                       ttip="Active MIDI controller maps")
        list_cc_maps.config(width=80, height=16)
        self.list_cc_maps = list_cc_maps
        sb = factory.scrollbar(north, orientation="vertical")
        sb.config(command=list_cc_maps.yview)
        list_cc_maps.config(yscrollcommand=sb.set)
        b_add_cc = factory.add_button(north, ttip="Add new controller map")
        b_delete_cc = factory.delete_button(north, 
                                            ttip="Delete controller map")
        list_cc_maps.grid(row=0, column=0, rowspan=4, 
                          columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, rowspan=4, sticky="ns")
        b_add_cc.grid(row=4, column=0, sticky="ew")
        b_delete_cc.grid(row=4, column=1, sticky="ew")

        list_pwheel_maps = factory.listbox(south, 
                                           ttip="Active pitch wheel maps")
        list_pwheel_maps.config(width=80, height=8)
        self.list_pwheel_maps = list_pwheel_maps
        sb = factory.scrollbar(south, orientation="vertical")

        sb.config(command=list_pwheel_maps.yview)
        list_pwheel_maps.config(yscrollcommand=sb.set)
        b_add_pw = factory.add_button(south, ttip="Add pitchwheel map")
        b_delete_pw = factory.delete_button(south, 
                                            ttip="Delete pitchwheel map")
        b_help = factory.help_button(south, command=help_callback)
        list_pwheel_maps.grid(row=0, column=0, rowspan=4,
                              columnspan=8, sticky="ew")
        sb.grid(row=0, column=8, rowspan=4, sticky="ns")
        b_add_pw.grid(row=4, column=0, sticky="ew")
        b_delete_pw.grid(row=4, column=1, sticky="ew")
        b_help.grid(row=4, column=7, sticky="ew")

        def add_cc_callback():
            dialog = add_map_dialog(self.synth, "cc", self.app)

        def delete_cc_callback():
            dialog = delete_map_dialog(self, self.synth, "cc", self.app)

        def add_pw_callback():
            dialog = add_map_dialog(self.synth, "PitchWheel", self.app)

        def delete_pw_callback():
            dialog = delete_map_dialog(self, self.synth, "PitchWheel", self.app)

        b_add_cc.config(command=add_cc_callback)
        b_delete_cc.config(command=delete_cc_callback)
        b_add_pw.config(command=add_pw_callback)
        b_delete_pw.config(command=delete_pw_callback)
Esempio n. 51
0
    def _init_performance_tab(self, master):
        img = factory.image("resources/Tabs/performance.png")
        frame = factory.frame(master)
        master.add(frame, text = "Performance", image=img, compound="top")
        frame_channel = factory.label_frame(frame, "MIDI Channel")
        frame_keytab = factory.label_frame(frame, "Key Table")
        lab_transpose = factory.label(frame, "Transpose")
        lab_keyrange = factory.label(frame, "Key Range")
        lab_bend = factory.label(frame, "Bend Range")
        self.list_channel = factory.listbox(frame_channel)
        sb_channel = factory.scrollbar(frame_channel)
        sb_channel.config(command=self.list_channel.yview)
        self.list_channel.config(yscrollcommand=sb_channel.set)
        self.list_keytab = factory.listbox(frame_keytab)
        sb_keytab = factory.scrollbar(frame_keytab)
        sb_keytab.config(command=self.list_keytab.yview)
        self.list_keytab.config(yscrollcommand=sb_keytab.set)
        spin_transpose = factory.int_spinbox(frame, 
                                             self.var_transpose, -36, 36)
        spin_keylow = factory.int_spinbox(frame, 
                                          self.var_keyrange_low, 0, 127)
        spin_keyhigh = factory.int_spinbox(frame, 
                                           self.var_keyrange_high, 0, 127)
        spin_bendrange = factory.int_spinbox(frame, 
                                             self.var_bendrange, 0, 2400)
        factory.padding_label(frame).grid(row=0)
        frame_channel.grid(row=1, column=0, rowspan=4, columnspan=2)
        self.list_channel.pack(side="left", expand=True, fill="both")
        sb_channel.pack(after=self.list_channel, side="right", 
                        expand=True, fill="y")
        frame_keytab.grid(row=1, column=2, rowspan=4, columnspan=2)
        self.list_keytab.pack(side="left", expand=True, fill="both")
        sb_keytab.pack(after=self.list_keytab, side="right", 
                       expand=True, fill="y")
        factory.padding_label(frame).grid(row=6)
        lab_transpose.grid(row=7, column=0, sticky="w", padx=4, pady=4)
        spin_transpose.grid(row=7, column=1, padx=4)
        lab_keyrange.grid(row=8, column=0, sticky="w", padx=4, pady=4)
        spin_keylow.grid(row=8, column=1, padx=4)
        spin_keyhigh.grid(row=8, column=2, padx=4)
        lab_bend.grid(row=9, column=0, sticky="w", padx=4, pady=4)
        spin_bendrange.grid(row=9, column=1, padx=4)
   
        def channel_callback(_):
            i = self.list_channel.curselection()[0]
            c = i+1
            self.synth.midi_input_channel(c)
            self.status("MIDI Input Channel = %s" % c)

        def keytab_callback(_):
            i = self.list_keytab.curselection()[0]
            kt = self.list_keytab.get(i)
            self.synth.keytable(kt)
            self.status("Using keytable: %s" % kt)

        def transpose_callback(*_):
            try:
                x = int(self.var_transpose.get())
                self.synth.transpose(x)
                self.status("Transpose = %s" % x)
            except ValueError:
                self.warning("Invalid transpose")
                
        def keyrange_callback(*_):
            try:
                a = int(self.var_keyrange_low.get())
                b = int(self.var_keyrange_high.get())
                a, b = min(a,b), max(a,b)
                self.synth.key_range((a,b))
                self.status("Key range = [%3d, %3d]" % (a, b))
            except ValueError:
                self.warning("Invalid keyrange")
                
        def bend_callback(*_):
            try:
                b = int(self.var_bendrange.get())
                self.synth.bend_range(b)
                self.status("Bend range = %s" % b)
            except ValueError:
                self.warning("Invalid Bendrange")
        
        self.list_channel.bind("<<ListboxSelect>>", channel_callback)
        self.list_keytab.bind("<<ListboxSelect>>", keytab_callback)
        spin_transpose.config(command=transpose_callback)
        spin_transpose.bind("<Return>", transpose_callback)
        spin_keylow.config(command=keyrange_callback)
        spin_keylow.bind("<Return>", keyrange_callback)
        spin_keyhigh.config(command=keyrange_callback)
        spin_keyhigh.bind("<Return>", keyrange_callback)
        spin_bendrange.config(command=bend_callback)
        spin_bendrange.bind("<Return>", bend_callback)