Beispiel #1
0
 def _create_pad_modes(self):
     self._pad_modes = ModesComponent(
         name='Pad_Modes',
         is_enabled=False,
         layer=Layer(session_button='full_level_button',
                     note_button='note_repeat_button',
                     channel_button='select_button',
                     encoder_modes_button='setup_button'))
     self._pad_modes.add_mode(
         'session',
         (AddLayerMode(self._background,
                       Layer(unused_pads='pads_with_shift')),
          AddLayerMode(
              self._session,
              Layer(clip_launch_buttons='pads',
                    scene_launch_buttons=(
                        self._elements.pads_with_shift.submatrix[3:, :]))),
          self._session_overview, self._session_navigation_modes))
     self._pad_modes.add_mode('note', self._note_modes)
     self._pad_modes.add_mode(
         'channel',
         (self._elements.pads.reset,
          AddLayerMode(
              self._mixer,
              Layer(arm_buttons=(self._elements.pads.submatrix[:, :1]),
                    solo_buttons=(self._elements.pads.submatrix[:, 1:2]),
                    track_select_buttons=(
                        self._elements.pads.submatrix[:, 2:3]))),
          AddLayerMode(
              self._session,
              Layer(stop_track_clip_buttons=(
                  self._elements.pads.submatrix[:, 3:]))),
          self._session_navigation_modes))
     self._pad_modes.add_mode(
         'encoder_modes',
         (LayerMode(
             self._encoder_modes,
             Layer(volume_button=(self._elements.pads_raw[0][0]),
                   pan_button=(self._elements.pads_raw[0][1]),
                   send_a_button=(self._elements.pads_raw[0][2]),
                   send_b_button=(self._elements.pads_raw[0][3]))),
          AddLayerMode(
              self._background,
              Layer(unused_pads=(self._elements.pads.submatrix[:, 1:])))),
         behaviour=(MomentaryBehaviour()))
     self._pad_modes.selected_mode = 'session'
     self._pad_modes.set_enabled(True)
 def _create_pad_modes(self):
     self._pad_modes = ModesComponent(
         name='Pad_Modes',
         is_enabled=False,
         layer=Layer(mode_selection_control='pad_layout_switch'))
     bg_mode = AddLayerMode(
         (self._background),
         layer=Layer(scene_launch_buttons='scene_launch_buttons'))
     self._pad_modes.add_mode('custom', bg_mode)
     self._pad_modes.add_mode('drum', (bg_mode, self._drum_group))
     self._pad_modes.add_mode(
         'session',
         LayerMode((self._stop_solo_mute_modes),
                   layer=Layer(cycle_mode_button=(
                       self._elements.scene_launch_buttons_raw[1]))))
     self._pad_modes.selected_mode = 'session'
     self._pad_modes.set_enabled(True)
     self._Launchkey_Mini_MK3__on_pad_mode_changed.subject = self._pad_modes
     self._Launchkey_Mini_MK3__on_pad_mode_byte_changed.subject = self._pad_modes
Beispiel #3
0
    def _create_pad_modes(self):
        self._pad_modes = ModesComponent(name=b'Pad_Modes', is_enabled=False, layer=Layer(mode_selection_control=b'pad_layout_switch'))
        suppress_scene_launch_buttons = AddLayerMode(self._background, layer=Layer(scene_launch_buttons=b'scene_launch_buttons'))
        suppress_all_buttons_around_pads = AddLayerMode(self._background, layer=Layer(scene_launch_buttons=b'scene_launch_buttons', up_button=b'up_button', down_button=b'down_button'))
        self._pad_modes.add_mode(b'dummy', suppress_all_buttons_around_pads)
        self._pad_modes.add_mode(b'drum', (suppress_scene_launch_buttons, self._drum_group))
        self._pad_modes.add_mode(b'session', LayerMode(self._stop_solo_mute_modes, layer=Layer(cycle_mode_button=self._elements.scene_launch_buttons_raw[1])))
        for i in range(6):
            self._pad_modes.add_mode((b'custom{}').format(i), suppress_all_buttons_around_pads)

        upper_matrix_row = self._elements.device_select_matrix.submatrix[:, :1]
        self._pad_modes.add_mode(b'device_select', (
         suppress_scene_launch_buttons,
         self._device.show_device_name_and_bank,
         AddLayerMode(self._device, layer=Layer(bank_select_buttons=upper_matrix_row, prev_button=b'up_button', next_button=b'down_button'))))
        self._pad_modes.selected_mode = b'session'
        self._pad_modes.set_enabled(True)
        self.__on_pad_mode_changed.subject = self._pad_modes
        self.__on_pad_mode_byte_changed.subject = self._pad_modes
