def on_switch(self, switch, type):
     if self.parent.lst_menu.winfo_viewable():
         return False
     if self.parent.param_editor_item:
         return False
     if switch == ENC_SELECT:
         if self.edit_mode:
             self.enable_edit(False)
             return True
         if type == "S":
             note = self.toggle_event(self.selected_cell[0],
                                      self.selected_cell[1])
             if note:
                 self.play_note(note)
         else:
             self.enable_edit(True)
         return True
     elif switch == ENC_SNAPSHOT:
         if type == "B":
             libseq.setTransportToStartOfBar()
             return True
         if libseq.getPlayState(
                 self.bank,
                 self.sequence) == zynthian_gui_stepsequencer.SEQ_STOPPED:
             libseq.setPlayState(self.bank, self.sequence,
                                 zynthian_gui_stepsequencer.SEQ_STARTING)
         else:
             libseq.setPlayState(self.bank, self.sequence,
                                 zynthian_gui_stepsequencer.SEQ_STOPPED)
         return True
     elif switch == ENC_BACK:
         self.enable_edit(False)
         return True
     return False
 def hide(self):
     self.shown = False
     self.parent.unregister_zyncoder(zynthian_gui_stepsequencer.ENC_BACK)
     self.parent.unregister_zyncoder(zynthian_gui_stepsequencer.ENC_SELECT)
     self.parent.unregister_zyncoder(zynthian_gui_stepsequencer.ENC_LAYER)
     self.parent.unregister_switch(zynthian_gui_stepsequencer.ENC_SELECT,
                                   "SB")
     self.parent.unregister_switch(zynthian_gui_stepsequencer.ENC_SNAPSHOT,
                                   "SB")
     libseq.setPlayState(self.bank, self.sequence,
                         zynthian_gui_stepsequencer.SEQ_STOPPED)
     libseq.enableMidiInput(False)
     self.enable_edit(False)
     libseq.setRefNote(self.keymap_offset)
Esempio n. 3
0
 def do_grid_size(self, params=None):
     # To avoid odd behaviour we stop all sequences from playing before changing grid size (blunt but effective!)
     bank = self.parent.bank
     for seq in range(libseq.getSequencesInBank(bank)):
         libseq.setPlayState(bank, seq,
                             zynthian_gui_stepsequencer.SEQ_STOPPED)
     channels = []
     groups = []
     for column in range(self.columns):
         channels.append(libseq.getChannel(bank, column * self.columns, 0))
         groups.append(libseq.getGroup(bank, column * self.columns))
     new_size = self.parent.get_param("Grid size", "value")
     delta = new_size - self.columns
     if delta > 0:
         # Growing grid so add extra sequences
         for column in range(self.columns):
             for row in range(self.columns, self.columns + delta):
                 pad = row + column * new_size
                 libseq.insertSequence(bank, pad)
                 libseq.setChannel(bank, pad, channels[column])
                 libseq.setGroup(bank, pad, groups[column])
                 zynseq.set_sequence_name(bank, pad, "%s" % (pad + 1))
         for column in range(self.columns, new_size):
             for row in range(new_size):
                 pad = row + column * new_size
                 libseq.insertSequence(bank, pad)
                 libseq.setChannel(bank, pad, column)
                 libseq.setGroup(bank, pad, column)
                 zynseq.set_sequence_name(bank, pad, "%s" % (pad + 1))
     if delta < 0:
         # Shrinking grid so remove excess sequences
         libseq.setSequencesInBank(bank, new_size *
                                   self.columns)  # Lose excess columns
         for offset in range(new_size, new_size * new_size + 1, new_size):
             logging.warning("offset: %d", offset)
             for pad in range(-delta):
                 libseq.removeSequence(bank, offset)
     self.columns = new_size
     self.refresh_pending = 1
Esempio n. 4
0
 def stop(self):
     if self.child == self.pattern_editor:
         libseq.setPlayState(0, 0, SEQ_STOPPED)
         libseq.setTransportToStartOfBar()