def _setup_mixer_control(self):
        is_momentary = True
        mixer = MixerComponent(NUM_TRACKS, 2)
        for track in range(NUM_TRACKS):
            strip = mixer.channel_strip(track)
            strip.set_volume_control(SliderElement(MIDI_CC_TYPE, track, 23))
            strip.set_pan_control(
                EncoderElement(MIDI_CC_TYPE, track, 10,
                               Live.MidiMap.MapMode.absolute))
            strip.set_send_controls(
                (EncoderElement(MIDI_CC_TYPE, track, 19,
                                Live.MidiMap.MapMode.absolute),
                 EncoderElement(MIDI_CC_TYPE, track, 20,
                                Live.MidiMap.MapMode.absolute)))
            strip.set_solo_button(
                ButtonElement(is_momentary, MIDI_NOTE_TYPE, track, 64))
            strip.set_mute_button(
                ButtonElement(is_momentary, MIDI_NOTE_TYPE, track, 63))
            strip.set_crossfade_toggle(
                ButtonElement(is_momentary, MIDI_NOTE_TYPE, track, 65))
            eq = mixer.track_eq(track)
            eq.set_gain_controls(
                tuple([
                    EncoderElement(MIDI_CC_TYPE, track, 18 - index,
                                   Live.MidiMap.MapMode.absolute)
                    for index in range(3)
                ]))
            eq.set_cut_buttons(
                tuple([
                    ButtonElement(is_momentary, MIDI_NOTE_TYPE, track,
                                  62 - index) for index in range(3)
                ]))
            filter = mixer.track_filter(track)
            filter.set_filter_controls(
                EncoderElement(MIDI_CC_TYPE, track, 22,
                               Live.MidiMap.MapMode.absolute),
                EncoderElement(MIDI_CC_TYPE, track, 21,
                               Live.MidiMap.MapMode.absolute))

        for ret_track in range(2):
            strip = mixer.return_strip(ret_track)
            strip.set_volume_control(
                SliderElement(MIDI_CC_TYPE, 12, 22 + ret_track))
            strip.set_pan_control(
                EncoderElement(MIDI_CC_TYPE, 12, 20 + ret_track,
                               Live.MidiMap.MapMode.absolute))
            strip.set_mute_button(
                ButtonElement(is_momentary, MIDI_NOTE_TYPE, 12,
                              78 + ret_track))

        mixer.set_crossfader_control(SliderElement(MIDI_CC_TYPE, 12, 8))
        mixer.set_prehear_volume_control(
            EncoderElement(MIDI_CC_TYPE, 12, 24,
                           Live.MidiMap.MapMode.absolute))
        mixer.master_strip().set_volume_control(
            SliderElement(MIDI_CC_TYPE, 12, 7))
        mixer.master_strip().set_pan_control(
            EncoderElement(MIDI_CC_TYPE, 12, 10,
                           Live.MidiMap.MapMode.absolute))
        return mixer
 def __init__(self,
              msg_type,
              channel,
              identifier,
              map_mode,
              send_channel=None,
              identifier_send_offset=0):
     EncoderElement.__init__(self, msg_type, channel, identifier, map_mode)
     self._identify_mode = False
     self._send_channel = send_channel
     self._identifier_send_offset = identifier_send_offset
     self._on_value = 127
     self._off_value = 0
     self._force_next_value = False
Exemplo n.º 3
0
    def _activate_track_control(self):
        if self._pad_control_device is not None:
            return

        if (len(self.mixer.selected_strip()._track.devices) > 0):
            devices = self.mixer.selected_strip()._track.devices
            self.actual_device = devices[0]

            self._track_control_device = DeviceComponent()
            device_controls = (
                EncoderElement(MIDI_CC_TYPE, 10, 1, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 2, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 3, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 4, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 5, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 6, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 7, self._map_modes.absolute),
                EncoderElement(MIDI_CC_TYPE, 10, 8, self._map_modes.absolute),
            )

            self._track_control_device.set_device(self.actual_device)
            self._track_control_device.set_parameter_controls(
                tuple(device_controls))
            self._track_control_device.set_lock_to_device(
                "lock", self.actual_device)
Exemplo n.º 4
0
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        AbletonPlus.__init__(self, options)

        self._main_encoders = []
        self._main_buttons = []
        self._effects_encoders = []
        self._extra_buttons = []
        self._mixer = None

        for index in range(0, 24):
            encoder = EncoderElement(MIDI_CC_TYPE, 0, 81 + index,
                                     Live.MidiMap.MapMode.absolute)
            self._main_encoders.append(encoder)
        for index in range(0, 16):
            button = ButtonElement(False, MIDI_CC_TYPE, 0, 76 + index)
            self._main_buttons.append(button)

        self._mixer = MixerComponent(8)

        self._remap_track_mixer_controls()

        self._enable_abletonplus()

        return None
