def __init__(self, *a, **k): super(InstrumentPresetsComponent, self).__init__(*a, **k) self._line_names = recursive_map(DisplayDataSource, (('Scale layout:', ), ('4th ^', '4th >', '3rd ^', '3rd >', 'Sequent ^', 'Sequent >', '', ''))) self.add_mode('scale_p4_vertical', partial(self._set_scale_mode, True, 3), self._line_names[1][0]) self.add_mode('scale_p4_horizontal', partial(self._set_scale_mode, False, 3), self._line_names[1][1]) self.add_mode('scale_m3_vertical', partial(self._set_scale_mode, True, 2), self._line_names[1][2]) self.add_mode('scale_m3_horizontal', partial(self._set_scale_mode, False, 2), self._line_names[1][3]) self.add_mode('scale_m6_vertical', partial(self._set_scale_mode, True, None), self._line_names[1][4]) self.add_mode('scale_m6_horizontal', partial(self._set_scale_mode, False, None), self._line_names[1][5]) return
def __init__(self, *a, **k): super(InstrumentScalesComponent, self).__init__(*a, **k) self._key_center_slots = self.register_slot_manager() self._key_center_buttons = [] self._encoder_touch_button_slots = self.register_slot_manager() self._encoder_touch_buttons = [] self._top_key_center_buttons = None self._bottom_key_center_buttons = None self._absolute_relative_button = None self._diatonic_chromatic_button = None table = consts.MUSICAL_MODES self._info_sources = map(DisplayDataSource, ('Scale selection:', '', '')) self._line_sources = recursive_map(DisplayDataSource, (('', '', '', '', '', '', ''), ('', '', '', '', '', '', ''))) self._modus_sources = map( partial(DisplayDataSource, adjust_string_fn=adjust_string_crop), ('', '', '', '')) self._presets = self.register_component(InstrumentPresetsComponent()) self._presets_enabler = self.register_component( EnablingModesComponent(component=self._presets, toggle_value='Scales.PresetsEnabled')) self._presets_enabler.momentary_toggle = True self._presets.selected_mode = 'scale_p4_vertical' self._modus_list = self.register_component( ListComponent(data_sources=self._modus_sources)) self._modus_list.scrollable_list.fixed_offset = 1 self._modus_list.scrollable_list.assign_items([ Modus(name=table[i], notes=table[i + 1]) for i in xrange(0, len(consts.MUSICAL_MODES), 2) ]) self._on_selected_modus.subject = self._modus_list.scrollable_list self._update_data_sources()
def __init__(self, *a, **k): super(QuantizationSettingsComponent, self).__init__(*a, **k) self._display_lines = recursive_map(DisplayDataSource, (('', '', '', '', '', '', '', ''), ('Swing', 'Quantize', 'Quantize', '', '', '', '', 'Record'), ('Amount', 'To', 'Amount', '', '', '', '', 'Quantize'), ('', '', '', '', '', '', '', ''))) self._swing_amount_display = self._display_lines[0][0] self._quantize_to_display = self._display_lines[0][1] self._quantize_amount_display = self._display_lines[0][2] self._record_quantization_display = self._display_lines[0][7] self._record_quantization_on_display = self._display_lines[3][7] default_quantize = RecordingQuantization.rec_q_sixtenth self._record_quantization = default_quantize self._quantize_to = default_quantize self._quantize_amount = 1.0 default_quantize_float = record_quantization_to_float(default_quantize) self._record_quantization_float = default_quantize_float self._quantize_to_float = default_quantize_float self._on_swing_amount_changed_in_live.subject = self.song() self._on_swing_amount_changed_in_live() self._on_record_quantization_changed_in_live.subject = self.song() self._on_record_quantization_changed_in_live() self._update_swing_amount_display() self._update_quantize_to_display() self._update_quantize_amount_display()
def __init__(self, *a, **k): super(InstrumentScalesComponent, self).__init__(*a, **k) self._key_center_slots = self.register_slot_manager() self._key_center_buttons = [] self._encoder_touch_button_slots = self.register_slot_manager() self._encoder_touch_buttons = [] self._top_key_center_buttons = None self._bottom_key_center_buttons = None self._absolute_relative_button = None self._diatonic_chromatic_button = None table = consts.MUSICAL_MODES self._modus_list = [ Modus(table[k], table[k + 1]) for k in xrange(0, len(consts.MUSICAL_MODES), 2) ] self._selected_modus = 0 self._line_sources = recursive_map(DisplayDataSource, SCALES_DISPLAY_STRINGS) self._presets = self.register_component(InstrumentPresetsComponent()) self._presets.set_enabled(False) self._presets_modes = self.register_component(ModesComponent()) self._presets_modes.add_mode('disabled', None) self._presets_modes.add_mode('enabled', self._presets, 'Scales.PresetsEnabled') self._presets_modes.selected_mode = 'disabled' self._presets_modes.momentary_toggle = True self._presets.selected_mode = 'scale_p4_vertical' self._scales_info = self.register_component(ScalesInfoComponent()) self._scales_info.set_enabled(True) self._modus_scroll = self.register_component(ScrollComponent()) self._modus_scroll.scrollable = self self._update_data_sources()
def _create_controls(self): self._aux_button = make_button(b'Aux_Button', 32, is_modifier=True) self._cursor_up_button = make_button(b'Cursor_Up_Button', 12) self._cursor_down_button = make_button(b'Cursor_Down_Button', 13) self._modified_cursor_up_button = with_modifier(self._cursor_up_button, self._aux_button) self._modified_cursor_down_button = with_modifier(self._cursor_down_button, self._aux_button) self._start_stop_button = make_button(b'Start_Stop_Button', 16) self._modified_start_stop_button = with_modifier(self._start_stop_button, self._aux_button) self._recall_button = make_button(b'Recall_Button', 17) self._store_button = make_button(b'Store_Button', 18) self._tone_filter_knobs = ButtonMatrixElement(rows=[ [ make_encoder(b'Tone_Filter_Encoder_%d' % (col,), identifier) for col, identifier in enumerate(xrange(102, 113)) ]], name=b'Tone_Filter_Knobs') step_buttons_raw = [ [ make_button(b'Step_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(20, 31)) ]] self._step_buttons = ButtonMatrixElement(rows=step_buttons_raw, name=b'Step_Buttons') self._modified_step_buttons = ButtonMatrixElement(rows=recursive_map(partial(with_modifier, modifier=self._aux_button), step_buttons_raw), name=b'Step_Buttons_With_Modifier') self._select_buttons = ButtonMatrixElement(rows=[ [ make_button(b'Select_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(60, 71)) ]], name=b'Select_Buttons') self._bfx_buttons = ButtonMatrixElement(rows=[ [ make_button(b'BFX_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(80, 91)) ]], name=b'BFX_Buttons') self._mfx_buttons = ButtonMatrixElement(rows=[ [ make_button(b'MFX_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(100, 111)) ]], name=b'MFX_Buttons')
def __init__(self, *a, **k): super(InstrumentPresetsComponent, self).__init__(*a, **k) self._line_names = recursive_map(DisplayDataSource, (('Scale layout:',), ('4th ^', '4th >', '3rd ^', '3rd >', 'Sequent ^', 'Sequent >', '', ''))) self.add_mode('scale_p4_vertical', partial(self._set_scale_mode, True, 3), self._line_names[1][0]) self.add_mode('scale_p4_horizontal', partial(self._set_scale_mode, False, 3), self._line_names[1][1]) self.add_mode('scale_m3_vertical', partial(self._set_scale_mode, True, 2), self._line_names[1][2]) self.add_mode('scale_m3_horizontal', partial(self._set_scale_mode, False, 2), self._line_names[1][3]) self.add_mode('scale_m6_vertical', partial(self._set_scale_mode, True, None), self._line_names[1][4]) self.add_mode('scale_m6_horizontal', partial(self._set_scale_mode, False, None), self._line_names[1][5])
def __init__(self, *a, **k): super(InstrumentPresetsComponent, self).__init__(*a, **k) self._unused_button_slots = self.register_slot_manager() self._unused_buttons = [] self._line_names = recursive_map(DisplayDataSource, INSTRUMENT_PRESETS_DISPLAY) self.add_mode('scale_p4_vertical', partial(self._set_scale_mode, 0, True, 3), self._line_names[1][0]) self.add_mode('scale_p4_horizontal', partial(self._set_scale_mode, 0, False, 3), self._line_names[1][1]) self.add_mode('scale_m3_vertical', partial(self._set_scale_mode, 0, True, 2), self._line_names[1][2]) self.add_mode('scale_m3_horizontal', partial(self._set_scale_mode, 0, False, 2), self._line_names[1][3]) self.add_mode('scale_m6_vertical', partial(self._set_scale_mode, -2, True, None), self._line_names[1][4]) self.add_mode('scale_m6_horizontal', partial(self._set_scale_mode, -2, False, None), self._line_names[1][5])
def _create_controls(self): """ Add some additional stuff baby """ super(APSequencer, self)._create_controls() self._grid_resolution = GridResolution() self._velocity_slider = ButtonSliderElement( tuple(self._scene_launch_buttons_raw[::-1])) double_press_rows = recursive_map(DoublePressElement, self._matrix_rows_raw) self._double_press_matrix = ButtonMatrixElement( name='Double_Press_Matrix', rows=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._playhead = PlayheadElement(self._c_instance.playhead) # Make these prioritized resources, which share between Layers() equally # Rather than building a stack self._pan_button._resource_type = PrioritizedResource self._user_button._resource_type = PrioritizedResource self._view_control = ViewControlComponent(name='View_Control') self._view_control.set_enabled(False)
def _create_controls(self): """ Add some additional stuff baby """ super(APSequencer, self)._create_controls() self._grid_resolution = GridResolution() self._velocity_slider = ButtonSliderElement(tuple(self._scene_launch_buttons_raw[::-1])) double_press_rows = recursive_map(DoublePressElement, self._matrix_rows_raw) self._double_press_matrix = ButtonMatrixElement(name='Double_Press_Matrix', rows=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._playhead = PlayheadElement(self._c_instance.playhead) # Make these prioritized resources, which share between Layers() equally # Rather than building a stack self._pan_button._resource_type = PrioritizedResource self._user_button._resource_type = PrioritizedResource
def _create_controls(self): multi_button_channels = consts.USER_MODE_CHANNELS self._session_button_single = make_button(108, 0, 'Session_Mode_Button', msg_type=MIDI_CC_TYPE, is_modifier=True) self._session_button = FilteringMultiElement([ self._session_button_single] + [ make_button(108, channel, msg_type=MIDI_CC_TYPE, name='Session_Mode_Button_ch_%d' % (channel,)) for channel in multi_button_channels ], feedback_channels=[ 0]) self._user_1_button = FilteringMultiElement([ make_button(109, channel, msg_type=MIDI_CC_TYPE, name='User_1_Mode_Button_ch_%d' % (channel,)) for channel in (0, ) + multi_button_channels ], feedback_channels=[ 0, 5, 6, 7]) self._user_2_button = FilteringMultiElement([ make_button(110, channel, msg_type=MIDI_CC_TYPE, name='User_2_Mode_Button_ch_%d' % (channel,)) for channel in (0, ) + multi_button_channels ], feedback_channels=[ 0, 13, 14, 15]) self._mixer_button = FilteringMultiElement([ make_button(111, channel, msg_type=MIDI_CC_TYPE, name='Mixer_Mode_Button_ch_%d' % (channel,)) for channel in (0, ) + multi_button_channels ], feedback_channels=[ 0]) self._up_button = make_button(104, 0, msg_type=MIDI_CC_TYPE, name='Up_Button') self._down_button = make_button(105, 0, msg_type=MIDI_CC_TYPE, name='Down_Button') self._left_button = make_button(106, 0, msg_type=MIDI_CC_TYPE, name='Left_Button') self._right_button = make_button(107, 0, msg_type=MIDI_CC_TYPE, name='Right_Button') self._session_matrix_raw = [ [ make_button(col + offset, 0, name='Session_Matrix_Button_%d_%d' % (col, row)) for col in xrange(consts.SESSION_WIDTH) ] for row, offset in enumerate(xrange(81, 10, -10)) ] self._session_matrix = ButtonMatrixElement(rows=self._session_matrix_raw, name='Session_Matrix') self._scene_launch_matrix_raw = [ make_button(identifier, 0, name='Scene_Launch_Button_%d' % (index,)) for index, identifier in enumerate(xrange(89, 18, -10)) ] self._scene_launch_matrix = ButtonMatrixElement(rows=[ self._scene_launch_matrix_raw], name='Scene_Launch_Buttons') self._session_zoom_matrix = ButtonMatrixElement(rows=recursive_map(partial(with_modifier, self._session_button_single), self._session_matrix_raw)) self._volume_reset_buttons = self._session_matrix.submatrix[:, :1] self._pan_reset_buttons = self._session_matrix.submatrix[:, 1:2] self._send_a_reset_buttons = self._session_matrix.submatrix[:, 2:3] self._send_b_reset_buttons = self._session_matrix.submatrix[:, 3:4] self._stop_clip_buttons = self._session_matrix.submatrix[:, 4:5] self._mute_buttons = self._session_matrix.submatrix[:, 5:6] self._solo_buttons = self._session_matrix.submatrix[:, 6:7] self._arm_buttons = self._session_matrix.submatrix[:, 7:] self._volume_button = self._scene_launch_matrix_raw[0] self._pan_button = self._scene_launch_matrix_raw[1] self._send_a_button = self._scene_launch_matrix_raw[2] self._send_b_button = self._scene_launch_matrix_raw[3] self._stop_button = self._scene_launch_matrix_raw[4] self._mute_button = self._scene_launch_matrix_raw[5] self._solo_button = self._scene_launch_matrix_raw[6] self._record_arm_button = self._scene_launch_matrix_raw[7] self._sliders = ButtonMatrixElement(rows=[ [ SliderElement(MIDI_CC_TYPE, 0, identifier) for identifier in xrange(21, 29) ]]) self._create_user_controls()
def _create_controls(self): """ Add some additional stuff baby """ super(PHAZE, self)._create_controls() self._grid_resolution = GridResolution() self._velocity_slider = ButtonSliderElement(tuple(self._scene_launch_buttons_raw[::-1])) double_press_rows = recursive_map(DoublePressElement, self._matrix_rows_raw) self._double_press_matrix = ButtonMatrixElement(name='Double_Press_Matrix', rows=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._playhead = PlayheadElement(self._c_instance.playhead) # Make these prioritized resources, which share between Layers() equally # Rather than building a stack """not sure but we greened out below on 05/11/17.. maybe work on order of definitions so as to tidy up some""" self._pan_button._resource_type = PrioritizedResource self._user_button._resource_type = PrioritizedResource
def _create_controls(self): self._aux_button = make_button('Aux_Button', 32, is_modifier=True) self._cursor_up_button = make_button('Cursor_Up_Button', 12) self._cursor_down_button = make_button('Cursor_Down_Button', 13) self._modified_cursor_up_button = with_modifier(self._cursor_up_button, self._aux_button) self._modified_cursor_down_button = with_modifier(self._cursor_down_button, self._aux_button) self._start_stop_button = make_button('Start_Stop_Button', 16) self._modified_start_stop_button = with_modifier(self._start_stop_button, self._aux_button) self._recall_button = make_button('Recall_Button', 17) self._store_button = make_button('Store_Button', 18) self._tone_filter_knobs = ButtonMatrixElement(rows=[[ make_encoder('Tone_Filter_Encoder_%d' % (col,), identifier) for col, identifier in enumerate(xrange(102, 113)) ]], name='Tone_Filter_Knobs') step_buttons_raw = [[ make_button('Step_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(20, 31)) ]] self._step_buttons = ButtonMatrixElement(rows=step_buttons_raw, name='Step_Buttons') self._modified_step_buttons = ButtonMatrixElement(rows=recursive_map(partial(with_modifier, modifier=self._aux_button), step_buttons_raw), name='Step_Buttons_With_Modifier') self._select_buttons = ButtonMatrixElement(rows=[[ make_button('Select_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(60, 71)) ]], name='Select_Buttons') self._bfx_buttons = ButtonMatrixElement(rows=[[ make_button('BFX_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(80, 91)) ]], name='BFX_Buttons') self._mfx_buttons = ButtonMatrixElement(rows=[[ make_button('MFX_Button_%d' % (col,), identifier) for col, identifier in enumerate(xrange(100, 111)) ]], name='MFX_Buttons')
def __init__(self, *a, **k): super(InstrumentScalesComponent, self).__init__(*a, **k) self._key_center_buttons = [] self._encoder_touch_button_slots = self.register_slot_manager() self._encoder_touch_buttons = [] self._top_key_center_buttons = None self._bottom_key_center_buttons = None self._absolute_relative_button = None self._diatonic_chromatic_button = None table = consts.MUSICAL_MODES self._info_sources = map(DisplayDataSource, ('Scale selection:', '', '')) self._line_sources = recursive_map(DisplayDataSource, (('', '', '', '', '', '', ''), ('', '', '', '', '', '', ''))) self._modus_sources = map(partial(DisplayDataSource, adjust_string_fn=adjust_string_crop), ('', '', '', '')) self._presets = self.register_component(InstrumentPresetsComponent(is_enabled=False)) self._presets.selected_mode = 'scale_p4_vertical' self._modus_list = self.register_component(ListComponent(data_sources=self._modus_sources)) self._modus_list.scrollable_list.fixed_offset = 1 self._modus_list.scrollable_list.assign_items([ Modus(name=table[i], notes=table[i + 1]) for i in xrange(0, len(consts.MUSICAL_MODES), 2) ]) self._on_selected_modus.subject = self._modus_list.scrollable_list self._update_data_sources()
def _create_controls(self): multi_button_channels = consts.USER_MODE_CHANNELS self._session_button_single = make_button(108, 0, 'Session_Mode_Button', msg_type=MIDI_CC_TYPE, is_modifier=True) self._session_button = FilteringMultiElement([self._session_button_single] + [ make_button(108, channel, msg_type=MIDI_CC_TYPE, name='Session_Mode_Button_ch_%d' % (channel,)) for channel in multi_button_channels ], feedback_channels=[0]) self._user_1_button = FilteringMultiElement([ make_button(109, channel, msg_type=MIDI_CC_TYPE, name='User_1_Mode_Button_ch_%d' % (channel,)) for channel in (0,) + multi_button_channels ], feedback_channels=[0, 5, 6, 7]) self._user_2_button = FilteringMultiElement([ make_button(110, channel, msg_type=MIDI_CC_TYPE, name='User_2_Mode_Button_ch_%d' % (channel,)) for channel in (0,) + multi_button_channels ], feedback_channels=[0, 13, 14, 15]) self._mixer_button = FilteringMultiElement([ make_button(111, channel, msg_type=MIDI_CC_TYPE, name='Mixer_Mode_Button_ch_%d' % (channel,)) for channel in (0,) + multi_button_channels ], feedback_channels=[0]) self._up_button = make_button(104, 0, msg_type=MIDI_CC_TYPE, name='Up_Button') self._down_button = make_button(105, 0, msg_type=MIDI_CC_TYPE, name='Down_Button') self._left_button = make_button(106, 0, msg_type=MIDI_CC_TYPE, name='Left_Button') self._right_button = make_button(107, 0, msg_type=MIDI_CC_TYPE, name='Right_Button') self._session_matrix_raw = [ [ make_button(col + offset, 0, name='Session_Matrix_Button_%d_%d' % (col, row)) for col in xrange(consts.SESSION_WIDTH) ] for row, offset in enumerate(xrange(81, 10, -10)) ] self._session_matrix = ButtonMatrixElement(rows=self._session_matrix_raw, name='Session_Matrix') self._scene_launch_matrix_raw = [ make_button(identifier, 0, name='Scene_Launch_Button_%d' % (index,)) for index, identifier in enumerate(xrange(89, 18, -10)) ] self._scene_launch_matrix = ButtonMatrixElement(rows=[self._scene_launch_matrix_raw], name='Scene_Launch_Buttons') self._session_zoom_matrix = ButtonMatrixElement(rows=recursive_map(partial(with_modifier, self._session_button_single), self._session_matrix_raw)) self._volume_reset_buttons = self._session_matrix.submatrix[:, :1] self._pan_reset_buttons = self._session_matrix.submatrix[:, 1:2] self._send_a_reset_buttons = self._session_matrix.submatrix[:, 2:3] self._send_b_reset_buttons = self._session_matrix.submatrix[:, 3:4] self._stop_clip_buttons = self._session_matrix.submatrix[:, 4:5] self._mute_buttons = self._session_matrix.submatrix[:, 5:6] self._solo_buttons = self._session_matrix.submatrix[:, 6:7] self._arm_buttons = self._session_matrix.submatrix[:, 7:] self._volume_button = self._scene_launch_matrix_raw[0] self._pan_button = self._scene_launch_matrix_raw[1] self._send_a_button = self._scene_launch_matrix_raw[2] self._send_b_button = self._scene_launch_matrix_raw[3] self._stop_button = self._scene_launch_matrix_raw[4] self._mute_button = self._scene_launch_matrix_raw[5] self._solo_button = self._scene_launch_matrix_raw[6] self._record_arm_button = self._scene_launch_matrix_raw[7] self._sliders = ButtonMatrixElement(rows=[[ SliderElement(MIDI_CC_TYPE, 0, identifier) for identifier in xrange(21, 29) ]]) self._create_user_controls()
def _create_controls(self): make_on_off_button = partial(make_button, skin=self._default_skin) make_color_button = partial(make_button, skin=self._color_skin) self._shift_button = make_button(0, 98, resource_type=PrioritizedResource, name=u'Shift_Button') self._right_button = make_button(0, 96, name=u'Bank_Select_Right_Button') self._left_button = make_button(0, 97, name=u'Bank_Select_Left_Button') self._up_button = make_button(0, 94, name=u'Bank_Select_Up_Button') self._down_button = make_button(0, 95, name=u'Bank_Select_Down_Button') self._session_matrix = ButtonMatrixElement(name=u'Button_Matrix') self._scene_launch_buttons_raw = [ make_color_button(0, index + 82, name=u'Scene_%d_Launch_Button' % index) for index in range(SESSION_HEIGHT) ] self._track_stop_buttons = [ make_color_button(index, 52, name=u'Track_%d_Stop_Button' % index) for index in range(SESSION_WIDTH) ] self._stop_all_button = make_color_button( 0, 81, name=u'Stop_All_Clips_Button') self._matrix_rows_raw = [[ make_color_button(track_index, scene_index + 53, name=u'%d_Clip_%d_Button' % (track_index, scene_index)) for track_index in range(SESSION_WIDTH) ] for scene_index in range(SESSION_HEIGHT)] for row in self._matrix_rows_raw: self._session_matrix.add_row(row) self._selected_slot_launch_button = make_pedal_button( 67, name=u'Selected_Slot_Launch_Button') self._selected_scene_launch_button = make_pedal_button( 64, name=u'Selected_Scene_Launch_Button') self._volume_controls = [] self._arm_buttons = [] self._solo_buttons = [] self._mute_buttons = [] self._select_buttons = [] for index in range(MIXER_SIZE): self._volume_controls.append( make_slider(index, 7, name=u'%d_Volume_Control' % index)) self._arm_buttons.append( make_on_off_button(index, 48, name=u'%d_Arm_Button' % index)) self._solo_buttons.append( make_on_off_button(index, 49, name=u'%d_Solo_Button' % index)) self._mute_buttons.append( make_on_off_button(index, 50, name=u'%d_Mute_Button' % index)) self._select_buttons.append( make_on_off_button(index, 51, name=u'%d_Select_Button' % index)) self._crossfader_control = make_slider(0, 15, name=u'Crossfader') self._master_volume_control = make_slider( 0, 14, name=u'Master_Volume_Control') self._master_select_button = make_on_off_button( 0, 80, name=u'Master_Select_Button') self._prehear_control = make_encoder(0, 47, name=u'Prehear_Volume_Control') self._device_bank_buttons = [] self._device_param_controls_raw = [] bank_button_labels = (u'Clip_Track_Button', u'Device_On_Off_Button', u'Previous_Device_Button', u'Next_Device_Button', u'Detail_View_Button', u'Rec_Quantization_Button', u'Midi_Overdub_Button', u'Metronome_Button') for index in range(8): self._device_bank_buttons.append( make_on_off_button(0, 58 + index, name=bank_button_labels[index])) encoder_name = u'Device_Control_%d' % index ringed_encoder = make_ring_encoder(16 + index, 24 + index, name=encoder_name) self._device_param_controls_raw.append(ringed_encoder) self._play_button = make_button(0, 91, name=u'Play_Button') self._stop_button = make_button(0, 92, name=u'Stop_Button') self._record_button = make_button(0, 93, name=u'Record_Button') self._nudge_up_button = make_button(0, 100, name=u'Nudge_Up_Button') self._nudge_down_button = make_button(0, 101, name=u'Nudge_Down_Button') self._tap_tempo_button = make_button(0, 99, name=u'Tap_Tempo_Button') self._global_bank_buttons = [] self._global_param_controls = [] for index in range(8): encoder_name = u'Track_Control_%d' % index ringed_encoder = make_ring_encoder(48 + index, 56 + index, name=encoder_name) self._global_param_controls.append(ringed_encoder) self._global_bank_buttons = [ make_on_off_button(0, 87 + index, name=name) for index, name in enumerate((u'Pan_Button', u'Send_A_Button', u'Send_B_Button', u'Send_C_Button')) ] self._device_clip_toggle_button = self._device_bank_buttons[0] self._device_on_off_button = self._device_bank_buttons[1] self._detail_left_button = self._device_bank_buttons[2] self._detail_right_button = self._device_bank_buttons[3] self._detail_toggle_button = self._device_bank_buttons[4] self._rec_quantization_button = self._device_bank_buttons[5] self._overdub_button = self._device_bank_buttons[6] self._metronome_button = self._device_bank_buttons[7] def wrap_matrix(control_list, wrapper=nop): return ButtonMatrixElement(rows=[list(map(wrapper, control_list))]) self._scene_launch_buttons = wrap_matrix( self._scene_launch_buttons_raw) self._track_stop_buttons = wrap_matrix(self._track_stop_buttons) self._volume_controls = wrap_matrix(self._volume_controls) self._arm_buttons = wrap_matrix(self._arm_buttons) self._solo_buttons = wrap_matrix(self._solo_buttons) self._mute_buttons = wrap_matrix(self._mute_buttons) self._select_buttons = wrap_matrix(self._select_buttons) self._device_param_controls = wrap_matrix( self._device_param_controls_raw) self._device_bank_buttons = wrap_matrix( self._device_bank_buttons, partial(DeviceBankButtonElement, modifiers=[self._shift_button])) self._shifted_matrix = ButtonMatrixElement( rows=recursive_map(self._with_shift, self._matrix_rows_raw)) self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]])
def _create_controls(self): make_on_off_button = partial(make_button, skin=self._default_skin) def make_color_button(*a, **k): button = make_button(skin=self._color_skin, *a, **k) button.is_rgb = True button.num_delayed_messages = 2 return button def make_matrix_button(track, scene): return make_color_button(0, 32 + track - NUM_TRACKS * scene, name=u'%d_Clip_%d_Button' % (track, scene)) def make_stop_button(track): return make_button(track, 52, name=u'%d_Stop_Button' % track, skin=self._stop_button_skin) self._shift_button = make_button(0, 98, name=u'Shift_Button', resource_type=PrioritizedResource) self._bank_button = make_on_off_button(0, 103, name=u'Bank_Button') self._left_button = make_button(0, 97, name=u'Bank_Select_Left_Button') self._right_button = make_button(0, 96, name=u'Bank_Select_Right_Button') self._up_button = make_button(0, 94, name=u'Bank_Select_Up_Button') self._down_button = make_button(0, 95, name=u'Bank_Select_Down_Button') self._stop_buttons = ButtonMatrixElement( rows=[[make_stop_button(track) for track in xrange(NUM_TRACKS)]]) self._stop_all_button = make_button(0, 81, name=u'Stop_All_Clips_Button') self._scene_launch_buttons_raw = [ make_color_button(0, scene + 82, name=u'Scene_%d_Launch_Button' % scene) for scene in xrange(NUM_SCENES) ] self._scene_launch_buttons = ButtonMatrixElement( rows=[self._scene_launch_buttons_raw]) self._matrix_rows_raw = [[ make_matrix_button(track, scene) for track in xrange(NUM_TRACKS) ] for scene in xrange(NUM_SCENES)] self._session_matrix = ButtonMatrixElement(rows=self._matrix_rows_raw) self._pan_button = make_on_off_button(0, 87, name=u'Pan_Button') self._sends_button = make_on_off_button( 0, 88, name=u'Sends_Button', resource_type=PrioritizedResource) self._user_button = make_on_off_button(0, 89, name=u'User_Button') self._mixer_encoders = ButtonMatrixElement(rows=[[ make_ring_encoder( 48 + track, 56 + track, name=u'Track_Control_%d' % track) for track in xrange(NUM_TRACKS) ]]) self._volume_controls = ButtonMatrixElement(rows=[[ make_slider(track, 7, name=u'%d_Volume_Control' % track) for track in xrange(NUM_TRACKS) ]]) self._master_volume_control = make_slider( 0, 14, name=u'Master_Volume_Control') self._prehear_control = make_encoder(0, 47, name=u'Prehear_Volume_Control') self._crossfader_control = make_slider(0, 15, name=u'Crossfader') self._raw_select_buttons = [ make_on_off_button(channel, 51, name=u'%d_Select_Button' % channel) for channel in xrange(NUM_TRACKS) ] self._arm_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 48, name=u'%d_Arm_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._solo_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 49, name=u'%d_Solo_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._mute_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 50, name=u'%d_Mute_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._crossfade_buttons = ButtonMatrixElement(rows=[[ make_button(channel, 66, name=u'%d_Crossfade_Button' % channel, skin=self._crossfade_button_skin) for channel in xrange(NUM_TRACKS) ]]) self._select_buttons = ButtonMatrixElement( rows=[self._raw_select_buttons]) self._master_select_button = make_on_off_button( channel=0, identifier=80, name=u'Master_Select_Button') self._send_select_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._sends_button]) for button in self._raw_select_buttons ]]) self._quantization_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._shift_button]) for button in self._raw_select_buttons ]]) self._metronome_button = make_on_off_button(0, 90, name=u'Metronome_Button') self._play_button = make_on_off_button(0, 91, name=u'Play_Button') self._record_button = make_on_off_button(0, 93, name=u'Record_Button') self._session_record_button = make_on_off_button( 0, 102, name=u'Session_Record_Button') self._nudge_down_button = make_button(0, 100, name=u'Nudge_Down_Button') self._nudge_up_button = make_button(0, 101, name=u'Nudge_Up_Button') self._tap_tempo_button = make_button(0, 99, name=u'Tap_Tempo_Button') self._tempo_control = make_encoder(0, 13, name=u'Tempo_Control') self._device_controls = ButtonMatrixElement(rows=[[ make_ring_encoder( 16 + index, 24 + index, name=u'Device_Control_%d' % index) for index in xrange(8) ]]) self._device_control_buttons_raw = [ make_on_off_button(0, 58 + index) for index in xrange(8) ] self._device_bank_buttons = ButtonMatrixElement(rows=[[ DeviceBankButtonElement(button, modifiers=[self._shift_button]) for button in self._device_control_buttons_raw ]]) self._device_prev_bank_button = self._device_control_buttons_raw[2] self._device_prev_bank_button.name = u'Device_Prev_Bank_Button' self._device_next_bank_button = self._device_control_buttons_raw[3] self._device_next_bank_button.name = u'Device_Next_Bank_Button' self._device_on_off_button = self._device_control_buttons_raw[4] self._device_on_off_button.name = u'Device_On_Off_Button' self._device_lock_button = self._device_control_buttons_raw[5] self._device_lock_button.name = u'Device_Lock_Button' self._prev_device_button = self._device_control_buttons_raw[0] self._prev_device_button.name = u'Prev_Device_Button' self._next_device_button = self._device_control_buttons_raw[1] self._next_device_button.name = u'Next_Device_Button' self._clip_device_button = self._device_control_buttons_raw[6] self._clip_device_button.name = u'Clip_Device_Button' self._detail_view_button = self._device_control_buttons_raw[7] self._detail_view_button.name = u'Detail_View_Button' self._foot_pedal_button = DoublePressElement( make_pedal_button(64, name=u'Foot_Pedal')) self._shifted_matrix = ButtonMatrixElement( rows=recursive_map(self._with_shift, self._matrix_rows_raw)) self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]])
def _create_controls(self): make_on_off_button = partial(make_button, skin=self._default_skin) def make_color_button(*a, **k): button = make_button(skin=self._color_skin, *a, **k) button.is_rgb = True button.num_delayed_messages = 2 return button def make_matrix_button(track, scene): return make_color_button(0, 32 + track - NUM_TRACKS * scene, name='%d_Clip_%d_Button' % (track, scene)) def make_stop_button(track): return make_button(track, 52, name='%d_Stop_Button' % track, skin=self._stop_button_skin) self._shift_button = make_button(0, 98, name='Shift_Button', resource_type=PrioritizedResource) self._bank_button = make_on_off_button(0, 103, name='Bank_Button') self._left_button = make_button(0, 97, name='Bank_Select_Left_Button') self._right_button = make_button(0, 96, name='Bank_Select_Right_Button') self._up_button = make_button(0, 94, name='Bank_Select_Up_Button') self._down_button = make_button(0, 95, name='Bank_Select_Down_Button') self._stop_buttons = ButtonMatrixElement(rows=[[ make_stop_button(track) for track in xrange(NUM_TRACKS) ]]) self._stop_all_button = make_button(0, 81, name='Stop_All_Clips_Button') self._scene_launch_buttons_raw = [ make_color_button(0, scene + 82, name='Scene_%d_Launch_Button' % scene) for scene in xrange(NUM_SCENES) ] self._scene_launch_buttons = ButtonMatrixElement(rows=[self._scene_launch_buttons_raw]) self._matrix_rows_raw = [ [ make_matrix_button(track, scene) for track in xrange(NUM_TRACKS) ] for scene in xrange(NUM_SCENES) ] self._session_matrix = ButtonMatrixElement(rows=self._matrix_rows_raw) self._pan_button = make_on_off_button(0, 87, name='Pan_Button') self._sends_button = make_on_off_button(0, 88, name='Sends_Button', resource_type=PrioritizedResource) self._user_button = make_on_off_button(0, 89, name='User_Button') self._mixer_encoders = ButtonMatrixElement(rows=[[ make_ring_encoder(48 + track, 56 + track, name='Track_Control_%d' % track) for track in xrange(NUM_TRACKS) ]]) self._volume_controls = ButtonMatrixElement(rows=[[ make_slider(track, 7, name='%d_Volume_Control' % track) for track in xrange(NUM_TRACKS) ]]) self._master_volume_control = make_slider(0, 14, name='Master_Volume_Control') self._prehear_control = make_encoder(0, 47, name='Prehear_Volume_Control') self._crossfader_control = make_slider(0, 15, name='Crossfader') self._raw_select_buttons = [ make_on_off_button(channel, 51, name='%d_Select_Button' % channel) for channel in xrange(NUM_TRACKS) ] self._arm_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 48, name='%d_Arm_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._solo_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 49, name='%d_Solo_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._mute_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 50, name='%d_Mute_Button' % channel) for channel in xrange(NUM_TRACKS) ]]) self._crossfade_buttons = ButtonMatrixElement(rows=[[ make_button(channel, 66, name='%d_Crossfade_Button' % channel, skin=self._crossfade_button_skin) for channel in xrange(NUM_TRACKS) ]]) self._select_buttons = ButtonMatrixElement(rows=[self._raw_select_buttons]) self._master_select_button = make_on_off_button(channel=0, identifier=80, name='Master_Select_Button') self._send_select_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._sends_button]) for button in self._raw_select_buttons ]]) self._quantization_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._shift_button]) for button in self._raw_select_buttons ]]) self._metronome_button = make_on_off_button(0, 90, name='Metronome_Button') self._play_button = make_on_off_button(0, 91, name='Play_Button') self._record_button = make_on_off_button(0, 93, name='Record_Button') self._session_record_button = make_on_off_button(0, 102, name='Session_Record_Button') self._nudge_down_button = make_button(0, 100, name='Nudge_Down_Button') self._nudge_up_button = make_button(0, 101, name='Nudge_Up_Button') self._tap_tempo_button = make_button(0, 99, name='Tap_Tempo_Button') self._tempo_control = make_encoder(0, 13, name='Tempo_Control') self._device_controls = ButtonMatrixElement(rows=[[ make_ring_encoder(16 + index, 24 + index, name='Device_Control_%d' % index) for index in xrange(8) ]]) self._device_control_buttons_raw = [ make_on_off_button(0, 58 + index) for index in xrange(8) ] self._device_bank_buttons = ButtonMatrixElement(rows=[[ DeviceBankButtonElement(button, modifiers=[self._shift_button]) for button in self._device_control_buttons_raw ]]) self._device_prev_bank_button = self._device_control_buttons_raw[2] self._device_prev_bank_button.name = 'Device_Prev_Bank_Button' self._device_next_bank_button = self._device_control_buttons_raw[3] self._device_next_bank_button.name = 'Device_Next_Bank_Button' self._device_on_off_button = self._device_control_buttons_raw[4] self._device_on_off_button.name = 'Device_On_Off_Button' self._device_lock_button = self._device_control_buttons_raw[5] self._device_lock_button.name = 'Device_Lock_Button' self._prev_device_button = self._device_control_buttons_raw[0] self._prev_device_button.name = 'Prev_Device_Button' self._next_device_button = self._device_control_buttons_raw[1] self._next_device_button.name = 'Next_Device_Button' self._clip_device_button = self._device_control_buttons_raw[6] self._clip_device_button.name = 'Clip_Device_Button' self._detail_view_button = self._device_control_buttons_raw[7] self._detail_view_button.name = 'Detail_View_Button' self._foot_pedal_button = DoublePressElement(make_pedal_button(64, name='Foot_Pedal')) self._shifted_matrix = ButtonMatrixElement(rows=recursive_map(self._with_shift, self._matrix_rows_raw)) self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]])
def _create_controls(self): make_on_off_button = partial(make_configurable_button, skin=self._default_skin) make_color_button = partial(make_configurable_button, skin=self._color_skin) make_stop_button = partial(make_configurable_button, skin=self._stop_button_skin) self._shift_button = make_button(0, 98, name='Shift_Button', resource_type=PrioritizedResource) self._left_button = make_button(0, 97, name='Bank_Select_Left_Button') self._right_button = make_button(0, 96, name='Bank_Select_Right_Button') self._up_button = make_button(0, 94, name='Bank_Select_Up_Button') self._down_button = make_button(0, 95, name='Bank_Select_Down_Button') self._stop_buttons = ButtonMatrixElement(rows=[[ make_stop_button(track, 52, name='%d_Stop_Button' % track) for track in xrange(NUM_TRACKS) ]], name="Stop_Buttons") self._stop_all_button = make_button(0, 81, name='Stop_All_Clips_Button') self._scene_launch_buttons_raw = [ make_color_button(0, scene + 82, name='Scene_%d_Launch_Button' % scene) for scene in xrange(NUM_SCENES) ] self._scene_launch_buttons = ButtonMatrixElement(rows=[self._scene_launch_buttons_raw], name="Scene_Launch_Buttons") self._matrix_rows_raw = [ [ make_color_button(track, 53 + scene, name='%d_Clip_%d_Button' % (track, scene)) for track in xrange(NUM_TRACKS) ] for scene in xrange(NUM_SCENES) ] self._session_matrix = ButtonMatrixElement(rows=self._matrix_rows_raw, name='Button_Matrix') self._pan_button = make_on_off_button(0, 87, name='Pan_Button') self._send_a_button = make_on_off_button(0, 88, name='Send_A_Button') self._send_b_button = make_on_off_button(0, 89, name='Send_B_Button') self._send_c_button = make_on_off_button(0, 90, name='Send_C_Button') self._mixer_encoders = ButtonMatrixElement(rows=[[ make_ring_encoder(48 + track, 56 + track, name='Track_Control_%d' % track) for track in xrange(NUM_TRACKS) ]], name="Track_Controls") # self._mixer_encoders_raw = [ make_ring_encoder(48 + track, 56 + track, name='Track_Control_%d' % track) for track in xrange(NUM_TRACKS) ] # self._mixer_encoders = ButtonMatrixElement(rows=[[FineGrainWithModifierEncoderElement(encoder, self._shift_button) for encoder in self._mixer_encoders_raw]], name="Track_Controls") self._volume_controls = ButtonMatrixElement(rows=[[ make_slider(track, 7, name='%d_Volume_Control' % track) for track in xrange(NUM_TRACKS) ]]) self._master_volume_control = make_slider(0, 14, name='Master_Volume_Control') self._prehear_control = make_encoder(0, 47, name='Prehear_Volume_Control') self._crossfader_control = make_slider(0, 15, name='Crossfader') self._raw_select_buttons = [ make_on_off_button(channel, 51, name='%d_Select_Button' % channel) for channel in xrange(NUM_TRACKS) ] self._arm_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 48, name='%d_Arm_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Arm_Buttons") self._solo_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 49, name='%d_Solo_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Solo_Buttons") self._mute_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 50, name='%d_Mute_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Mute_Buttons") self._select_buttons = ButtonMatrixElement(rows=[self._raw_select_buttons], name="Select_Buttons") self._master_select_button = make_on_off_button(channel=0, identifier=80, name='Master_Select_Button') # self._send_select_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._sends_button]) for button in self._raw_select_buttons ]]) self._quantization_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._shift_button]) for button in self._raw_select_buttons ]], name="Quantization_Buttons") self._play_button = make_on_off_button(0, 91, name='Play_Button') self._stop_button = make_on_off_button(0, 92, name='Stop_Button') self._record_button = make_on_off_button(0, 93, name='Record_Button') self._nudge_down_button = make_button(0, 101, name='Nudge_Down_Button') self._nudge_up_button = make_button(0, 100, name='Nudge_Up_Button') self._tap_tempo_button = make_button(0, 99, name='Tap_Tempo_Button') self._device_controls = ButtonMatrixElement(rows=[[ make_ring_encoder(16 + index, 24 + index, name='Device_Control_%d' % index) for index in xrange(8) ]], name="Device_Controls") self._device_control_buttons_raw = [ make_on_off_button(0, 58 + index) for index in xrange(8) ] self._device_bank_buttons = ButtonMatrixElement(rows=[[ DeviceBankButtonElement(button, modifiers=[self._shift_button]) for button in self._device_control_buttons_raw ]], name="Device_Bank_Buttons") self._device_lock_button = self._device_control_buttons_raw[0] self._device_lock_button.name = 'Device_Lock_Button' self._device_on_off_button = self._device_control_buttons_raw[1] self._device_on_off_button.name = 'Device_On_Off_Button' self._device_prev_bank_button = self._device_control_buttons_raw[2] self._device_prev_bank_button.name = 'Device_Prev_Bank_Button' self._device_next_bank_button = self._device_control_buttons_raw[3] self._device_next_bank_button.name = 'Device_Next_Bank_Button' self._clip_device_button = self._device_control_buttons_raw[4] self._clip_device_button.name = 'Clip_Device_Button' self._automation_button = self._device_control_buttons_raw[5] self._automation_button.name = 'Automation_Arm_Button' self._prev_device_button = self._device_control_buttons_raw[6] self._prev_device_button.name = 'Prev_Device_Button' self._next_device_button = self._device_control_buttons_raw[7] self._next_device_button.name = 'Next_Device_Button' self._foot_pedal_1_button = DoublePressElement(make_pedal_button(64, name='Foot_Pedal_1')) self._foot_pedal_2_button = DoublePressElement(make_pedal_button(67, name='Foot_Pedal_2')) self._shifted_matrix = ButtonMatrixElement(rows=recursive_map(self._with_shift, self._matrix_rows_raw), name="Shifted_Matrix") self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]], name="Shifted_Scene_Buttons") self._double_press_rows = recursive_map(DoublePressElement, self._matrix_rows_raw) self._double_press_matrix = ButtonMatrixElement(name='Double_Press_Matrix', rows=self._double_press_rows) self._double_press_event_matrix = ButtonMatrixElement(name='Double_Press_Event_Matrix', rows=recursive_map(lambda x: x.double_press, self._double_press_rows)) self._velocity_slider = ButtonSliderElement(tuple(self._scene_launch_buttons_raw[::-1])) self._grid_resolution = GridResolution() self._playhead_element = PlayheadElement(self._c_instance.playhead)
def _create_controls(self): make_on_off_button = partial(make_button, skin=self._default_skin) make_color_button = partial(make_button, skin=self._color_skin) self._shift_button = make_button(0, 98, resource_type=PrioritizedResource, name='Shift_Button') self._right_button = make_button(0, 96, name='Bank_Select_Right_Button') self._left_button = make_button(0, 97, name='Bank_Select_Left_Button') self._up_button = make_button(0, 94, name='Bank_Select_Up_Button') self._down_button = make_button(0, 95, name='Bank_Select_Down_Button') self._session_matrix = ButtonMatrixElement(name='Button_Matrix') self._scene_launch_buttons_raw = [ make_color_button(0, index + 82, name='Scene_%d_Launch_Button' % index) for index in xrange(SESSION_HEIGHT) ] self._track_stop_buttons = [ make_color_button(index, 52, name='Track_%d_Stop_Button' % index) for index in xrange(SESSION_WIDTH) ] self._stop_all_button = make_color_button(0, 81, name='Stop_All_Clips_Button') self._matrix_rows_raw = [ [ make_color_button(track_index, scene_index + 53, name='%d_Clip_%d_Button' % (track_index, scene_index)) for track_index in xrange(SESSION_WIDTH) ] for scene_index in xrange(SESSION_HEIGHT) ] for row in self._matrix_rows_raw: self._session_matrix.add_row(row) self._selected_slot_launch_button = make_pedal_button(67, name='Selected_Slot_Launch_Button') self._selected_scene_launch_button = make_pedal_button(64, name='Selected_Scene_Launch_Button') self._volume_controls = [] self._arm_buttons = [] self._solo_buttons = [] self._mute_buttons = [] self._select_buttons = [] for index in xrange(MIXER_SIZE): self._volume_controls.append(make_slider(index, 7, name='%d_Volume_Control' % index)) self._arm_buttons.append(make_on_off_button(index, 48, name='%d_Arm_Button' % index)) self._solo_buttons.append(make_on_off_button(index, 49, name='%d_Solo_Button' % index)) self._mute_buttons.append(make_on_off_button(index, 50, name='%d_Mute_Button' % index)) self._select_buttons.append(make_on_off_button(index, 51, name='%d_Select_Button' % index)) self._crossfader_control = make_slider(0, 15, name='Crossfader') self._master_volume_control = make_slider(0, 14, name='Master_Volume_Control') self._master_select_button = make_on_off_button(0, 80, name='Master_Select_Button') self._prehear_control = make_encoder(0, 47, name='Prehear_Volume_Control') self._device_bank_buttons = [] self._device_param_controls_raw = [] bank_button_labels = ('Clip_Track_Button', 'Device_On_Off_Button', 'Previous_Device_Button', 'Next_Device_Button', 'Detail_View_Button', 'Rec_Quantization_Button', 'Midi_Overdub_Button', 'Metronome_Button') for index in range(8): self._device_bank_buttons.append(make_on_off_button(0, 58 + index, name=bank_button_labels[index])) encoder_name = 'Device_Control_%d' % index ringed_encoder = make_ring_encoder(16 + index, 24 + index, name=encoder_name) self._device_param_controls_raw.append(ringed_encoder) self._play_button = make_button(0, 91, name='Play_Button') self._stop_button = make_button(0, 92, name='Stop_Button') self._record_button = make_button(0, 93, name='Record_Button') self._nudge_up_button = make_button(0, 100, name='Nudge_Up_Button') self._nudge_down_button = make_button(0, 101, name='Nudge_Down_Button') self._tap_tempo_button = make_button(0, 99, name='Tap_Tempo_Button') self._global_bank_buttons = [] self._global_param_controls = [] for index in range(8): encoder_name = 'Track_Control_%d' % index ringed_encoder = make_ring_encoder(48 + index, 56 + index, name=encoder_name) self._global_param_controls.append(ringed_encoder) self._global_bank_buttons = [ make_on_off_button(0, 87 + index, name=name) for index, name in enumerate(('Pan_Button', 'Send_A_Button', 'Send_B_Button', 'Send_C_Button')) ] self._device_clip_toggle_button = self._device_bank_buttons[0] self._device_on_off_button = self._device_bank_buttons[1] self._detail_left_button = self._device_bank_buttons[2] self._detail_right_button = self._device_bank_buttons[3] self._detail_toggle_button = self._device_bank_buttons[4] self._rec_quantization_button = self._device_bank_buttons[5] self._overdub_button = self._device_bank_buttons[6] self._metronome_button = self._device_bank_buttons[7] def wrap_matrix(control_list, wrapper = nop): return ButtonMatrixElement(rows=[map(wrapper, control_list)]) self._scene_launch_buttons = wrap_matrix(self._scene_launch_buttons_raw) self._track_stop_buttons = wrap_matrix(self._track_stop_buttons) self._volume_controls = wrap_matrix(self._volume_controls) self._arm_buttons = wrap_matrix(self._arm_buttons) self._solo_buttons = wrap_matrix(self._solo_buttons) self._mute_buttons = wrap_matrix(self._mute_buttons) self._select_buttons = wrap_matrix(self._select_buttons) self._device_param_controls = wrap_matrix(self._device_param_controls_raw) self._device_bank_buttons = wrap_matrix(self._device_bank_buttons, partial(DeviceBankButtonElement, modifiers=[self._shift_button])) self._shifted_matrix = ButtonMatrixElement(rows=recursive_map(self._with_shift, self._matrix_rows_raw)) self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]])
def _create_shifted_matrix(self): self._shifted_matrix = ButtonMatrixElement(name='Shifted_Button_Matrix', rows = recursive_map(self._with_session, self.control_surface._pads)) return self._shifted_matrix
def _create_controls(self): make_on_off_button = partial(make_button, skin=self._default_skin) make_color_button = partial(make_button, skin=self._color_skin) make_stop_button = partial(make_button, skin=self._stop_button_skin) self._shift_button = make_button(0, 98, name='Shift_Button', resource_type=PrioritizedResource) self._left_button = make_button(0, 97, name='Bank_Select_Left_Button') self._right_button = make_button(0, 96, name='Bank_Select_Right_Button') self._up_button = make_button(0, 94, name='Bank_Select_Up_Button') self._down_button = make_button(0, 95, name='Bank_Select_Down_Button') self._stop_buttons = ButtonMatrixElement(rows=[[ make_stop_button(track, 52, name='%d_Stop_Button' % track) for track in xrange(NUM_TRACKS) ]], name="Stop_Buttons") self._stop_all_button = make_button(0, 81, name='Stop_All_Clips_Button') self._scene_launch_buttons_raw = [ make_color_button(0, scene + 82, name='Scene_%d_Launch_Button' % scene) for scene in xrange(NUM_SCENES) ] self._scene_launch_buttons = ButtonMatrixElement(rows=[self._scene_launch_buttons_raw], name="Scene_Launch_Buttons") self._matrix_rows_raw = [ [ make_color_button(track, 53 + scene, name='%d_Clip_%d_Button' % (track, scene)) for track in xrange(NUM_TRACKS) ] for scene in xrange(NUM_SCENES) ] self._session_matrix = ButtonMatrixElement(rows=self._matrix_rows_raw, name='Button_Matrix') self._pan_button = make_on_off_button(0, 87, name='Pan_Button') self._send_a_button = make_on_off_button(0, 88, name='Send_A_Button') self._send_b_button = make_on_off_button(0, 89, name='Send_B_Button') self._send_c_button = make_on_off_button(0, 90, name='Send_C_Button') self._mixer_encoders = ButtonMatrixElement(rows=[[ make_ring_encoder(48 + track, 56 + track, name='Track_Control_%d' % track) for track in xrange(NUM_TRACKS) ]], name="Track_Controls") self._volume_controls = ButtonMatrixElement(rows=[[ make_slider(track, 7, name='%d_Volume_Control' % track) for track in xrange(NUM_TRACKS) ]]) self._master_volume_control = make_slider(0, 14, name='Master_Volume_Control') self._prehear_control = make_encoder(0, 47, name='Prehear_Volume_Control') self._crossfader_control = make_slider(0, 15, name='Crossfader') self._raw_select_buttons = [ make_on_off_button(channel, 51, name='%d_Select_Button' % channel) for channel in xrange(NUM_TRACKS) ] self._arm_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 48, name='%d_Arm_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Arm_Buttons") self._solo_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 49, name='%d_Solo_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Solo_Buttons") self._mute_buttons = ButtonMatrixElement(rows=[[ make_on_off_button(channel, 50, name='%d_Mute_Button' % channel) for channel in xrange(NUM_TRACKS) ]], name="Mute_Buttons") self._select_buttons = ButtonMatrixElement(rows=[self._raw_select_buttons], name="Select_Buttons") self._master_select_button = make_on_off_button(channel=0, identifier=80, name='Master_Select_Button') self._quantization_buttons = ButtonMatrixElement(rows=[[ ComboElement(button, modifiers=[self._shift_button]) for button in self._raw_select_buttons ]], name="Quantization_Buttons") self._play_button = make_on_off_button(0, 91, name='Play_Button') self._stop_button = make_on_off_button(0, 92, name='Stop_Button') self._record_button = make_on_off_button(0, 93, name='Record_Button') self._nudge_down_button = make_button(0, 101, name='Nudge_Down_Button') self._nudge_up_button = make_button(0, 100, name='Nudge_Up_Button') self._tap_tempo_button = make_button(0, 99, name='Tap_Tempo_Button') self._device_controls = ButtonMatrixElement(rows=[[ make_ring_encoder(16 + index, 24 + index, name='Device_Control_%d' % index) for index in xrange(8) ]], name="Device_Controls") self._device_control_buttons_raw = [ make_on_off_button(0, 58 + index) for index in xrange(8) ] self._device_bank_buttons = ButtonMatrixElement(rows=[[ DeviceBankButtonElement(button, modifiers=[self._shift_button]) for button in self._device_control_buttons_raw ]], name="Device_Bank_Buttons") self._device_clip_toggle_button = self._device_control_buttons_raw[0] self._device_clip_toggle_button.name = 'Clip_Device_Button' self._device_on_off_button = self._device_control_buttons_raw[1] self._device_on_off_button.name = 'Device_On_Off_Button' self._detail_left_button = self._device_control_buttons_raw[2] self._detail_left_button.name = 'Prev_Device_Button' self._detail_right_button = self._device_control_buttons_raw[3] self._detail_right_button.name = 'Next_Device_Button' self._detail_toggle_button = self._device_control_buttons_raw[4] self._detail_toggle_button.name = 'Detail_View_Button' self._rec_quantization_button = self._device_control_buttons_raw[5] self._rec_quantization_button.name ='Rec_Quantization_Button' self._overdub_button = self._device_control_buttons_raw[6] self._overdub_button.name = 'Overdub_Button' self._metronome_button = self._device_control_buttons_raw[7] self._metronome_button.name = 'Metronome_Button' self._selected_slot_launch_button = make_pedal_button(67, name='Selected_Slot_Launch_Button') self._selected_scene_launch_button = make_pedal_button(64, name='Selected_Scene_Launch_Button') self._shifted_matrix = ButtonMatrixElement(rows=recursive_map(self._with_shift, self._matrix_rows_raw), name="Shifted_Matrix") self._shifted_scene_buttons = ButtonMatrixElement(rows=[[ self._with_shift(button) for button in self._scene_launch_buttons_raw ]], name="Shifted_Scene_Buttons")
def _create_shifted_matrix(self): self._shifted_matrix = ButtonMatrixElement( name='Shifted_Button_Matrix', rows=recursive_map(self._with_session, self.control_surface._pads)) return self._shifted_matrix