def _setup_device_and_transport_control(self): is_momentary = True device_bank_buttons = [] device_param_controls = [] for index in range(8): #device_bank_buttons.append(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, (58 + index))) device_bank_buttons.append(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[index])) #device_param_controls.append(RingedEncoderElement(MIDI_CC_TYPE, 0, (16 + index), Live.MidiMap.MapMode.absolute)) #device_param_controls[-1].set_ring_mode_button(ButtonElement((not is_momentary), MIDI_CC_TYPE, 0, (24 + index))) device_param_controls.append(EncoderElement(MIDI_CC_TYPE, 0, KMK_ENCODER[index], Live.MidiMap.MapMode.relative_two_compliment)) #device = ShiftableDeviceComponent() global device device = kmkDisplayingDeviceComponent() # special component, inherits from ShiftableDeviceController and adds lcds device.set_bank_buttons(tuple(device_bank_buttons)) device.set_shift_button(self._shift_button) device.set_parameter_controls(tuple(device_param_controls)) device.set_on_off_button(device_bank_buttons[1]) """ WAC addition....................................""" device.set_lock_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_PAD[10])) parameter_displays = [] for index in range(8): parameter_displays.append(PhysicalDisplayElement(8, 1)) parameter_displays[-1].set_message_parts((SYSEX_KMK_HEADER + (KMK_LCD_COMMAND, 9, (index + 48))), (247,)) device_name_display = PhysicalDisplayElement(8,1) device_name_display.set_message_parts((SYSEX_KMK_HEADER + (KMK_LCD_COMMAND, 9, (8 + 32))), (247,)) device.set_display(parameter_displays, device_name_display) """------------------------------------------------""" self.set_device_component(device) detail_view_toggler = DetailViewControllerComponent() detail_view_toggler.set_shift_button(self._shift_button) detail_view_toggler.set_device_clip_toggle_button(device_bank_buttons[0]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) """ WAC addition....................................""" detail_view_toggler.set_arrange_toggle_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[8])) detail_view_toggler.set_browser_toggle_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[12])) """------------------------------------------------""" transport = ShiftableTransportComponent() transport.set_shift_button(self._shift_button) #transport.set_play_button(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 91)) transport.set_play_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[4])) #transport.set_stop_button(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 92)) transport.set_stop_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[5])) #transport.set_record_button(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 93)) transport.set_record_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[3])) """ WAC addition....................................""" transport.set_seek_buttons(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[1]), SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[0])) transport.set_loop_button(SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[2])) """------------------------------------------------""" #transport.set_nudge_buttons(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 100), ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 101)) #transport.set_tap_tempo_button(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 99)) transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) transport.set_metronome_button(device_bank_buttons[7]) bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate(tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)
def _setup_device_and_transport_control(self): is_momentary = True device_bank_buttons = [] device_param_controls = [] 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', 'Device_Lock_Button', 'Metronome_Button') for index in range(8): device_bank_buttons.append(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 58 + index)) device_bank_buttons[-1].name = bank_button_labels[index] ring_mode_button = ButtonElement(not is_momentary, MIDI_CC_TYPE, 0, 24 + index) ringed_encoder = RingedEncoderElement(MIDI_CC_TYPE, 0, 16 + index, Live.MidiMap.MapMode.absolute) ringed_encoder.set_ring_mode_button(ring_mode_button) ringed_encoder.set_feedback_delay(-1) #added from Axiom DirectLink example ringed_encoder.name = 'Device_Control_' + str(index) ring_mode_button.name = ringed_encoder.name + '_Ring_Mode_Button' device_param_controls.append(ringed_encoder) self._device = ShiftableDeviceComponent() self._device.name = 'Device_Component' self._device.set_bank_buttons(tuple(device_bank_buttons)) self._device.set_shift_button(self._shift_button) self._device.set_parameter_controls(tuple(device_param_controls)) self._device.set_on_off_button(device_bank_buttons[1]) self.set_device_component(self._device) detail_view_toggler = DetailViewControllerComponent() detail_view_toggler.name = 'Detail_View_Control' detail_view_toggler.set_shift_button(self._shift_button) detail_view_toggler.set_device_clip_toggle_button(device_bank_buttons[0]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) transport = ShiftableTransportComponent() transport.name = 'Transport' play_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 91) stop_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 92) record_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 93) nudge_up_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 100) nudge_down_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 101) tap_tempo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 99) play_button.name = 'Play_Button' stop_button.name = 'Stop_Button' record_button.name = 'Record_Button' nudge_up_button.name = 'Nudge_Up_Button' nudge_down_button.name = 'Nudge_Down_Button' tap_tempo_button.name = 'Tap_Tempo_Button' transport.set_shift_button(self._shift_button) transport.set_play_button(play_button) transport.set_stop_button(stop_button) transport.set_record_button(record_button) transport.set_nudge_buttons(nudge_up_button, nudge_down_button) transport.set_undo_button(nudge_down_button) #shifted nudge transport.set_redo_button(nudge_up_button) #shifted nudge transport.set_tap_tempo_button(tap_tempo_button) self._device.set_lock_button(tap_tempo_button) #shifted tap tempo transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) transport.set_metronome_button(device_bank_buttons[7]) transport.set_tempo_encoder(self._prehear_control) #shifted prehear bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate(tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)
def _setup_transport_control(self): is_momentary = True # We'll only be using momentary buttons here transport = ShiftableTransportComponent() #Instantiate a Transport Component #addtransport = AddlTransportComponent() #Instantiate an AddlTransport Component device_param_controls = [] #effects_knob_cc = [16,20,24,28,17,21,25,29] effects_knob_cc = [17,21,25,29,18,22,26,30] device = DeviceComponent() for index in range(8): device_param_controls.append(EncoderElement(MIDI_CC_TYPE, CHAN, effects_knob_cc[index], Live.MidiMap.MapMode.absolute)) device.set_parameter_controls(tuple(device_param_controls)) #self.set_device_component(device) #from apc device_bank_buttons = [] #device_param_controls = [] #device_buttons =[16,20,24,28,17,21,25,29]; device_buttons =[17,21,25,29,18,22,26,30]; 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', 'Device_Lock_Button') #'Metronome_Button') for index in range(8): device_bank_buttons.append(ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, device_buttons[index])) device_bank_buttons[-1].name = bank_button_labels[index] #ring_mode_button = ButtonElement(not is_momentary, MIDI_CC_TYPE, 0, 24 + index) #ringed_encoder = RingedEncoderElement(MIDI_CC_TYPE, 0, 16 + index, Live.MidiMap.MapMode.absolute) #ringed_encoder.set_ring_mode_button(ring_mode_button) #ringed_encoder.name = 'Device_Control_' + str(index) #ring_mode_button.name = ringed_encoder.name + '_Ring_Mode_Button' #device_param_controls.append(ringed_encoder) device.name = 'Device_Component' device.set_bank_buttons(tuple(device_bank_buttons)) detail_view_toggler = DetailViewCntrlComponent() detail_view_toggler.name = 'Detail_View_Control' detail_view_toggler.set_device_clip_toggle_button(device_bank_buttons[0]) device.set_on_off_button(device_bank_buttons[1]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) device.set_lock_button(device_bank_buttons[7]) #assign device lock to bank_button 8 (in place of metronome)... self.set_device_component(device) #detail_view_toggler.set_shift_button(self._shift_button) #from apc self._shift_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 37) """set up the buttons""" play_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 24) #ButtonElement(is_momentary, msg_type, channel, identifier) Note that the MIDI_NOTE_TYPE constant is defined in the InputControlElement module stop_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 28) record_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 32) nudge_up_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 27) nudge_down_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 23) # tap_tempo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 19) redo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 19) undo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 20) play_button.name = 'Play_Button' stop_button.name = 'Stop_Button' record_button.name = 'Record_Button' nudge_up_button.name = 'Nudge_Up_Button' nudge_down_button.name = 'Nudge_Down_Button' # tap_tempo_button.name = 'Tap_Tempo_Button' redo_button.name = 'Redo_Button' undo_button.name = 'Undo_Button' transport.set_shift_button(self._shift_button) transport.set_play_button(play_button) transport.set_stop_button(stop_button) transport.set_record_button(record_button) transport.set_nudge_buttons(nudge_up_button, nudge_down_button) #addtransport.set_undo_button(undo_button) #addtransport.set_redo_button(redo_button) transport.set_tap_tempo_button(nudge_up_button) #shifted nudge transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) # transport.set_metronome_button(device_bank_buttons[7]) #transport.set_tempo_encoder(self.prehear_control) #shifted prehear bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate(tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)
def _setup_transport_control(self): is_momentary = True # We'll only be using momentary buttons here transport = ShiftableTransportComponent( ) #Instantiate a Transport Component #addtransport = AddlTransportComponent() #Instantiate an AddlTransport Component device_param_controls = [] #effects_knob_cc = [16,20,24,28,17,21,25,29] effects_knob_cc = [17, 21, 25, 29, 18, 22, 26, 30] device = DeviceComponent() for index in range(8): device_param_controls.append( EncoderElement(MIDI_CC_TYPE, CHAN, effects_knob_cc[index], Live.MidiMap.MapMode.absolute)) device.set_parameter_controls(tuple(device_param_controls)) #self.set_device_component(device) #from apc device_bank_buttons = [] #device_param_controls = [] #device_buttons =[16,20,24,28,17,21,25,29]; device_buttons = [17, 21, 25, 29, 18, 22, 26, 30] 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', 'Device_Lock_Button' ) #'Metronome_Button') for index in range(8): device_bank_buttons.append( ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, device_buttons[index])) device_bank_buttons[-1].name = bank_button_labels[index] #ring_mode_button = ButtonElement(not is_momentary, MIDI_CC_TYPE, 0, 24 + index) #ringed_encoder = RingedEncoderElement(MIDI_CC_TYPE, 0, 16 + index, Live.MidiMap.MapMode.absolute) #ringed_encoder.set_ring_mode_button(ring_mode_button) #ringed_encoder.name = 'Device_Control_' + str(index) #ring_mode_button.name = ringed_encoder.name + '_Ring_Mode_Button' #device_param_controls.append(ringed_encoder) device.name = 'Device_Component' device.set_bank_buttons(tuple(device_bank_buttons)) detail_view_toggler = DetailViewCntrlComponent() detail_view_toggler.name = 'Detail_View_Control' detail_view_toggler.set_device_clip_toggle_button( device_bank_buttons[0]) device.set_on_off_button(device_bank_buttons[1]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) device.set_lock_button( device_bank_buttons[7] ) #assign device lock to bank_button 8 (in place of metronome)... self.set_device_component(device) #detail_view_toggler.set_shift_button(self._shift_button) #from apc self._shift_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 37) """set up the buttons""" play_button = ButtonElement( is_momentary, MIDI_NOTE_TYPE, CHAN, 24 ) #ButtonElement(is_momentary, msg_type, channel, identifier) Note that the MIDI_NOTE_TYPE constant is defined in the InputControlElement module stop_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 28) record_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 32) nudge_up_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 27) nudge_down_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 23) # tap_tempo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 19) redo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 19) undo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, CHAN, 20) play_button.name = 'Play_Button' stop_button.name = 'Stop_Button' record_button.name = 'Record_Button' nudge_up_button.name = 'Nudge_Up_Button' nudge_down_button.name = 'Nudge_Down_Button' # tap_tempo_button.name = 'Tap_Tempo_Button' redo_button.name = 'Redo_Button' undo_button.name = 'Undo_Button' transport.set_shift_button(self._shift_button) transport.set_play_button(play_button) transport.set_stop_button(stop_button) transport.set_record_button(record_button) transport.set_nudge_buttons(nudge_up_button, nudge_down_button) #addtransport.set_undo_button(undo_button) #addtransport.set_redo_button(redo_button) transport.set_tap_tempo_button(nudge_up_button) #shifted nudge transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) # transport.set_metronome_button(device_bank_buttons[7]) #transport.set_tempo_encoder(self.prehear_control) #shifted prehear bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate( tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)
def _setup_device_and_transport_control(self): is_momentary = True device_bank_buttons = [] device_param_controls = [] for index in range(8): device_bank_buttons.append( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[index])) device_param_controls.append( EncoderElement(MIDI_CC_TYPE, 0, KMK_ENCODER[index], Live.MidiMap.MapMode.relative_two_compliment)) global device # special component, inherits from ShiftableDeviceController and adds lcds device = kmkDisplayingDeviceComponent() device.set_bank_buttons(tuple(device_bank_buttons)) device.set_shift_button(self._shift_button) device.set_parameter_controls(tuple(device_param_controls)) device.set_on_off_button(device_bank_buttons[1]) device.set_lock_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_PAD[10])) parameter_displays = [] for index in range(8): parameter_displays.append(PhysicalDisplayElement(8, 1)) parameter_displays[-1].set_message_parts( (SYSEX_KMK_HEADER + (KMK_LCD_COMMAND, 9, (index + 48))), (247, )) device_name_display = PhysicalDisplayElement(8, 1) device_name_display.set_message_parts( (SYSEX_KMK_HEADER + (KMK_LCD_COMMAND, 9, (8 + 32))), (247, )) device.set_display(parameter_displays, device_name_display) self.set_device_component(device) detail_view_toggler = DetailViewControllerComponent() detail_view_toggler.set_shift_button(self._shift_button) detail_view_toggler.set_device_clip_toggle_button( device_bank_buttons[0]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) detail_view_toggler.set_arrange_toggle_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[8])) detail_view_toggler.set_browser_toggle_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, KMK_PAD[12])) transport = ShiftableTransportComponent() transport.set_shift_button(self._shift_button) transport.set_play_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[4])) transport.set_stop_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[5])) transport.set_record_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[3])) transport.set_seek_buttons( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[1]), SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[0])) transport.set_loop_button( SysexButtonElement(is_momentary, MIDI_NOTE_TYPE, CHANNEL, KMK_BUTTON[2])) transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) transport.set_metronome_button(device_bank_buttons[7]) bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate( tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)
def _setup_device_and_transport_control(self): is_momentary = True device_bank_buttons = [] device_param_controls = [] 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): device_bank_buttons.append(ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 58 + index)) device_bank_buttons[-1].name = bank_button_labels[index] ring_mode_button = ButtonElement(not is_momentary, MIDI_CC_TYPE, 0, 24 + index) ringed_encoder = RingedEncoderElement(MIDI_CC_TYPE, 0, 16 + index, Live.MidiMap.MapMode.absolute) ringed_encoder.set_ring_mode_button(ring_mode_button) ringed_encoder.name = "Device_Control_" + str(index) ring_mode_button.name = ringed_encoder.name + "_Ring_Mode_Button" device_param_controls.append(ringed_encoder) device = ShiftableDeviceComponent() device.name = "Device_Component" device.set_bank_buttons(tuple(device_bank_buttons)) device.set_shift_button(self._shift_button) device.set_parameter_controls(tuple(device_param_controls)) device.set_on_off_button(device_bank_buttons[1]) self.set_device_component(device) detail_view_toggler = DetailViewControllerComponent() detail_view_toggler.name = "Detail_View_Control" detail_view_toggler.set_shift_button(self._shift_button) detail_view_toggler.set_device_clip_toggle_button(device_bank_buttons[0]) detail_view_toggler.set_detail_toggle_button(device_bank_buttons[4]) detail_view_toggler.set_device_nav_buttons(device_bank_buttons[2], device_bank_buttons[3]) transport = ShiftableTransportComponent() transport.name = "Transport" play_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 91) stop_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 92) record_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 93) nudge_up_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 100) nudge_down_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 101) tap_tempo_button = ButtonElement(is_momentary, MIDI_NOTE_TYPE, 0, 99) play_button.name = "Play_Button" stop_button.name = "Stop_Button" record_button.name = "Record_Button" nudge_up_button.name = "Nudge_Up_Button" nudge_down_button.name = "Nudge_Down_Button" tap_tempo_button.name = "Tap_Tempo_Button" transport.set_shift_button(self._shift_button) transport.set_play_button(play_button) transport.set_stop_button(stop_button) transport.set_record_button(record_button) transport.set_nudge_buttons(nudge_up_button, nudge_down_button) transport.set_tap_tempo_button(tap_tempo_button) transport.set_quant_toggle_button(device_bank_buttons[5]) transport.set_overdub_button(device_bank_buttons[6]) # The metronome button is device lock instead # transport.set_metronome_button(device_bank_buttons[7]) device.set_lock_button(device_bank_buttons[7]) # assign device lock to bank_button 8 (in place of metronome)... transport.set_tempo_encoder(self.prehear_control) bank_button_translator = ShiftableTranslatorComponent() bank_button_translator.set_controls_to_translate(tuple(device_bank_buttons)) bank_button_translator.set_shift_button(self._shift_button)