Exemplo n.º 5
0
    def _init_device_component(self, device_controls, bank_controls, global_channel, macro_map_mode, device_component_class):
        is_momentary = True
        DeviceButton = partial(ButtonElement, is_momentary, MIDI_CC_TYPE)

        def make_bank_button(control, name):
            return DeviceButton(global_channel, (bank_controls[control]), name=name)

        if device_controls:
            device = device_component_class(device_selection_follows_track_selection=True,
              name='Device_Component')
            layer_specs = {}
            if bank_controls:
                if has_specification_for('NEXTBANK', bank_controls):
                    layer_specs['bank_next_button'] = make_bank_button('NEXTBANK', 'Device_Next_Bank_Button')
                if has_specification_for('PREVBANK', bank_controls):
                    layer_specs['bank_prev_button'] = make_bank_button('PREVBANK', 'Device_Previous_Bank_Button')
                if has_specification_for('TOGGLELOCK', bank_controls):
                    layer_specs['lock_button'] = make_bank_button('TOGGLELOCK', 'Device_Lock_Button')
                if has_specification_for('ONOFF', bank_controls):
                    layer_specs['on_off_button'] = make_bank_button('ONOFF', 'Device_On_Off_Button')
                bank_buttons_raw = []
                for index in range(8):
                    key = 'BANK{}'.format(index + 1)
                    if key in list(bank_controls.keys()):
                        control_info = bank_controls[key]
                        channel = global_channel
                        cc = control_info
                        if isinstance(control_info, (tuple, list)):
                            cc = control_info[0]
                            if is_valid_midi_channel(control_info[1]):
                                channel = control_info[1]
                        if is_valid_midi_identifier(cc):
                            if is_valid_midi_channel(channel):
                                name = 'Device_Bank_{}_Button'.format(index)
                                bank_buttons_raw.append(DeviceButton(channel, cc, name=name))

                if len(bank_buttons_raw) > 0:
                    layer_specs['bank_buttons'] = ButtonMatrixElement(rows=[
                     bank_buttons_raw],
                      name='Device_Bank_Buttons')
            parameter_encoders_raw = []
            for index, control_info in enumerate(device_controls):
                channel = global_channel
                cc = control_info
                if isinstance(control_info, (tuple, list)):
                    cc = control_info[0]
                    if is_valid_midi_channel(control_info[1]):
                        channel = control_info[1]
                if is_valid_midi_identifier(cc):
                    if is_valid_midi_channel(channel):
                        name = 'Device_Parameter_%d_Control' % index
                        parameter_encoders_raw.append(EncoderElement(MIDI_CC_TYPE,
                          channel, cc, macro_map_mode, name=name))

            if len(parameter_encoders_raw) > 0:
                layer_specs['parameter_controls'] = ButtonMatrixElement(rows=[
                 parameter_encoders_raw],
                  name='Device_Parameter_Controls')
            device.layer = Layer(**layer_specs)
            self.set_device_component(device)
    def _setup_device_and_transport_control(self):
        is_momentary = True
        device_param_controls = []
        for index in range(8):
            device_param_controls.append(
                EncoderElement(MIDI_CC_TYPE, 15, 62 - index,
                               Live.MidiMap.MapMode.absolute))

        device = SpecialDeviceComponent()
        device.set_bank_nav_buttons(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 107),
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 106))
        device.set_parameter_controls(tuple(device_param_controls))
        self.set_device_component(device)
        transport = SpecialTransportComponent()
        transport.set_play_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 20))
        transport.set_stop_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 21))
        transport.set_record_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 22))
        transport.set_seek_buttons(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 24),
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 25))
        transport.set_tap_tempo_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 94))
        transport.set_undo_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 23))
        transport.set_redo_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 27))
        transport.set_bts_button(
            ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 26))
 def _create_controls(self):
     self._device_encoders = ButtonMatrixElement(rows=[[EncoderElement(MIDI_CC_TYPE, 0, identifier, (Live.MidiMap.MapMode.relative_smooth_two_compliment), name=('Encoder_%d_%d' % (column_index, row_index))) for column_index, identifier in enumerate(row)] for row_index, row in enumerate((
      ENCODER_MSG_IDS[:4], ENCODER_MSG_IDS[8:12]))])
     self._horizontal_scroll_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       75,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Horizontal_Scroll_Encoder')
     self._vertical_scroll_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       72,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Vertical_Scroll_Encoder')
     self._volume_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       91,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Volume_Encoder')
     self._pan_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       17,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Pan_Encoder')
     self._send_a_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       77,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Send_A_Encoder')
     self._send_b_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       93,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Send_B_Encoder')
     self._send_encoders = ButtonMatrixElement(rows=[
      [
       self._send_a_encoder, self._send_b_encoder]])
     self._return_a_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       73,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Return_A_Encoder')
     self._return_b_encoder = EncoderElement(MIDI_CC_TYPE,
       0,
       79,
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Return_B_Encoder')
     self._return_encoders = ButtonMatrixElement(rows=[
      [
       self._return_a_encoder, self._return_b_encoder]])
     self._pads = ButtonMatrixElement(rows=[[ButtonElement(True, MIDI_NOTE_TYPE, PAD_CHANNEL, identifier, name=('Pad_%d_%d' % (col_index, row_index)), skin=(self._skin)) for col_index, identifier in enumerate(row)] for row_index, row in enumerate(PAD_MSG_IDS)])
     self._stop_button = ButtonElement(True, MIDI_CC_TYPE, 0, 1, name='Stop_Button')
     self._play_button = ButtonElement(True, MIDI_CC_TYPE, 0, 2, name='Play_Button')
Exemplo n.º 8
0
 def _create_controls(self):
     self._device_controls = ButtonMatrixElement(rows=[[EncoderElement(MIDI_CC_TYPE, (self.encoder_msg_channel), identifier, (Live.MidiMap.MapMode.relative_smooth_two_compliment), name=('Encoder_%d_%d' % (column_index, row_index))) for column_index, identifier in enumerate(row)] for row_index, row in enumerate((
      self.encoder_msg_ids[:4], self.encoder_msg_ids[8:12]))])
     self._horizontal_scroll_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[7]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Horizontal_Scroll_Encoder')
     self._vertical_scroll_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[15]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Vertical_Scroll_Encoder')
     self._volume_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[13]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Volume_Encoder')
     self._pan_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[12]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Pan_Encoder')
     self._send_a_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[4]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Send_A_Encoder')
     self._send_b_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[5]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Send_B_Encoder')
     self._send_encoders = ButtonMatrixElement(rows=[
      [
       self._send_a_encoder, self._send_b_encoder]])
     self._return_a_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[6]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Return_A_Encoder')
     self._return_b_encoder = EncoderElement(MIDI_CC_TYPE,
       (self.encoder_msg_channel),
       (self.encoder_msg_ids[14]),
       (Live.MidiMap.MapMode.relative_smooth_two_compliment),
       name='Return_B_Encoder')
     self._return_encoders = ButtonMatrixElement(rows=[
      [
       self._return_a_encoder, self._return_b_encoder]])
     self._pads = ButtonMatrixElement(rows=[[ButtonElement(True, MIDI_NOTE_TYPE, (self.pad_channel), (col + 36 + 8 * row), name=('Pad_%d_%d' % (col, row))) for col in range(8)] for row in range(2)])
    def _create_controls(self):
        self._device_encoders = ButtonMatrixElement(rows=[[
            EncoderElement(MIDI_CC_TYPE,
                           ENCODER_CHANNEL,
                           identifier, (Live.MidiMap.MapMode.
                                        relative_smooth_binary_offset),
                           name=('Device_Encoder_%d_%d' %
                                 (col_index, row_index)))
            for col_index, identifier in enumerate(row)
        ] for row_index, row in enumerate((ENCODER_MSG_IDS[:4],
                                           ENCODER_MSG_IDS[4:8]))])
        self._horizontal_scroll_encoder = EncoderElement(
            MIDI_CC_TYPE,
            ENCODER_CHANNEL, (ENCODER_MSG_IDS[(-2)]),
            (Live.MidiMap.MapMode.relative_smooth_binary_offset),
            name='Horizontal_Scroll_Encoder')
        self._vertical_scroll_encoder = EncoderElement(
            MIDI_CC_TYPE,
            ENCODER_CHANNEL, (ENCODER_MSG_IDS[(-1)]),
            (Live.MidiMap.MapMode.relative_smooth_binary_offset),
            name='Vertical_Scroll_Encoder')
        self._volume_sliders = ButtonMatrixElement(rows=[[
            SliderElement(MIDI_CC_TYPE, ENCODER_CHANNEL, identifier)
            for identifier in SLIDER_MSG_IDS[:-1]
        ]])
        self._master_slider = SliderElement(MIDI_CC_TYPE, ENCODER_CHANNEL,
                                            SLIDER_MSG_IDS[(-1)])

        def make_keylab_button(name):
            button = ButtonElement(True,
                                   MIDI_CC_TYPE,
                                   0, (get_button_identifier_by_name(name)),
                                   name=(name.title()))
            return button

        for button_name in list(BUTTON_HARDWARE_AND_MESSAGE_IDS.keys()):
            setattr(self, '_' + button_name, make_keylab_button(button_name))

        self._pads = ButtonMatrixElement(rows=[[
            ButtonElement(True,
                          MIDI_CC_TYPE,
                          PAD_CHANNEL, (col_index + row_offset),
                          name=('Pad_%d_%d' % (col_index, row_index)))
            for col_index in range(4)
        ] for row_index, row_offset in enumerate(range(48, 35, -4))])
Exemplo n.º 10
0
    def activate_pad_control(self, track, pad):
        self._do_deactivate_pad_control()

        with self.component_guard():
            self._deactivate_track_control()

            track_id = track + 8
            tracks = self.mixer.song().tracks

            if track_id < len(tracks):
                track = tracks[track_id]

                if (len(track.devices) > 0):
                    drumpad = track.devices[0].drum_pads[36 + pad]
                    if len(drumpad.chains) > 0:
                        if len(drumpad.chains[0].devices) > 0:
                            self.actual_device = drumpad.chains[0].devices[0]

                            def log(msg):
                                self.log_message(msg)

                            self._pad_control_device = CustomDeviceComponent(
                                log)
                            device_controls = (
                                EncoderElement(MIDI_CC_TYPE, 10, 1,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 2,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 3,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 4,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 5,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 6,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 7,
                                               self._map_modes.absolute),
                                EncoderElement(MIDI_CC_TYPE, 10, 8,
                                               self._map_modes.absolute),
                            )

                            self.actual_device.playback_mode = 0
                            self.actual_device.parameters[31].value = 1.0

                            self._pad_control_device.set_device(
                                self.actual_device)
                            self._pad_control_device.set_parameter_controls(
                                tuple(device_controls))
                            self._pad_control_device.set_lock_to_device(
                                "lock", self.actual_device)
                            self.log_message("AA " +
                                             str(self._pad_control_device.
                                                 _current_bank_details()))
 def _create_controls(self):
     self._encoders = ButtonMatrixElement(rows=[
      [EncoderElement(MIDI_CC_TYPE, 0, identifier, (Live.MidiMap.MapMode.absolute), name=('Encoder_%d' % index)) for index, identifier in enumerate(ENCODER_IDS)]])
     self._master_encoder = EncoderElement(MIDI_CC_TYPE,
       0, 10, (Live.MidiMap.MapMode.absolute), name='Master_Encoder')
     self._sliders = ButtonMatrixElement(rows=[
      [SliderElement(MIDI_CC_TYPE, 0, identifier, name=('Slider_%d' % index)) for index, identifier in enumerate(SLIDER_IDS)]])
     self._master_slider = SliderElement(MIDI_CC_TYPE, 0, 7, name='Master_Slider')
     self._play_button = ButtonElement(True, MIDI_CC_TYPE, 0, 26)
     self._stop_button = ButtonElement(True, MIDI_CC_TYPE, 0, 25)
     self._record_button = ButtonElement(True, MIDI_CC_TYPE, 0, 28)
     self._forward_button = ButtonElement(True, MIDI_CC_TYPE, 0, 24)
     self._backward_button = ButtonElement(True, MIDI_CC_TYPE, 0, 21)
     self._ff_button = ButtonElement(True, MIDI_CC_TYPE, 0, 23)
     self._rw_button = ButtonElement(True, MIDI_CC_TYPE, 0, 22)
     self._device_mode_button = ButtonElement(True, MIDI_CC_TYPE, 0, 80)
     self._pan_mode_button = ButtonElement(True, MIDI_CC_TYPE, 0, 81)
     self._send_a_mode_button = ButtonElement(True, MIDI_CC_TYPE, 0, 82)
     self._send_b_mode_button = ButtonElement(True, MIDI_CC_TYPE, 0, 83)
     self._pads = ButtonMatrixElement(rows=[[ButtonElement(True, MIDI_NOTE_TYPE, 0, identifier) for identifier in row] for row in PAD_ROWS])
Exemplo n.º 12
0
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            is_momentary = True
            self._suggested_input_port = 'Oxygen'
            self._suggested_output_port = 'Oxygen'
            self._has_slider_section = True
            self._shift_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                               GLOBAL_CHANNEL, 57)
            self._shift_button.add_value_listener(self._shift_value)
            self._mixer = SpecialMixerComponent(NUM_TRACKS)
            self._mute_solo_buttons = []
            self._track_up_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                                  GLOBAL_CHANNEL, 111)
            self._track_down_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                                    GLOBAL_CHANNEL, 110)
            self._master_slider = SliderElement(MIDI_CC_TYPE, GLOBAL_CHANNEL,
                                                41)
            for index in range(NUM_TRACKS):
                self._mute_solo_buttons.append(
                    ButtonElement(is_momentary, MIDI_CC_TYPE, GLOBAL_CHANNEL,
                                  49 + index))
                self._mixer.channel_strip(index).set_volume_control(
                    SliderElement(MIDI_CC_TYPE, GLOBAL_CHANNEL, 33 + index))

            self._shift_value(0)
            self._mixer.master_strip().set_volume_control(self._master_slider)
            self._mixer.selected_strip().set_volume_control(None)
            device = DeviceComponent(
                device_selection_follows_track_selection=True)
            device.set_parameter_controls(
                tuple([
                    EncoderElement(MIDI_CC_TYPE, GLOBAL_CHANNEL, 17 + index,
                                   Live.MidiMap.MapMode.absolute)
                    for index in range(8)
                ]))
            self.set_device_component(device)
            ffwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                        GLOBAL_CHANNEL, 115)
            rwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                       GLOBAL_CHANNEL, 114)
            loop_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                        GLOBAL_CHANNEL, 113)
            transport = TransportComponent()
            transport.set_stop_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, GLOBAL_CHANNEL, 116))
            transport.set_play_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, GLOBAL_CHANNEL, 117))
            transport.set_record_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, GLOBAL_CHANNEL, 118))
            session = SessionComponent(0, 0)
            transport_view_modes = TransportViewModeSelector(
                transport, session, ffwd_button, rwd_button, loop_button)