Beispiel #4
0
    def __init__(self,
                 clip_creator=None,
                 parameter_provider=None,
                 grid_resolution=None,
                 note_layout=None,
                 note_editor_settings=None,
                 note_editor_class=NoteEditorComponent,
                 velocity_range_thresholds=None,
                 skin=None,
                 instrument_play_layer=None,
                 instrument_sequence_layer=None,
                 pitch_mod_touch_strip_mode=None,
                 play_loop_instrument_layer=None,
                 layer=None,
                 sequence_layer_with_loop=None,
                 *a,
                 **k):
        super(MelodicComponent, self).__init__(*a, **k)
        self._matrices = None
        self._grid_resolution = grid_resolution
        self.instrument, self._step_duplicator, self._accent_component = self.register_components(
            InstrumentComponent(note_layout=note_layout),
            StepDuplicatorComponent(), AccentComponent())
        self._note_editors = self.register_components(*[
            note_editor_class(
                clip_creator=clip_creator,
                grid_resolution=self._grid_resolution,
                velocity_range_thresholds=velocity_range_thresholds,
                is_enabled=False) for _ in xrange(NUM_NOTE_EDITORS)
        ])
        for editor in self._note_editors:
            note_editor_settings.add_editor(editor)
            editor.set_step_duplicator(self._step_duplicator)

        self.paginator = self.register_component(
            NoteEditorPaginator(self._note_editors))
        self._loop_selector = self.register_component(
            LoopSelectorComponent(clip_creator=clip_creator,
                                  paginator=self.paginator,
                                  is_enabled=False,
                                  default_size=8))
        self._playhead = None
        self._playhead_component = self.register_component(
            PlayheadComponent(grid_resolution=grid_resolution,
                              paginator=self.paginator,
                              follower=self._loop_selector,
                              feedback_channels=PLAYHEAD_FEEDBACK_CHANNELS,
                              is_enabled=False))
        self._play_modes = self.register_component(
            MessengerModesComponent(muted=True, is_enabled=False))
        self._play_modes.add_mode('play', [
            LayerMode(self.instrument, instrument_play_layer),
            pitch_mod_touch_strip_mode
        ],
                                  default_mode='play',
                                  alternative_mode='play_loop')
        self._play_modes.add_mode(
            'play_loop', [
                LayerMode(self.instrument,
                          instrument_play_layer), self._loop_selector,
                LayerMode(self, play_loop_instrument_layer),
                self._playhead_component, self.paginator,
                pitch_mod_touch_strip_mode
            ],
            message=consts.MessageBoxText.ALTERNATE_PLAY_LOOP,
            default_mode='play',
            alternative_mode='play_loop')
        self._play_modes.selected_mode = 'play'
        self.add_mode('play',
                      self._play_modes,
                      message=MessageBoxText.LAYOUT_MELODIC_PLAYING)
        self._sequence_modes = self.register_component(
            MessengerModesComponent(muted=True, is_enabled=False))
        self._sequence_modes.add_mode(
            'sequence',
            [
                LayerMode(self.instrument, instrument_sequence_layer),
                note_editor_settings, self._loop_selector,
                LayerMode(self, layer), self._playhead_component,
                self._update_note_editors, self.paginator,
                self._accent_component
            ] + self._note_editors,
            message=MessageBoxText.LAYOUT_MELODIC_SEQUENCER,
            default_mode='sequence',
            alternative_mode='sequence_loop')
        self._sequence_modes.add_mode(
            'sequence_loop',
            [
                LayerMode(self.instrument, instrument_sequence_layer),
                note_editor_settings, self._loop_selector,
                LayerMode(self, sequence_layer_with_loop),
                self._playhead_component, self._update_note_editors,
                self.paginator, self._accent_component
            ] + self._note_editors,
            message=MessageBoxText.ALTERNATE_SEQUENCE_LOOP,
            default_mode='sequence',
            alternative_mode='sequence_loop')
        self._sequence_modes.selected_mode = 'sequence'
        self.add_mode('sequence',
                      self._sequence_modes,
                      message=MessageBoxText.LAYOUT_MELODIC_SEQUENCER)
        self.selected_mode = 'play'
        self._on_detail_clip_changed.subject = self.song.view
        self._on_pattern_changed.subject = self.instrument
        self._on_notes_changed.subject = self.instrument
        self.__on_grid_resolution_changed.subject = self._grid_resolution
        self._on_page_index_changed.subject = self.paginator
        self._on_page_length_changed.subject = self.paginator
        self._on_active_steps_changed.replace_subjects(self._note_editors)
        self._on_modify_all_notes_changed.replace_subjects(self._note_editors)
        self.__on_accent_activated_changed.subject = self._accent_component
        self._on_detail_clip_changed()
        self._update_note_editors()
        self._skin = skin
        self._playhead_color = 'Melodic.Playhead'
        self._update_playhead_color()
        self._loop_selector.set_step_duplicator(self._step_duplicator)
        self._show_notifications = True
        return
 def _create_modes(self):
     self._encoder_modes = DisplayingSkinableModesComponent(
         name=u'Encoder_Modes')
     self._encoder_modes.add_mode(u'devices', [
         partial(self._switch_display_layout, sysex.BOX_SCREEN_LAYOUT_BYTE),
         AddLayerMode(
             self._encoder_modes,
             Layer(mode_display=self._elements.text_display_line_5,
                   mode_color_fields=self._elements.color_field_line_2,
                   mode_selection_fields=self._elements.
                   selection_field_line_2)),
         LayerMode(
             self._device_navigation,
             Layer(select_buttons=u'pads_flattened',
                   device_color_fields=u'color_field_lines_0_1_flattened',
                   device_name_display_1=u'text_display_line_0',
                   device_name_display_2=u'text_display_line_2',
                   device_bank_name_display_1=u'text_display_line_1',
                   device_bank_name_display_2=u'text_display_line_3',
                   device_selection_fields=
                   u'selection_field_lines_0_1_flattened',
                   selected_device_name_display=u'center_display_1')),
         SetAttributeMode(self._device_navigation, u'scroll_left_layer',
                          Layer(button=u'up_button')),
         SetAttributeMode(self._device_navigation, u'scroll_right_layer',
                          Layer(button=u'down_button')),
         LayerMode(
             self._device,
             Layer(prev_bank_button=u'display_up_button',
                   next_bank_button=u'display_down_button')),
         AddLayerMode(
             self._mixer,
             Layer(selected_track_color_field=u'center_color_field',
                   selected_track_name_display=u'center_display_1')),
         AddLayerMode(
             self._background,
             Layer(center_display_2=u'center_display_2',
                   scene_launch_buttons=u'scene_launch_buttons',
                   encoders=u'encoders')),
         AddLayerMode(
             self._actions,
             Layer(actions_display=u'text_display_line_5_with_shift',
                   actions_selection_fields=
                   u'selection_field_line_2_with_shift'))
     ])
     self._encoder_modes.add_mode(u'pan', [
         partial(self._switch_display_layout,
                 sysex.KNOB_SCREEN_LAYOUT_BYTE),
         AddLayerMode(
             self._encoder_modes,
             Layer(mode_display=self._elements.text_display_line_3,
                   mode_color_fields=self._elements.color_field_line_2,
                   mode_selection_fields=self._elements.
                   selection_field_line_1,
                   selected_mode_color_field=u'center_color_field')),
         AddLayerMode(
             self._mixer,
             Layer(pan_controls=u'encoders',
                   track_names_display=u'text_display_line_0',
                   pan_value_display=u'text_display_line_1',
                   pan_encoder_color_fields=u'encoder_color_fields',
                   track_color_fields=u'color_field_line_0',
                   mixer_display=u'center_display_1',
                   pan_display=u'center_display_2')),
         AddLayerMode(
             self._background,
             Layer(display_up_button=u'display_up_button',
                   display_down_button=u'display_down_button')),
         AddLayerMode(
             self._actions,
             Layer(actions_display=u'text_display_line_3_with_shift',
                   actions_selection_fields=
                   u'selection_field_line_1_with_shift'))
     ])
     self._encoder_modes.add_mode(u'sends', [
         partial(self._switch_display_layout,
                 sysex.KNOB_SCREEN_LAYOUT_BYTE),
         AddLayerMode(
             self._encoder_modes,
             Layer(mode_display=self._elements.text_display_line_3,
                   mode_color_fields=self._elements.color_field_line_2,
                   mode_selection_fields=self._elements.
                   selection_field_line_1,
                   selected_mode_color_field=u'center_color_field')),
         AddLayerMode(
             self._mixer,
             Layer(send_controls=u'encoders',
                   send_up_button=u'display_up_button',
                   send_down_button=u'display_down_button',
                   track_names_display=u'text_display_line_0',
                   track_color_fields=u'color_field_line_0',
                   mixer_display=u'center_display_1',
                   send_index_display=u'center_display_2',
                   send_value_display=u'text_display_line_1',
                   send_encoder_color_fields=u'encoder_color_fields')),
         AddLayerMode(
             self._actions,
             Layer(actions_display=u'text_display_line_3_with_shift',
                   actions_selection_fields=
                   u'selection_field_line_1_with_shift'))
     ])
     self._pad_modes = ModesComponent(name=u'Pad_Modes')
     self._pad_modes.add_mode(
         u'drum',
         LayerMode(
             self._drum_group,
             Layer(matrix=u'pads_quadratic',
                   scroll_up_button=u'up_button',
                   scroll_down_button=u'down_button')))
     self._pad_modes.add_mode(
         u'disabled',
         AddLayerMode(
             self._background,
             Layer(matrix=u'pads_quadratic',
                   scroll_up_button=u'up_button',
                   scroll_down_button=u'down_button')))
     self._main_modes = ModesComponent(name=u'Encoder_Modes')
     set_main_mode = partial(setattr, self._main_modes, u'selected_mode')
     self._main_modes.add_mode(u'device_control', [
         partial(self._switch_display_layout,
                 sysex.KNOB_SCREEN_LAYOUT_BYTE),
         AddLayerMode(
             self._mixer,
             Layer(track_select_buttons=u'select_buttons',
                   track_names_display=u'text_display_line_3',
                   track_color_fields=u'color_field_line_2',
                   track_selection_fields=u'selection_field_line_1',
                   selected_track_color_field=u'center_color_field')),
         LayerMode(
             self._device_parameters,
             Layer(parameter_controls=u'encoders',
                   name_display_line=u'text_display_line_0',
                   value_display_line=u'text_display_line_1',
                   parameter_color_fields=u'color_field_line_0',
                   encoder_color_fields=u'encoder_color_fields')),
         LayerMode(
             self._session_navigation,
             Layer(up_button=u'up_button', down_button=u'down_button')),
         LayerMode(
             self._device,
             Layer(prev_bank_button=u'display_up_button',
                   next_bank_button=u'display_down_button')),
         LayerMode(
             self._device_navigation,
             Layer(selected_device_name_display=u'center_display_1',
                   selected_device_bank_name_display=u'center_display_2')),
         AddLayerMode(
             self._actions,
             Layer(actions_display=u'text_display_line_3_with_shift',
                   actions_selection_fields=
                   u'selection_field_line_1_with_shift'))
     ])
     self._main_modes.add_mode(
         u'options', [
             self._encoder_modes,
             LayerMode(
                 self._encoder_modes,
                 Layer(devices_button=u'select_buttons_raw[0]',
                       pan_button=u'select_buttons_raw[1]',
                       sends_button=u'select_buttons_raw[2]')),
             SetAttributeMode(self._encoder_modes, u'selected_mode',
                              u'devices'),
             AddLayerMode(
                 self._background,
                 Layer(select_button_3=u'select_buttons_raw[3]',
                       select_button_4=u'select_buttons_raw[4]',
                       select_button_5=u'select_buttons_raw[5]',
                       select_button_6=u'select_buttons_raw[6]',
                       select_button_7=u'select_buttons_raw[7]'))
         ],
         behaviour=ReenterBehaviour(
             on_reenter=partial(set_main_mode, u'device_control')))
     self._main_modes.add_mode(u'grid', [
         partial(self._switch_display_layout,
                 sysex.KNOB_SCREEN_LAYOUT_BYTE), self._pad_modes,
         AddLayerMode(
             self._mixer,
             Layer(track_select_buttons=u'select_buttons',
                   track_names_display=u'text_display_line_3',
                   track_color_fields=u'color_field_line_2',
                   track_selection_fields=u'selection_field_line_1',
                   selected_track_color_field=u'center_color_field')),
         self._select_grid_mode,
         LayerMode(
             self._device_parameters,
             Layer(parameter_controls=u'encoders',
                   name_display_line=u'text_display_line_0',
                   value_display_line=u'text_display_line_1',
                   parameter_color_fields=u'color_field_line_0',
                   encoder_color_fields=u'encoder_color_fields')),
         LayerMode(
             self._device,
             Layer(prev_bank_button=u'display_up_button',
                   next_bank_button=u'display_down_button')),
         LayerMode(
             self._device_navigation,
             Layer(selected_device_name_display=u'center_display_1',
                   selected_device_bank_name_display=u'center_display_2')),
         AddLayerMode(self._background,
                      Layer(scene_launch_buttons=u'scene_launch_buttons')),
         AddLayerMode(
             self._actions,
             Layer(actions_display=u'text_display_line_3_with_shift',
                   actions_selection_fields=
                   u'selection_field_line_1_with_shift'))
     ],
                               behaviour=ReenterBehaviour(
                                   on_reenter=partial(
                                       set_main_mode, u'device_control')))
     self._main_modes.layer = Layer(options_button=u'options_button',
                                    grid_button=u'grid_button')
     self._main_modes.selected_mode = u'device_control'
