Exemple #1
0
 def on_zyncoder(self, encoder, value):
     if self.lst_menu.winfo_viewable():
         # Menu browsing
         if encoder == ENC_SELECT or encoder == ENC_LAYER:
             if self.lst_menu.size() < 1:
                 return
             index = 0
             try:
                 index = self.lst_menu.curselection()[0]
             except:
                 logging.error("Problem detecting menu selection")
             index = index + value
             if index < 0:
                 index = 0
             if index >= self.lst_menu.size():
                 index = self.lst_menu.size() - 1
             self.lst_menu.selection_clear(0, tkinter.END)
             self.lst_menu.selection_set(index)
             self.lst_menu.activate(index)
             self.lst_menu.see(index)
             return
     elif self.param_editor_item:
         # Parameter change
         if encoder == ENC_SELECT or encoder == ENC_LAYER:
             self.change_param(value)
         elif encoder == ENC_SNAPSHOT:
             self.change_param(value / 10)
     elif encoder == ENC_SNAPSHOT:
         libseq.setTempo(ctypes.c_double(libseq.getTempo() + 0.1 * value))
         self.set_title("Tempo: %0.1f BPM" % (libseq.getTempo()), None,
                        None, 2)
     elif encoder == ENC_LAYER:
         self.select_bank(self.bank + value)
	def show_playing_bpm(self):
		self.bpm_zctrl.set_value(libseq.getTempo())
		if self.bpm_zgui_ctrl:
			self.bpm_zgui_ctrl.config(self.bpm_zctrl)
			self.bpm_zgui_ctrl.show()
		else:
			self.bpm_zgui_ctrl = zynthian_gui_controller(2, self.main_frame, self.bpm_zctrl)
Exemple #3
0
 def populate_menu(self):
     self.lst_menu.delete(0, tkinter.END)
     self.menu_items = {}  # Dictionary of menu items
     if self.child != self.zynpad:
         self.add_menu(
             {'Pads': {
                 'method': self.show_child,
                 'params': self.zynpad
             }})
     if self.child != self.arranger:
         self.add_menu({
             'Arranger': {
                 'method': self.show_child,
                 'params': self.arranger
             }
         })
     if self.child != self.pattern_editor:
         self.add_menu({
             'Bank': {
                 'method': self.show_param_editor,
                 'params': {
                     'min': 1,
                     'max': 64,
                     'value': self.bank,
                     'on_change': self.on_menu_change
                 }
             }
         })
     if zynthian_gui_config.enable_touch_widgets:
         self.add_menu({
             'Tempo': {
                 'method': self.show_param_editor,
                 'params': {
                     'min': 1.0,
                     'max': 500.0,
                     'get_value': libseq.getTempo(),
                     'on_change': self.on_menu_change
                 }
             }
         })
     self.add_menu({
         'Beats per bar': {
             'method': self.show_param_editor,
             'params': {
                 'min': 1,
                 'max': 64,
                 'get_value': libseq.getBeatsPerBar,
                 'on_change': self.on_menu_change
             }
         }
     })
     #self.add_menu({'Load':{'method':self.select_filename, 'params':self.filename}})
     #self.add_menu({'Save':{'method':self.save_as, 'params':self.filename}})
     self.add_menu({'-------------------': {}})
 def export_smf(self, params):
     smf = libsmf.addSmf()
     tempo = libseq.getTempo()
     libsmf.addTempo(smf, 0, tempo)
     ticks_per_step = libsmf.getTicksPerQuarterNote(
         smf) / libseq.getStepsPerBeat()
     for step in range(libseq.getSteps()):
         time = int(step * ticks_per_step)
         for note in range(128):
             duration = libseq.getNoteDuration(step, note)
             if duration == 0:
                 continue
             duration = int(duration * ticks_per_step)
             velocity = libseq.getNoteVelocity(step, note)
             libsmf.addNote(smf, 0, time, duration, self.channel, note,
                            velocity)
     libsmf.setEndOfTrack(smf, 0, int(libseq.getSteps() * ticks_per_step))
     zynsmf.save(
         smf, "/zynthian/zynthian-my-data/capture/pattern%d_%s.mid" %
         (self.pattern, datetime.now()))