Exemplo n.º 13
0
def make_launch_control_encoder(identifier, name, channel=0):
    encoder = EncoderElement(MIDI_CC_TYPE, channel, identifier,
                             Live.MidiMap.MapMode.absolute)
    encoder.reset = nop
    encoder.set_feedback_delay(-1)
    encoder.name = name
    return encoder
 def __init__(self, *a, **k):
     (super(Alesis_V, self).__init__)(*a, **k)
     with self.component_guard():
         encoders = ButtonMatrixElement(rows=[[
             EncoderElement(MIDI_CC_TYPE,
                            0, (identifier +
                                20), (Live.MidiMap.MapMode.absolute),
                            name=('Encoder_%d' % identifier))
             for identifier in range(4)
         ]])
         device = DeviceComponent(
             name='Device',
             is_enabled=False,
             layer=Layer(parameter_controls=encoders),
             device_selection_follows_track_selection=True)
         device.set_enabled(True)
         self.set_device_component(device)
Exemplo n.º 15
0
    def _setup_device_control(self):
        is_momentary = True
        device_bank_buttons = []
        device_param_controls = []
        for index in range(8):
            device_bank_buttons.append(
                ButtonElement(is_momentary, MIDI_NOTE_TYPE, 12, 70 + index))
            device_param_controls.append(
                EncoderElement(MIDI_CC_TYPE, 12, 12 + index,
                               Live.MidiMap.MapMode.absolute))

        device = DeviceComponent()
        device.set_bank_buttons(tuple(device_bank_buttons))
        device.set_parameter_controls(tuple(device_param_controls))
        device_translation_selector = ChannelTranslationSelector()
        device_translation_selector.set_controls_to_translate(
            tuple(device_param_controls))
        device_translation_selector.set_mode_buttons(
            tuple(device_bank_buttons))
        self.set_device_component(device)