Beispiel #6
0
 def _create_track_assign_button_modes(self):
     self._background = BackgroundComponent(name=b'Background')
     self._modes = ModesComponent(name=b'Track_Assign_Button_Modes',
                                  is_enabled=False)
     self._modes.add_mode(b'mute', [
         ExtendComboElementMode(
             combo_pairs=zip(self._elements.mute_buttons_raw,
                             self._elements.track_assign_buttons_raw)),
         AddLayerMode(
             self._mixer,
             Layer(mute_color_controls=b'track_assign_color_controls'))
     ])
     self._modes.add_mode(b'solo', [
         ExtendComboElementMode(
             combo_pairs=zip(self._elements.solo_buttons_raw,
                             self._elements.track_assign_buttons_raw)),
         AddLayerMode(
             self._mixer,
             Layer(solo_color_controls=b'track_assign_color_controls'))
     ])
     self._modes.add_mode(b'rec_arm', [
         ExtendComboElementMode(
             combo_pairs=zip(self._elements.arm_buttons_raw,
                             self._elements.track_assign_buttons_raw)),
         AddLayerMode(
             self._mixer,
             Layer(arm_color_controls=b'track_assign_color_controls'))
     ])
     self._modes.add_mode(b'clip_stop', [
         ExtendComboElementMode(
             combo_pairs=zip(self._elements.clip_stop_buttons_raw,
                             self._elements.track_assign_buttons_raw)),
         AddLayerMode(
             self._session,
             Layer(stop_clip_color_controls=b'track_assign_color_controls'))
     ])
     self._modes.add_mode(b'shift', [
         AddLayerMode(
             self._transport,
             Layer(metronome_color_control=
                   b'track_assign_color_controls_raw[4]',
                   clip_trigger_quantization_color_controls=
                   b'physical_track_color_controls')),
         AddLayerMode(
             self._clip_actions,
             Layer(
                 quantize_color_control=b'track_assign_color_controls_raw[0]'
             )),
         LayerMode(
             self._background,
             Layer(button1=b'track_assign_color_controls_raw[1]',
                   button2=b'track_assign_color_controls_raw[2]',
                   button3=b'track_assign_color_controls_raw[3]',
                   button5=b'track_assign_color_controls_raw[5]',
                   button6=b'track_assign_color_controls_raw[6]',
                   button7=b'track_assign_color_controls_raw[7]'))
     ],
                          behaviour=MomentaryBehaviour())
     self._modes.add_mode(b'assign_a', [
         AddLayerMode(
             self._mixer,
             Layer(assign_a_buttons=b'track_assign_buttons',
                   assign_a_color_controls=b'track_assign_color_controls'))
     ],
                          behaviour=MomentaryBehaviour())
     self._modes.add_mode(b'assign_b', [
         AddLayerMode(
             self._mixer,
             Layer(assign_b_buttons=b'track_assign_buttons',
                   assign_b_color_controls=b'track_assign_color_controls'))
     ],
                          behaviour=MomentaryBehaviour())
     self._modes.layer = Layer(mute_button=b'mute_button',
                               solo_button=b'solo_button',
                               rec_arm_button=b'rec_arm_button',
                               clip_stop_button=b'clip_stop_button',
                               shift_button=b'shift_button',
                               assign_a_button=b'assign_a_button',
                               assign_b_button=b'assign_b_button')
     self._modes.selected_mode = b'clip_stop'
