def _setup_instrument(self): self._grid_resolution = GridResolution() self._c_instance.playhead.enabled = True self._playhead_element = PlayheadElement(self._c_instance.playhead) self._drum_group_finder = PercussionInstrumentFinder( device_parent=self.song.view.selected_track) self._instrument = MinimMonoInstrumentComponent( name='InstrumentComponent', script=self, skin=self._skin, drum_group_finder=self._drum_group_finder, grid_resolution=self._grid_resolution, settings=DEFAULT_INSTRUMENT_SETTINGS, device_provider=self._device_provider, parent_task_group=self._task_group) self._instrument._drumpad._drumgroup._button_coordinates_to_pad_index = lambda first_note, coordinates: coordinates[ 1] + (abs(coordinates[0] - 1) * 4) + first_note self._instrument._drumpad._drumgroup.create_translation_entry = lambda button: ( button.coordinate[1], button.coordinate[ 0] + 2, button.identifier, button.channel) self._instrument.layer = Layer(priority=6, shift_button=self._side_button[3]) self._instrument.keypad_options_layer = AddLayerMode( self._instrument, Layer( priority=6, scale_up_button=self._button[0][3], scale_down_button=self._button[0][2], offset_up_button=self._button[0][1], offset_down_button=self._button[0][0], )) #vertical_offset_up_button = self._top_button[1], #vertical_offset_down_button = self._top_button[0])) self._instrument.drumpad_options_layer = AddLayerMode( self._instrument, Layer( priority=6, scale_up_button=self._button[0][3], scale_down_button=self._button[0][2], drum_offset_up_button=self._button[0][1], drum_offset_down_button=self._button[0][0], )) self._instrument._keypad.main_layer = LayerMode( self._instrument._keypad, Layer(priority=6, keypad_matrix=self._matrix.submatrix[:, 1:3])) self._instrument._keypad.select_layer = LayerMode( self._instrument._keypad, Layer(priority=6, keypad_select_matrix=self._matrix.submatrix[:, 1:3])) self._instrument._drumpad.main_layer = LayerMode( self._instrument._drumpad, Layer(priority=6, drumpad_matrix=self._matrix.submatrix[:, 1:3])) self._instrument._drumpad.select_layer = LayerMode( self._instrument._drumpad, Layer(priority=6, drumpad_select_matrix=self._matrix.submatrix[:, 1:3])) self._instrument._main_modes = ModesComponent(name='InstrumentModes') self._instrument._main_modes.add_mode('disabled', []) self._instrument._main_modes.add_mode('drumpad', [ self._instrument._drumpad, self._instrument._drumpad.main_layer, self._instrument.drumpad_options_layer ]) self._instrument._main_modes.add_mode('drumpad_shifted', [ self._instrument._drumpad, self._instrument._drumpad.select_layer, self._instrument.drumpad_options_layer ]) self._instrument._main_modes.add_mode('keypad', [ self._instrument._keypad, self._instrument._keypad.main_layer, self._instrument.keypad_options_layer ]) self._instrument._main_modes.add_mode('keypad_shifted', [ self._instrument._keypad, self._instrument._keypad.select_layer, self._instrument.keypad_options_layer ]) #self._instrument.register_component(self._instrument._main_modes) self._instrument.set_enabled(False)
def _setup_instrument(self): self._grid_resolution = GridResolution() self._c_instance.playhead.enabled = True self._playhead_element = PlayheadElement(self._c_instance.playhead) #self._playhead_element.reset() #quantgrid = ButtonMatrixElement([self._base_grid._orig_buttons[2][4:8], self._base_grid._orig_buttons[3][4:7]]) self._drum_group_finder = PercussionInstrumentFinder(device_parent=self.song.view.selected_track) self._instrument = OhmMonoInstrumentComponent(name = 'InstrumentModes', script = self, skin = self._skin, drum_group_finder = self._drum_group_finder, grid_resolution = self._grid_resolution, settings = DEFAULT_INSTRUMENT_SETTINGS, device_provider = self._device_provider, parent_task_group = self._task_group) self._instrument.layer = Layer(priority = 5, shift_button = self._livid) self._instrument.audioloop_layer = LayerMode(self._instrument, Layer(priority = 5, loop_selector_matrix = self._matrix)) self._instrument.keypad_options_layer = AddLayerMode(self._instrument, Layer(priority = 5, scale_up_button = self._menu[0], scale_down_button = self._menu[3], offset_up_button = self._menu[1], offset_down_button = self._menu[4], vertical_offset_up_button = self._menu[2], vertical_offset_down_button = self._menu[5],)) self._instrument.drumpad_options_layer = AddLayerMode(self._instrument, Layer(priority = 5, scale_up_button = self._menu[0], scale_down_button = self._menu[3], drum_offset_up_button = self._menu[1], drum_offset_down_button = self._menu[4], drumpad_mute_button = self._menu[2], drumpad_solo_button = self._menu[5],)) self._instrument._keypad.octave_toggle_layer = AddLayerMode(self._instrument._keypad, Layer(priority = 5)) #, offset_shift_toggle = self._livid)) self._instrument._drumpad.octave_toggle_layer = AddLayerMode(self._instrument._drumpad, Layer(priority = 5)) #, offset_shift_toggle = self._livid)) self._instrument._keypad.main_layer = LayerMode(self._instrument._keypad, Layer(priority = 5, keypad_matrix = self._matrix.submatrix[:,:])) self._instrument._keypad.select_layer = LayerMode(self._instrument._keypad, Layer(priority = 5, keypad_select_matrix = self._matrix.submatrix[:, :])) self._instrument._keypad.split_layer = LayerMode(self._instrument._keypad, Layer(priority = 5, keypad_matrix = self._matrix.submatrix[:, 2:4])) self._instrument._keypad.split_select_layer = LayerMode(self._instrument._keypad, Layer(priority = 5, keypad_select_matrix = self._matrix.submatrix[:, 2:4])) self._instrument._keypad.sequencer_layer = AddLayerMode(self._instrument._keypad, Layer(priority = 5, playhead = self._playhead_element, sequencer_matrix = self._matrix.submatrix[:, :4])) self._instrument._keypad.sequencer_shift_layer = AddLayerMode(self._instrument._keypad, Layer(priority = 5, loop_selector_matrix = self._matrix.submatrix[:, :4], quantization_buttons = self._matrix.submatrix[:8, 1:2],)) #follow_button = self._pad[15])) self._instrument._drumpad.main_layer = LayerMode(self._instrument._drumpad, Layer(priority = 5, drumpad_matrix = self._matrix.submatrix[:,4:], sequencer_matrix = self._matrix.submatrix[:, :2], loop_selector_matrix = self._matrix.submatrix[:, 3:4], playhead = self._playhead_element, quantization_buttons = self._matrix.submatrix[:, 2:3])) self._instrument._drumpad.select_layer = LayerMode(self._instrument._drumpad, Layer(priority = 5, drumpad_select_matrix = self._matrix.submatrix[:,4:], sequencer_matrix = self._matrix.submatrix[:, :2], loop_selector_matrix = self._matrix.submatrix[:, 3:4], playhead = self._playhead_element, quantization_buttons = self._matrix.submatrix[:, 2:3])) self._instrument._drumpad.split_layer = LayerMode(self._instrument._drumpad, Layer(priority = 5, drumpad_matrix = self._matrix.submatrix[:4, 4:],)) self._instrument._drumpad.split_select_layer = LayerMode(self._instrument._drumpad, Layer(priority = 5, drumpad_select_matrix = self._matrix.submatrix[:4,4:])) self._instrument._drumpad.sequencer_layer = AddLayerMode(self._instrument._drumpad, Layer(priority = 5, playhead = self._playhead_element, sequencer_matrix = self._matrix.submatrix[:, :4])) self._instrument._drumpad.sequencer_shift_layer = AddLayerMode(self._instrument._drumpad, Layer(priority = 5, loop_selector_matrix = self._matrix.submatrix[4:8, :2], quantization_buttons = self._matrix.submatrix[4:8, 2:],)) #follow_button = self._pad[31])) self._instrument._selected_session._keys_layer = LayerMode(self._instrument._selected_session, Layer(priority = 5, clip_launch_buttons = self._matrix.submatrix[:, :2])) self._instrument._selected_session._drum_layer = LayerMode(self._instrument._selected_session, Layer(priority = 5, clip_launch_buttons = self._matrix.submatrix[4:8, :])) self._instrument._main_modes = ModesComponent(parent = self._instrument, name = 'InstrumentModes') self._instrument._main_modes.add_mode('disabled', []) self._instrument._main_modes.add_mode('drumpad', [self._instrument._drumpad, self._instrument._drumpad.main_layer, self._instrument.drumpad_options_layer]) self._instrument._main_modes.add_mode('drumpad_split', [self._instrument._drumpad, self._instrument._drumpad.split_layer, self._instrument._selected_session, self._instrument._selected_session._drum_layer]) self._instrument._main_modes.add_mode('drumpad_sequencer', [self._instrument._drumpad, self._instrument._drumpad.sequencer_layer, self._instrument._drumpad.split_layer]) self._instrument._main_modes.add_mode('drumpad_shifted', [self._instrument._drumpad, self._instrument._drumpad.select_layer, self._instrument.drumpad_options_layer, self._instrument._drumpad.octave_toggle_layer]) self._instrument._main_modes.add_mode('drumpad_split_shifted', [ self._instrument._drumpad, self._instrument._drumpad.split_select_layer, self._instrument.drumpad_options_layer, self._instrument._drumpad.octave_toggle_layer, self._instrument._selected_session, self._instrument._selected_session._drum_layer]) self._instrument._main_modes.add_mode('drumpad_sequencer_shifted', [self._instrument._drumpad, self._instrument._drumpad.split_select_layer, self._instrument._drumpad.sequencer_shift_layer, self._instrument.drumpad_options_layer, self._instrument._drumpad.octave_toggle_layer]) self._instrument._main_modes.add_mode('keypad', [self._instrument._keypad, self._instrument._keypad.main_layer, self._instrument.keypad_options_layer]) self._instrument._main_modes.add_mode('keypad_split', [self._instrument._keypad, self._instrument._keypad.split_layer, self._instrument._selected_session, self._instrument._selected_session._keys_layer]) self._instrument._main_modes.add_mode('keypad_sequencer', [self._instrument._keypad, self._instrument._keypad.sequencer_layer, self._instrument._keypad.split_layer], ) self._instrument._main_modes.add_mode('keypad_shifted', [self._instrument._keypad, self._instrument._keypad.select_layer, self._instrument.keypad_options_layer, self._instrument._keypad.octave_toggle_layer]) self._instrument._main_modes.add_mode('keypad_split_shifted', [self._instrument._keypad, self._instrument._keypad.split_select_layer, self._instrument.keypad_options_layer, self._instrument._keypad.octave_toggle_layer, self._instrument._selected_session, self._instrument._selected_session._keys_layer]) self._instrument._main_modes.add_mode('keypad_sequencer_shifted', [self._instrument._keypad, self._instrument._keypad.split_select_layer, self._instrument._keypad.sequencer_shift_layer, self._instrument.keypad_options_layer, self._instrument._keypad.octave_toggle_layer]) self._instrument._main_modes.add_mode('audioloop', [self._instrument.audioloop_layer]) #self._instrument.register_component(self._instrument._main_modes) self._instrument.set_enabled(False)
def __init__(self, deleter=None, undo_handler=None, pad_sensitivity_update=None, playhead=None, velocity_levels=None, continuous_mapping_sensitivity=None, fine_grained_continuous_mapping_sensitivity=None, full_velocity=None, *a, **k): (super(Elements, self).__init__)(*a, **k) self.foot_pedal_button = DoublePressElement( create_button(69, 'Foot_Pedal', is_rgb=True)) self.nav_up_button = create_button(46, 'Up_Arrow') self.nav_down_button = create_button(47, 'Down_Arrow') self.nav_left_button = create_button(44, 'Left_Arrow') self.nav_right_button = create_button(45, 'Right_Arrow') self.shift_button = create_modifier_button(49, 'Shift_Button') self.select_button = create_modifier_button(48, 'Select_Button') self.delete_button = create_modifier_button( 118, 'Delete_Button', undo_step_handler=undo_handler) self.duplicate_button = create_modifier_button( 88, 'Duplicate_Button', undo_step_handler=undo_handler) self.quantize_button = create_modifier_button( 116, 'Quantization_Button', undo_step_handler=undo_handler) self.accent_button = create_modifier_button(57, 'Accent_Button') self.in_button = create_button(62, 'In_Button') self.out_button = create_button(63, 'Out_Button') self.master_select_button = create_button(28, 'Master_Select_Button') self.octave_down_button = create_button(54, 'Octave_Down_Button') self.octave_up_button = create_button(55, 'Octave_Up_Button') self.repeat_button = create_button(56, 'Repeat_Button') self.global_mute_button = create_modifier_button( 60, 'Global_Mute_Button') self.global_solo_button = create_modifier_button( 61, 'Global_Solo_Button') self.global_track_stop_button = create_modifier_button( 29, 'Track_Stop_Button') self.scale_presets_button = create_button(58, 'Scale_Presets_Button') self.vol_mix_mode_button = create_button(114, 'Vol_Mix_Mode_Button') self.device_mode_button = create_button(110, 'Device_Mode_Button') self.clip_mode_button = create_button(113, 'Clip_Mode_Button') self.browse_mode_button = create_button(111, 'Browse_Mode_Button') self.single_track_mix_mode_button = create_button( 112, 'Single_Track_Mode_Button') self.pan_send_mix_mode_button = create_button( 115, 'Pan_Send_Mode_Button', resource_type=PrioritizedResource) self.note_mode_button = create_modifier_button(50, 'Note_Mode_Button') self.session_mode_button = create_button(51, 'Session_Mode_Button') self.play_button = create_button(85, 'Play_Button') self.new_button = create_button(87, 'New_Button') self.automation_button = create_button(89, 'Automation_Button') self.tap_tempo_button = create_button(3, 'Tap_Tempo_Button') self.metronome_button = create_button(9, 'Metronome_Button') self.fixed_length_button = create_button(90, 'Fixed_Length_Button') self.record_button = create_modifier_button(86, 'Record_Button') self.undo_button = create_button(119, 'Undo_Button') self.create_device_button = create_button( 52, 'Create_Device_Button', undo_step_handler=undo_handler) self.create_track_button = create_button( 53, 'Create_Track_Button', undo_step_handler=undo_handler) self.double_button = create_button(117, 'Double_Button', undo_step_handler=undo_handler) self.user_button = create_button(59, 'User_Button', undo_step_handler=undo_handler) self.select_buttons_raw = [ create_button(20 + idx, 'Track_Select_Button' + str(idx)) for idx in range(8) ] self.select_buttons = ButtonMatrixElement( name='Track_Select_Buttons', rows=[self.select_buttons_raw]) self.track_state_buttons_raw = [ create_button((102 + idx), ('Track_State_Button' + str(idx)), is_rgb=True) for idx in range(8) ] self.track_state_buttons = ButtonMatrixElement( name='Track_State_Buttons', rows=[self.track_state_buttons_raw]) self.side_buttons_raw = [ create_button(36 + idx, 'Scene_Launch_Button' + str(idx)) for idx in reversed(range(8)) ] self.side_buttons = ButtonMatrixElement(name='Scene_Launch_Buttons', rows=[self.side_buttons_raw]) @depends(skin=None) def create_pad_button(pad_id, name, skin=None, **k): return PadButtonElement(pad_id, pad_sensitivity_update, True, MIDI_NOTE_TYPE, 0, 36 + pad_id, skin=skin, name=name, **k) self.matrix_rows_raw = [[ create_pad_button(((7 - row) * 8 + column), (str(column) + '_Clip_' + str(row) + '_Button'), is_rgb=True) for column in range(8) ] for row in range(8)] double_press_rows = recursive_map(DoublePressElement, self.matrix_rows_raw) self.matrix = ButtonMatrixElement(name='Button_Matrix', rows=(self.matrix_rows_raw)) self.double_press_matrix = ButtonMatrixElement( name='Double_Press_Matrix', rows=double_press_rows) self.single_press_event_matrix = ButtonMatrixElement( name='Single_Press_Event_Matrix', rows=(recursive_map(lambda x: x.single_press, double_press_rows))) self.double_press_event_matrix = ButtonMatrixElement( name='Double_Press_Event_Matrix', rows=(recursive_map(lambda x: x.double_press, double_press_rows))) self.tempo_control_tap = create_note_button(10, 'Tempo_Control_Tap') self.tempo_control = TouchEncoderElement( channel=0, identifier=14, map_mode=(consts.GLOBAL_MAP_MODE), name='Tempo_Control', undo_step_handler=undo_handler, delete_handler=deleter, encoder_sensitivity=BASE_ENCODER_SENSITIVITY, touch_element=(self.tempo_control_tap)) self.swing_control_tap = create_note_button(9, 'Swing_Control_Tap') self.swing_control = TouchEncoderElement( channel=0, identifier=15, map_mode=(consts.GLOBAL_MAP_MODE), name='Swing_Control', undo_step_handler=undo_handler, delete_handler=deleter, encoder_sensitivity=BASE_ENCODER_SENSITIVITY, touch_element=(self.swing_control_tap)) self.master_volume_control_tap = create_note_button( 8, 'Master_Volume_Tap') self.master_volume_control = TouchEncoderElement( channel=0, identifier=79, map_mode=(consts.GLOBAL_MAP_MODE), undo_step_handler=undo_handler, delete_handler=deleter, name='Master_Volume_Control', encoder_sensitivity=BASE_ENCODER_SENSITIVITY, touch_element=(self.master_volume_control_tap)) self.master_volume_control.mapping_sensitivity = continuous_mapping_sensitivity self.global_param_touch_buttons_raw = [ create_note_button(index, ('Track_Control_Touch_' + str(index)), resource_type=PrioritizedResource) for index in range(8) ] self.global_param_touch_buttons = ButtonMatrixElement( name='Track_Control_Touches', rows=[self.global_param_touch_buttons_raw]) self.parameter_controls_raw = [ TouchEncoderElement( channel=0, identifier=(71 + index), map_mode=(consts.GLOBAL_MAP_MODE), undo_step_handler=undo_handler, delete_handler=deleter, encoder_sensitivity=BASE_ENCODER_SENSITIVITY, name=('Track_Control_' + str(index)), touch_element=(self.global_param_touch_buttons_raw[index])) for index in range(8) ] self.global_param_controls = ButtonMatrixElement( name='Track_Controls', rows=[self.parameter_controls_raw]) self.fine_grain_param_controls_raw = [ FineGrainWithModifierEncoderElement( encoder, self.shift_button, fine_grained_continuous_mapping_sensitivity, continuous_mapping_sensitivity) for encoder in self.parameter_controls_raw ] self.fine_grain_param_controls = ButtonMatrixElement( rows=[self.fine_grain_param_controls_raw]) self.any_touch_button = MultiElement( *self.global_param_touch_buttons.nested_control_elements()) self.playhead_element = PlayheadElement(playhead) self.velocity_levels_element = VelocityLevelsElement(velocity_levels) self.full_velocity_element = FullVelocityElement(full_velocity)
def _setup_instrument(self): self._grid_resolution = self.register_disconnectable(GridResolution()) #self._c_instance.playhead.enabled = True self._playhead_element = PlayheadElement(self._c_instance.playhead) self._drum_group_finder = PercussionInstrumentFinder( device_parent=self.song.view.selected_track) self._instrument = CntrlrMonoInstrumentComponent( name='InstrumentComponent', is_enabled=True, script=self, skin=self._skin, grid_resolution=self._grid_resolution, drum_group_finder=self._drum_group_finder, parent_task_group=self._task_group, settings=DEFAULT_INSTRUMENT_SETTINGS, device_provider=self._device_provider) self._instrument.shift_button_layer = AddLayerMode( self._instrument, Layer(priority=5, )) self._instrument.audioloop_layer = AddLayerMode( self._instrument, Layer( priority=5, loop_selector_matrix=self._key_matrix.submatrix[:, 0], )) self._instrument.keypad_shift_layer = AddLayerMode( self._instrument, Layer(priority=5, scale_up_button=self._button[13], scale_down_button=self._button[12], offset_up_button=self._button[11], offset_down_button=self._button[10], vertical_offset_up_button=self._button[9], vertical_offset_down_button=self._button[8], split_button=self._button[14], sequencer_button=self._button[15])) self._instrument.drumpad_shift_layer = AddLayerMode( self._instrument, Layer(priority=5, scale_up_button=self._button[13], scale_down_button=self._button[12], drum_offset_up_button=self._button[11], drum_offset_down_button=self._button[10], drumpad_mute_button=self._button[9], drumpad_solo_button=self._button[8], split_button=self._button[14], sequencer_button=self._button[15])) self._instrument._keypad.sequencer_layer = LayerMode( self._instrument._keypad, Layer( priority=5, playhead=self._playhead_element, keypad_matrix=self._matrix.submatrix[:, :], sequencer_matrix=self._key_matrix.submatrix[:, 0], )) self._instrument._keypad.split_layer = LayerMode( self._instrument._keypad, Layer(priority=5, keypad_matrix=self._matrix.submatrix[:, :], split_matrix=self._key_matrix.submatrix[:14, 0])) self._instrument._keypad.sequencer_shift_layer = LayerMode( self._instrument._keypad, Layer( priority=5, keypad_select_matrix=self._matrix.submatrix[:, :], loop_selector_matrix=self._key_matrix.submatrix[:8, 0], quantization_buttons=self._key_matrix.submatrix[:8, 1], )) #follow_button = self._button[23])) self._instrument._keypad.sequencer_session_layer = LayerMode( self._instrument._keypad, Layer(priority=5, playhead=self._playhead_element, sequencer_matrix=self._key_matrix.submatrix[:, :1])) self._instrument._keypad.split_session_layer = LayerMode( self._instrument._keypad, Layer(priority=5, split_matrix=self._key_matrix.submatrix[:16, :1])) self._instrument._keypad.sequencer_session_shift_layer = LayerMode( self._instrument._keypad, Layer( priority=5, loop_selector_matrix=self._key_matrix.submatrix[:8, :1], quantization_buttons=self._key_matrix.submatrix[:7, 1:], )) #follow_button = self._button[23])) self._instrument._drumpad.sequencer_layer = LayerMode( self._instrument._drumpad, Layer( priority=5, playhead=self._playhead_element, drumpad_matrix=self._matrix.submatrix[:, :], sequencer_matrix=self._key_matrix.submatrix[:, 0], )) self._instrument._drumpad.split_layer = LayerMode( self._instrument._drumpad, Layer(priority=5, drumpad_matrix=self._matrix.submatrix[:, :], split_matrix=self._key_matrix.submatrix[:16, :1])) self._instrument._drumpad.sequencer_shift_layer = LayerMode( self._instrument._drumpad, Layer( priority=5, drumpad_select_matrix=self._matrix.submatrix[:, :], loop_selector_matrix=self._key_matrix.submatrix[:8, :1], quantization_buttons=self._key_matrix.submatrix[:7, 1:], )) #follow_button = self._button[23])) self._instrument._drumpad.sequencer_session_layer = LayerMode( self._instrument._drumpad, Layer(priority=5, sequencer_matrix=self._key_matrix.submatrix[:, :1])) self._instrument._drumpad.split_session_layer = LayerMode( self._instrument._drumpad, Layer(priority=5, split_matrix=self._key_matrix.submatrix[:16, :1])) self._instrument._drumpad.sequencer_session_shift_layer = LayerMode( self._instrument._drumpad, Layer( priority=5, loop_selector_matrix=self._key_matrix.submatrix[:8, :1], quantization_buttons=self._key_matrix.submatrix[:8, 1:], )) #follow_button = self._button[23]))