Exemplo n.º 16
0
 def __init__(self, msg_type, channel, identifier, map_mode):
     EncoderElement.__init__(self, msg_type, channel, identifier, map_mode)
     self._peek_mode = False
Exemplo n.º 17
0
def make_encoder(cc_no, name):
    encoder = EncoderElement(MIDI_CC_TYPE, 0, cc_no,
                             Live.MidiMap.MapMode.absolute)
    encoder.set_feedback_delay(-1)
    encoder.name = name
    return encoder
Exemplo n.º 18
0
    def __init__(self):

        self._midi_channel = 1
        self.main_faders = []
        self.encoder_groups = []
        self.encoder_buttons = []
        self.buttons = []

        #we are going to input this manually, so that it is easy to update later on:

        ##FADERS##
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 32))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 33))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 34))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 35))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 36))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 37))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 38))
        self.main_faders.append(
            SliderElement(MIDI_CC_TYPE, self._midi_channel, 39))

        ##ENCODERS##
        #group 1, pan controls#
        self.encoder_groups.append([])
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 102,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 103,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 104,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 105,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 106,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 107,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 108,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 109,
                           Live.MidiMap.MapMode.absolute))

        #group 2, send A controls#
        self.encoder_groups.append([])
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 64,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 65,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 66,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 67,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 68,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 69,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 70,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 71,
                           Live.MidiMap.MapMode.absolute))

        #group 3, send B controls#
        self.encoder_groups.append([])
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 72,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 73,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 74,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 75,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 76,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 77,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 78,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 79,
                           Live.MidiMap.MapMode.absolute))

        #group 4, send C controls#
        self.encoder_groups.append([])
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 80,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 81,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 82,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 83,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 84,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 85,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 86,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 87,
                           Live.MidiMap.MapMode.absolute))

        ##BUTTONS##

        #encoder buttons, all control groups, record buttons#
        self.encoder_buttons.append([])
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 56))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 57))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 58))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 59))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 60))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 61))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 62))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 63))
        self.encoder_buttons[0].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 64))

        #top row buttons, Track Enable Buttons#
        self.buttons.append([])
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 40))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 41))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 42))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 43))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 44))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 45))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 46))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 47))

        #bottom row self.buttons, Record Self.Buttons#
        self.buttons.append([])
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 48))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 49))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 50))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 51))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 52))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 53))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 54))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 55))

        #bottom self.buttons, purpose TBD#
        self.buttons.append([])
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 89))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 90))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 91))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 92))
Exemplo n.º 19
0
 def make_mixer_encoder(cc, channel, name, map_mode=volume_map_mode):
     if is_valid_midi_identifier(cc):
         if is_valid_midi_channel(channel):
             return EncoderElement(MIDI_CC_TYPE, channel, cc, map_mode, name=name)