Beispiel #7
0
    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 _create_launch_modes(self):
     self._scene_list = SceneListComponent(name=u'Expanded_Scene_Launch', session_ring=self._session_ring, num_scenes=16)
     self._launch_modes = ModesComponent(name=u'Launch_Modes')
     self._launch_modes.add_mode(u'clip_launch', [partial(self._elements.launch_mode_switch.send_value, 0), ExtendComboElementMode(combo_pairs=list(zip(chain(*self._elements.clip_launch_buttons_raw), chain(*self._elements.physical_clip_launch_buttons_raw)))), ExtendComboElementMode(combo_pairs=list(zip(chain(*self._elements.clip_color_controls_raw), chain(*self._elements.physical_clip_color_controls_raw))))], cycle_mode_button_color=u'Mode.Off')
     if not self.is_force:
         self._launch_modes.add_mode(u'scene_launch', [partial(self._elements.launch_mode_switch.send_value, 1), LayerMode(self._scene_list, Layer(scene_launch_buttons=u'mpc_scene_launch_buttons', scene_color_controls=u'mpc_scene_color_controls'))], cycle_mode_button_color=u'Mode.On')
         self._launch_modes.layer = Layer(cycle_mode_button=u'xyfx_button' if self._product_id == MPC_X_PRODUCT_ID else u'sixteen_level_button')
     self._launch_modes.selected_mode = u'clip_launch'