def make_encoder(identifier, name):
    return EncoderElement(MIDI_CC_TYPE,
                          0,
                          identifier, (Live.MidiMap.MapMode.absolute),
                          name=name)
Exemplo n.º 21
0
def make_encoder(cc_no):
    return EncoderElement(MIDI_CC_TYPE, GLOBAL_CHANNEL, cc_no,
                          Live.MidiMap.MapMode.absolute)
 def _mainCtrl(self):
     self.show_message("Loading Korg nanoKontrol Studio mappings")
     # Main transport controls
     transport.set_record_button(ButtonElement(1, MIDI_CC_TYPE, 0, 81))
     transport.set_loop_button(ButtonElement(1, MIDI_CC_TYPE, 0, 54))
     transport.set_play_button(ButtonElement(1, MIDI_CC_TYPE, 0, 80))
     transport.set_stop_button(ButtonElement(1, MIDI_CC_TYPE, 0, 63))
     transport.set_tap_tempo_button(ButtonElement(1, MIDI_CC_TYPE, 0, 62))
     # Seek/scrub controls: (is_momentary, MIDI_CC_TYPE, channel, CCnum). For this to work, nanoKontrol Studio's jog wheel should be set to: Inc/Dec 2, Acceleration 2.
     transport.set_seek_forward_button(ButtonElement(
         0, MIDI_CC_TYPE, 0, 83))
     transport.set_seek_backward_button(
         ButtonElement(0, MIDI_CC_TYPE, 0, 85))
     transport.set_metronome_button(ButtonElement(1, MIDI_CC_TYPE, 0, 58))
     transport.set_arrangement_overdub_button(
         ButtonElement(1, MIDI_CC_TYPE, 0, 59))
     # nKS' 1st strip is always the current track, set with the Track < and > buttons.
     mixer.set_select_buttons(ButtonElement(1, MIDI_CC_TYPE, 0, 61),
                              ButtonElement(1, MIDI_CC_TYPE, 0, 60))
     mixer.selected_strip().set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 0, 21))
     mixer.selected_strip().set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 0, 29))
     mixer.selected_strip().set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 0, 38))
     mixer.selected_strip().set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 0, 46))
     mixer.selected_strip().set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 0, 13, Live.MidiMap.MapMode.absolute))
     mixer.selected_strip().set_volume_control(
         SliderElement(MIDI_CC_TYPE, 0, 2))
     # nKS' 8th strip is always Master. Fader is volume and pot is cue level.
     mixer.master_strip().set_volume_control(
         SliderElement(MIDI_CC_TYPE, 0, 12))
     mixer.set_prehear_volume_control(
         EncoderElement(MIDI_CC_TYPE, 0, 20, Live.MidiMap.MapMode.absolute)
     )  # Known as cue/preview in current versions of Live; controls e.g. metronome level in headphones
     # Scene 2 on the nKS should be factory defaults - ie same CCs as Scene 1 but on MIDI Channel 2 (1). This is set up like a conventional 8-track mix control surface.
     mixer.channel_strip(0).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 21))
     mixer.channel_strip(1).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 22))
     mixer.channel_strip(2).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 23))
     mixer.channel_strip(3).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 24))
     mixer.channel_strip(4).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 25))
     mixer.channel_strip(5).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 26))
     mixer.channel_strip(6).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 27))
     mixer.channel_strip(7).set_mute_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 28))
     mixer.channel_strip(0).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 29))
     mixer.channel_strip(1).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 30))
     mixer.channel_strip(2).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 31))
     mixer.channel_strip(3).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 33))
     mixer.channel_strip(4).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 34))
     mixer.channel_strip(5).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 35))
     mixer.channel_strip(6).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 36))
     mixer.channel_strip(7).set_solo_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 37))
     mixer.channel_strip(0).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 38))
     mixer.channel_strip(1).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 39))
     mixer.channel_strip(2).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 40))
     mixer.channel_strip(3).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 41))
     mixer.channel_strip(4).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 42))
     mixer.channel_strip(5).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 43))
     mixer.channel_strip(6).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 44))
     mixer.channel_strip(7).set_arm_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 45))
     mixer.channel_strip(0).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 46))
     mixer.channel_strip(1).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 47))
     mixer.channel_strip(2).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 48))
     mixer.channel_strip(3).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 49))
     mixer.channel_strip(4).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 50))
     mixer.channel_strip(5).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 51))
     mixer.channel_strip(6).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 52))
     mixer.channel_strip(7).set_shift_button(
         ButtonElement(1, MIDI_CC_TYPE, 1, 53))
     mixer.channel_strip(0).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 13, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(1).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 14, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(2).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 15, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(3).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 16, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(4).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 17, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(5).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 18, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(6).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 19, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(7).set_pan_control(
         EncoderElement(MIDI_CC_TYPE, 1, 20, Live.MidiMap.MapMode.absolute))
     mixer.channel_strip(0).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 2))
     mixer.channel_strip(1).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 3))
     mixer.channel_strip(2).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 4))
     mixer.channel_strip(3).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 5))
     mixer.channel_strip(4).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 6))
     mixer.channel_strip(5).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 8))
     mixer.channel_strip(6).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 9))
     mixer.channel_strip(7).set_volume_control(
         SliderElement(MIDI_CC_TYPE, 1, 12))
Exemplo n.º 23
0
    def __init__(self):
        """initializer for the BCR2000 controller->object mappings"""
        self._midi_channel = 0
        self.main_encoders = []
        self.buttons = []
        self.encoder_groups = []
        self.encoder_buttons = []

        #Column 1 (Left)
        self.main_encoders.append([])
        self.main_encoders[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 81,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 89,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 97,
                           Live.MidiMap.MapMode.absolute))

        #Column 2
        self.main_encoders.append([])
        self.main_encoders[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 82,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 90,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[1].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 98,
                           Live.MidiMap.MapMode.absolute))

        #Column 3
        self.main_encoders.append([])
        self.main_encoders[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 83,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 91,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[2].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 99,
                           Live.MidiMap.MapMode.absolute))

        #Column 4
        self.main_encoders.append([])
        self.main_encoders[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 84,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 92,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[3].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 100,
                           Live.MidiMap.MapMode.absolute))

        #Column 5
        self.main_encoders.append([])
        self.main_encoders[4].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 85,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[4].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 93,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[4].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 101,
                           Live.MidiMap.MapMode.absolute))

        #Column 6
        self.main_encoders.append([])
        self.main_encoders[5].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 86,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[5].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 94,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[5].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 102,
                           Live.MidiMap.MapMode.absolute))

        #Column 7
        self.main_encoders.append([])
        self.main_encoders[6].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 87,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[6].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 95,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[6].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 103,
                           Live.MidiMap.MapMode.absolute))

        #Column 8
        self.main_encoders.append([])
        self.main_encoders[7].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 88,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[7].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 96,
                           Live.MidiMap.MapMode.absolute))
        self.main_encoders[7].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 104,
                           Live.MidiMap.MapMode.absolute))

        #top row self.buttons
        self.buttons.append([])
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 65))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 66))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 67))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 68))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 69))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 70))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 71))
        self.buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 72))

        #bottom row self.buttons
        self.buttons.append([])
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 73))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 74))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 75))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 76))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 77))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 78))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 79))
        self.buttons[1].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 80))

        #bottom self.buttons
        self.buttons.append([])
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 105))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 106))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 107))
        self.buttons[2].append(
            ButtonElement(True, MIDI_CC_TYPE, self._midi_channel, 108))

        #first encoder group
        self.encoder_groups.append([])
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 1,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 2,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 3,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 4,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 5,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 6,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 7,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 8,
                           Live.MidiMap.MapMode.absolute))

        #second encoder group
        self.encoder_groups.append([])
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 9,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 10,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 11,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 12,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 13,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 14,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 15,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 16,
                           Live.MidiMap.MapMode.absolute))

        #third encoder group
        self.encoder_groups.append([])
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 17,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 18,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 19,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 20,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 21,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 22,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 23,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 24,
                           Live.MidiMap.MapMode.absolute))

        #fourth encoder group
        self.encoder_groups.append([])
        self.encoder_groups.append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 17,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 18,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 19,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 20,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 21,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 22,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 23,
                           Live.MidiMap.MapMode.absolute))
        self.encoder_groups[0].append(
            EncoderElement(MIDI_CC_TYPE, self._midi_channel, 24,
                           Live.MidiMap.MapMode.absolute))

        ##ENCODER SELF.BUTTONS##
        #group one
        self.encoder_buttons.append([])
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 33))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 34))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 35))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 36))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 37))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 38))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 39))
        self.encoder_buttons[0].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 40))

        #group two
        self.encoder_buttons.append([])
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 41))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 42))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 43))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 44))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 45))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 46))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 47))
        self.encoder_buttons[1].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 48))

        #group three
        self.encoder_buttons.append([])
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 49))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 50))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 51))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 52))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 53))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 54))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 55))
        self.encoder_buttons[2].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 56))

        #group four
        self.encoder_buttons.append([])
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 57))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 58))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 59))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 60))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 61))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 62))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 63))
        self.encoder_buttons[3].append(
            ButtonElement(False, MIDI_CC_TYPE, self._midi_channel, 64))
 def release_parameter(self):
     EncoderElement.release_parameter(self)
     self._update_led()
 def connect_to(self, parameter):
     if parameter != self._parameter_to_map_to:
         if not self.is_mapped_manually():
             self.send_value((self._off_value), force=True)
     EncoderElement.connect_to(self, parameter)