Beispiel #9
0
    def _create_modes(self):
        self._encoder_modes = DisplayingSkinableModesComponent(
            name='Encoder_Modes')
        self._encoder_modes.add_mode('devices', [
            partial(self._switch_display_layout, sysex.BOX_SCREEN_LAYOUT_BYTE),
            AddLayerMode(
                self._encoder_modes,
                Layer(mode_display=self._elements.text_display_line_5,
                      mode_color_fields=self._elements.color_field_line_2,
                      mode_selection_fields=self._elements.
                      selection_field_line_2)),
            LayerMode(
                self._device_navigation,
                Layer(select_buttons='pads_flattened',
                      device_color_fields='color_field_lines_0_1_flattened',
                      device_name_display_1='text_display_line_0',
                      device_name_display_2='text_display_line_2',
                      device_bank_name_display_1='text_display_line_1',
                      device_bank_name_display_2='text_display_line_3',
                      device_selection_fields=
                      'selection_field_lines_0_1_flattened',
                      selected_device_name_display='center_display_1')),
            SetAttributeMode(self._device_navigation, 'scroll_left_layer',
                             Layer(button='up_button')),
            SetAttributeMode(self._device_navigation, 'scroll_right_layer',
                             Layer(button='down_button')),
            LayerMode(
                self._device,
                Layer(prev_bank_button='display_up_button',
                      next_bank_button='display_down_button')),
            AddLayerMode(
                self._mixer,
                Layer(selected_track_color_field='center_color_field',
                      selected_track_name_display='center_display_1')),
            AddLayerMode(
                self._background,
                Layer(center_display_2='center_display_2',
                      scene_launch_buttons='scene_launch_buttons',
                      encoders='encoders'))
        ])
        self._main_modes = ModesComponent(name='Encoder_Modes')
        self._main_modes.add_mode('device_control', [
            partial(self._switch_display_layout,
                    sysex.KNOB_SCREEN_LAYOUT_BYTE),
            AddLayerMode(
                self._mixer,
                Layer(track_select_buttons='select_buttons',
                      track_names_display='text_display_line_3',
                      track_color_fields='color_field_line_2',
                      track_selection_fields='selection_field_line_1',
                      selected_track_color_field='center_color_field')),
            LayerMode(
                self._device_parameters,
                Layer(parameter_controls='encoders',
                      name_display_line='text_display_line_0',
                      value_display_line='text_display_line_1',
                      parameter_color_fields='color_field_line_0',
                      encoder_color_fields='encoder_color_fields')),
            LayerMode(self._session_navigation,
                      Layer(up_button='up_button', down_button='down_button')),
            LayerMode(
                self._device,
                Layer(prev_bank_button='display_up_button',
                      next_bank_button='display_down_button')),
            LayerMode(
                self._device_navigation,
                Layer(selected_device_name_display='center_display_1',
                      selected_device_bank_name_display='center_display_2'))
        ])

        self._main_modes.selected_mode = 'device_control'