def make_encoder(name, identifier, channel=0):
    return EncoderElement(MIDI_CC_TYPE,
                          channel,
                          identifier, (Live.MidiMap.MapMode.absolute),
                          name=name)
Exemplo n.º 27
0
    def _create_controls(self):
        make_color_button = partial(make_button, skin=(self._skin))
        self._shift_button = make_button(0, 81, name='Shift_Button')
        self._matrix = ButtonMatrixElement(name='Button_Matrix')
        self._scene_launch_buttons = [
            make_color_button(0, (index + 82),
                              name=('Scene_%d_Launch_Button' % index))
            for index in range(SESSION_HEIGHT)
        ]
        self._track_stop_buttons = [
            make_color_button(index, 52, name=('Track_%d_Stop_Button' % index))
            for index in range(SESSION_WIDTH)
        ]
        for scene_index in range(SESSION_HEIGHT):
            row = [
                make_color_button(track_index, (scene_index + 53),
                                  name=('%d_Clip_%d_Button' %
                                        (track_index, scene_index)))
                for track_index in range(SESSION_WIDTH)
            ]
            self._matrix.add_row(row)

        self._selected_scene_launch_button = make_pedal_button(
            64, name='Selected_Scene_Launch_Button')
        self._scene_launch_buttons = ButtonMatrixElement(
            name='Scene_Launch_Buttons', rows=[self._scene_launch_buttons])
        self._solo_buttons = [
            make_button(track_index, 49, name=('%d_Solo_Button' % track_index))
            for track_index in range(MIXER_SIZE)
        ]
        self._mute_buttons = [
            make_button(track_index, 50, name=('%d_Mute_Button' % track_index))
            for track_index in range(MIXER_SIZE)
        ]
        self._master_volume_control = make_slider(0,
                                                  14,
                                                  name='Master_Volume_Control')
        self._prehear_control = EncoderElement(
            MIDI_CC_TYPE,
            0,
            47, (MapMode.relative_two_compliment),
            name='Prehear_Volume_Control')
        self._master_select_button = make_button(0,
                                                 80,
                                                 name='Master_Select_Button')
        self._select_buttons = [
            make_button(track_index,
                        51,
                        name=('%d_Select_Button' % track_index))
            for track_index in range(8)
        ]
        self._arm_buttons = [
            make_button(track_index, 48, name=('%d_Arm_Button' % track_index))
            for track_index in range(8)
        ]
        self._sliders = [
            make_slider(track_index,
                        7,
                        name=('%d_Volume_Control' % track_index))
            for track_index in range(8)
        ]
        self._note_matrix = ButtonMatrixElement(name='Note_Button_Matrix')
        self._note_buttons = [[
            make_button(9, (note + i), name=('Note_%d_Button' % (note + i)))
            for i in range(4)
        ] for note in range(36, 75, 4)]
        for row in self._note_buttons:
            for button in row:
                button.send_depends_on_forwarding = False

            self._note_matrix.add_row(row)
def make_encoder(channel, identifier, *a, **k):
    return EncoderElement(MIDI_CC_TYPE, channel, identifier,
                          MapMode.relative_two_compliment, *a, **k)
Exemplo n.º 29
0
def make_encoder(channel, cc, name):
    map_mode = Live.MidiMap.MapMode.absolute
    return EncoderElement(MIDI_CC_TYPE, channel, cc, map_mode=map_mode, name=name)
	def _mode1(self):
		self.show_message("_mode1 is active")
		# mixer
		global mixer
		# volumes
		self.mixer.channel_strip(7).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 25, _map_modes.absolute))
		self.mixer.channel_strip(6).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 24, _map_modes.absolute))
		self.mixer.channel_strip(5).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 23, _map_modes.absolute))
		self.mixer.channel_strip(4).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 22, _map_modes.absolute))
		self.mixer.channel_strip(3).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 17, _map_modes.absolute))
		self.mixer.channel_strip(2).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 16, _map_modes.absolute))
		self.mixer.channel_strip(1).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 15, _map_modes.absolute))
		self.mixer.channel_strip(0).set_volume_control(EncoderElement(MIDI_CC_TYPE, 14, 14, _map_modes.absolute))
		# pan
		self.mixer.channel_strip(7).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 29, _map_modes.absolute))
		self.mixer.channel_strip(6).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 28, _map_modes.absolute))
		self.mixer.channel_strip(5).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 27, _map_modes.absolute))
		self.mixer.channel_strip(4).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 26, _map_modes.absolute))
		self.mixer.channel_strip(3).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 21, _map_modes.absolute))
		self.mixer.channel_strip(2).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 20, _map_modes.absolute))
		self.mixer.channel_strip(1).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 19, _map_modes.absolute))
		self.mixer.channel_strip(0).set_pan_control(EncoderElement(MIDI_CC_TYPE, 14, 18, _map_modes.absolute))