示例#1
0
    def _setup_mixer_control(self):
        num_tracks = GRIDSIZE[
            0]  # Here we define the mixer width in tracks (a mixer has only one dimension)
        global mixer  # We want to instantiate the global mixer as a MixerComponent object (it was a global "None" type up until now...)
        mixer = MixerComponent(
            num_tracks)  #(num_tracks, num_returns, with_eqs, with_filters)
        mixer.set_track_offset(
            0)  #Sets start point for mixer strip (offset from left)
        """set up the mixer buttons"""
        self.song().view.selected_track = mixer.channel_strip(0)._track
        master = mixer.master_strip()
        master.set_volume_control(
            SliderElement(MIDI_CC_TYPE, CHANNEL_USER, MASTER_VOLUME))
        mixer.set_prehear_volume_control(
            SliderElement(MIDI_CC_TYPE, CHANNEL_USER, PREHEAR))

        for index in range(GRIDSIZE[0]):
            mixer.channel_strip(index).set_volume_control(
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER, MIX_FADERS[index]))
            # mixer.channel_strip(index).set_volume_control(SliderElement(MIDI_CC_TYPE, CHANNEL_INST, MIX_FADERS[index]))
            mixer.channel_strip(index).set_pan_control(
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER,
                              PAN_CONTROLS[index]))
            mixer.channel_strip(index).set_arm_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL_INST,
                              ARM_BUTTONS[index]))  #sets the record arm button
            mixer.channel_strip(index).set_solo_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL_INST,
                              SOLO_BUTTONS[index]))
            mixer.channel_strip(index).set_mute_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL_INST,
                              MUTE_BUTTONS[index]))
            mixer.channel_strip(index).set_select_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL_INST,
                              TRACK_SELECTS[index]))
            mixer.channel_strip(index).set_send_controls([
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER,
                              SEND_CONTROLS[index][0]),
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER,
                              SEND_CONTROLS[index][1]),
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER,
                              SEND_CONTROLS[index][2]),
                SliderElement(MIDI_CC_TYPE, CHANNEL_MIXER,
                              SEND_CONTROLS[index][3])
            ])
        """TRANSPORT CONTROLS"""
        stop_button = ButtonElement(False, MIDI_CC_TYPE, CHANNEL_MIXER,
                                    STOP_BUTTON)
        play_button = ButtonElement(False, MIDI_CC_TYPE, CHANNEL_MIXER,
                                    PLAY_BUTTON)
        record_button = ButtonElement(False, MIDI_CC_TYPE, CHANNEL_MIXER,
                                      RECORD_BUTTON)
        overdub_button = ButtonElement(False, MIDI_CC_TYPE, CHANNEL_MIXER,
                                       OVERDUB_BUTTON)
        transport = TransportComponent()
        transport.TEMPO_TOP = 188
        transport.set_stop_button(stop_button)
        transport.set_play_button(play_button)
        transport.set_overdub_button(overdub_button)
        transport.set_record_button(record_button)
        transport.set_seek_buttons(
            ButtonElement(False, MIDI_CC_TYPE, 0, SEEK_LEFT),
            ButtonElement(False, MIDI_CC_TYPE, 0, SEEK_RIGHT))
        transport.set_tempo_control(
            SliderElement(MIDI_CC_TYPE, CHANNEL_USER, TEMPO))
        transport.set_metronome_button(
            ButtonElement(False, MIDI_CC_TYPE, CHANNEL_USER, METRONOME))
        transport.set_tap_tempo_button(
            ButtonElement(False, MIDI_CC_TYPE, CHANNEL_USER, TAP_TEMPO))
示例#2
0
 def __init__(self, *a, **k):
     super(MPK261MXLOOP, self).__init__(*a, **k)
     self.show_message("-----------------------= MPK261MXLOOP LOADING - maxcloutier13 says hi =----------------------------------------------------------")
     self.log_message("-----------------------= MPK261MXLOOP LOADING - maxcloutier13 says hi =----------------------------------------------------------")
     with self.component_guard():
         midimap = MidiMap()
         #Sustain pedal 1 = Play/Record/Overdub switch for live looping
         self._LoopRecordButton = ButtonElement(True, MIDI_CC_TYPE, 0, 64)
         self._LoopRecordButton.add_value_listener(self._launch_clip, False)
         #Sustain pedal 2 = Sustain pour l'instant ;o)
         #self._LoopRecordButton = ButtonElement(True, MIDI_CC_TYPE, 0, 65)            
         #Control up/down/left/right using the daw controls            
         self._UpButton = ButtonElement(False, MIDI_CC_TYPE, 0, 88, name='UpButton')
         self._DownButton = ButtonElement(False, MIDI_CC_TYPE, 0, 89, name='DownButton')
         self._LeftButton = ButtonElement(False, MIDI_CC_TYPE, 0, 20, name='LeftButton')
         self._RightButton = ButtonElement(False, MIDI_CC_TYPE, 0, 21, name='RightButton')
         #Listeners for the functions
         self._UpButton.add_value_listener(self._move_up, False)
         self._DownButton.add_value_listener(self._move_down, False)
         self._LeftButton.add_value_listener(self._move_left, False)
         self._RightButton.add_value_listener(self._move_right, False)
         #Super crude manual init for the custom buttons and faders 
         #Control Bank A - Channel 1 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         self._Encoder0 = EncoderElement(MIDI_CC_TYPE,1,22, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder0')
         self._Encoder1 = EncoderElement(MIDI_CC_TYPE,1,23, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder1')
         self._Encoder2 = EncoderElement(MIDI_CC_TYPE,1,24, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder2')
         self._Encoder3 = EncoderElement(MIDI_CC_TYPE,1,25, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder3')
         self._Encoder4 = EncoderElement(MIDI_CC_TYPE,1,26, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder4')
         self._Encoder5 = EncoderElement(MIDI_CC_TYPE,1,27, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder5')
         self._Encoder6 = EncoderElement(MIDI_CC_TYPE,1,28, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder6')
         self._Encoder7 = EncoderElement(MIDI_CC_TYPE,1,29, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder7')
         self._ArmButton0 = ButtonElement(False, MIDI_CC_TYPE, 0, 32, name='ArmButton0')
         self._ArmButton1 = ButtonElement(False, MIDI_CC_TYPE, 0, 33, name='ArmButton1')
         self._ArmButton2 = ButtonElement(False, MIDI_CC_TYPE, 0, 34, name='ArmButton2')
         self._ArmButton3 = ButtonElement(False, MIDI_CC_TYPE, 0, 35, name='ArmButton3')
         self._ArmButton4 = ButtonElement(False, MIDI_CC_TYPE, 0, 36, name='ArmButton4')
         self._ArmButton5 = ButtonElement(False, MIDI_CC_TYPE, 0, 37, name='ArmButton5')
         self._ArmButton6 = ButtonElement(False, MIDI_CC_TYPE, 0, 38, name='ArmButton6')
         self._ArmButton7 = ButtonElement(False, MIDI_CC_TYPE, 0, 39, name='ArmButton7')
         self._VolumeSlider0 = SliderElement(MIDI_CC_TYPE, 0, 12, name='VolumeSlider0')
         self._VolumeSlider1 = SliderElement(MIDI_CC_TYPE, 0, 13, name='VolumeSlider1')
         self._VolumeSlider2 = SliderElement(MIDI_CC_TYPE, 0, 14, name='VolumeSlider2')
         self._VolumeSlider3 = SliderElement(MIDI_CC_TYPE, 0, 15, name='VolumeSlider3')
         self._VolumeSlider4 = SliderElement(MIDI_CC_TYPE, 0, 16, name='VolumeSlider4')
         self._VolumeSlider5 = SliderElement(MIDI_CC_TYPE, 0, 17, name='VolumeSlider5')
         self._VolumeSlider6 = SliderElement(MIDI_CC_TYPE, 0, 18, name='VolumeSlider6')
         self._VolumeSlider7 = SliderElement(MIDI_CC_TYPE, 0, 19, name='VolumeSlider7')
         #Control Bank B - Channel 2 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         self._Encoder8 = EncoderElement(MIDI_CC_TYPE,2,22, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder8')
         self._Encoder9 = EncoderElement(MIDI_CC_TYPE,2,23, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder9')
         self._Encoder10 = EncoderElement(MIDI_CC_TYPE,2,24, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder10')
         self._Encoder11 = EncoderElement(MIDI_CC_TYPE,2,25, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder11')
         self._Encoder12 = EncoderElement(MIDI_CC_TYPE,2,26, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder12')
         self._Encoder13 = EncoderElement(MIDI_CC_TYPE,2,27, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder13')
         self._Encoder14 = EncoderElement(MIDI_CC_TYPE,2,28, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder14')
         self._Encoder15 = EncoderElement(MIDI_CC_TYPE,2,29, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder15')
         self._ArmButton8 = ButtonElement(False, MIDI_CC_TYPE, 1, 32, name='ArmButton8')
         self._ArmButton9 = ButtonElement(False, MIDI_CC_TYPE, 1, 33, name='ArmButton9')
         self._ArmButton10 = ButtonElement(False, MIDI_CC_TYPE, 1, 34, name='ArmButton10')
         self._ArmButton11 = ButtonElement(False, MIDI_CC_TYPE, 1, 35, name='ArmButton11')
         self._ArmButton12 = ButtonElement(False, MIDI_CC_TYPE, 1, 36, name='ArmButton12')
         self._ArmButton13 = ButtonElement(False, MIDI_CC_TYPE, 1, 37, name='ArmButton13')
         self._ArmButton14 = ButtonElement(False, MIDI_CC_TYPE, 1, 38, name='ArmButton14')
         self._ArmButton15 = ButtonElement(False, MIDI_CC_TYPE, 1, 39, name='ArmButton15')
         self._VolumeSlider8 = SliderElement(MIDI_CC_TYPE, 1, 12, name='VolumeSlider8')
         self._VolumeSlider9 = SliderElement(MIDI_CC_TYPE, 1, 13, name='VolumeSlider9')
         self._VolumeSlider10 = SliderElement(MIDI_CC_TYPE, 1, 14, name='VolumeSlider10')
         self._VolumeSlider11 = SliderElement(MIDI_CC_TYPE, 1, 15, name='VolumeSlider11')
         self._VolumeSlider12 = SliderElement(MIDI_CC_TYPE, 1, 16, name='VolumeSlider12')
         self._VolumeSlider13 = SliderElement(MIDI_CC_TYPE, 1, 17, name='VolumeSlider13')
         self._VolumeSlider14 = SliderElement(MIDI_CC_TYPE, 1, 18, name='VolumeSlider14')
         self._VolumeSlider15 = SliderElement(MIDI_CC_TYPE, 1, 19, name='VolumeSlider15')
         #Control Bank C - Channel 3 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         self._Encoder16 = EncoderElement(MIDI_CC_TYPE,3,22, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder16')
         self._Encoder17 = EncoderElement(MIDI_CC_TYPE,3,23, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder17')
         self._Encoder18 = EncoderElement(MIDI_CC_TYPE,3,24, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder18')
         self._Encoder19 = EncoderElement(MIDI_CC_TYPE,3,25, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder19')
         self._Encoder20 = EncoderElement(MIDI_CC_TYPE,3,26, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder20')
         self._Encoder21 = EncoderElement(MIDI_CC_TYPE,3,27, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder21')
         self._Encoder22 = EncoderElement(MIDI_CC_TYPE,3,28, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder22')
         self._Encoder23 = EncoderElement(MIDI_CC_TYPE,3,29, Live.MidiMap.MapMode.relative_two_compliment, name='Encoder23')
         self._ArmButton16 = ButtonElement(False, MIDI_CC_TYPE, 2, 32, name='ArmButton16')
         self._ArmButton17 = ButtonElement(False, MIDI_CC_TYPE, 2, 33, name='ArmButton17')
         self._ArmButton18 = ButtonElement(False, MIDI_CC_TYPE, 2, 34, name='ArmButton18')
         self._ArmButton19 = ButtonElement(False, MIDI_CC_TYPE, 2, 35, name='ArmButton19')
         self._ArmButton20 = ButtonElement(False, MIDI_CC_TYPE, 2, 36, name='ArmButton20')
         self._ArmButton21 = ButtonElement(False, MIDI_CC_TYPE, 2, 37, name='ArmButton21')
         self._ArmButton22 = ButtonElement(False, MIDI_CC_TYPE, 2, 38, name='ArmButton22')
         self._ArmButton23 = ButtonElement(False, MIDI_CC_TYPE, 2, 39, name='ArmButton23')
         self._VolumeSlider16 = SliderElement(MIDI_CC_TYPE, 2, 12, name='VolumeSlider16')
         self._VolumeSlider17 = SliderElement(MIDI_CC_TYPE, 2, 13, name='VolumeSlider17')
         self._VolumeSlider18 = SliderElement(MIDI_CC_TYPE, 2, 14, name='VolumeSlider18')
         self._VolumeSlider19 = SliderElement(MIDI_CC_TYPE, 2, 15, name='VolumeSlider19')
         self._VolumeSlider20 = SliderElement(MIDI_CC_TYPE, 2, 16, name='VolumeSlider20')
         self._VolumeSlider21 = SliderElement(MIDI_CC_TYPE, 2, 17, name='VolumeSlider21')
         self._VolumeSlider22 = SliderElement(MIDI_CC_TYPE, 2, 18, name='VolumeSlider22')
         self._VolumeSlider23 = SliderElement(MIDI_CC_TYPE, 2, 19, name='VolumeSlider23')
         #Drum Bank A - Channel 4--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         self._Pad0 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 81, name='Pad0')
         self._Pad1 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 83, name='Pad1')
         self._Pad2 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 84, name='Pad2')
         self._Pad3 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 86, name='Pad3')
         self._Pad4 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 74, name='Pad4')
         self._Pad5 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 76, name='Pad5')
         self._Pad6 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 77, name='Pad6')
         self._Pad7 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 79, name='Pad7')
         self._Pad8 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 67, name='Pad8')
         self._Pad9 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 69, name='Pad9')
         self._Pad10 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 71, name='Pad10')
         self._Pad11 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 72, name='Pad11')
         self._Pad12 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 60, name='Pad12')
         self._Pad13 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 62, name='Pad13')
         self._Pad14 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 64, name='Pad14')
         self._Pad15 = ButtonElement(True, MIDI_NOTE_TYPE, 3, 65, name='Pad15')
         self._Pads = ButtonMatrixElement(rows=[[self._Pad0, self._Pad1, self._Pad2, self._Pad3],
                                                [self._Pad4, self._Pad5, self._Pad6, self._Pad7], 
                                                [self._Pad8, self._Pad9, self._Pad10, self._Pad11],
                                                [self._Pad12, self._Pad13, self._Pad14, self._Pad15]])
         #Drum Bank B -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         #Drum Bank C -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         #Drum Bank D -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         #
         #Drum rack -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         drum_rack = DrumRackComponent(name='Drum_Rack', is_enabled=False, layer=Layer(pads=self._Pads))
         drum_rack.set_enabled(True)
         #Transport -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         transport = TransportComponent(name='Transport', is_enabled=False, layer=Layer(play_button=midimap['Play'], record_button=midimap['Record'], stop_button=midimap['Stop'], loop_button=midimap['Loop']))
         #, seek_forward_button=midimap['Forward'], seek_backward_button=midimap['Backward']
         transport.set_enabled(True)
         #Make the Back/Fwd button just normal mapable CC senders
         self._BackButton = ButtonElement(False, MIDI_CC_TYPE, 0, 116, name='BackButton')
         self._FwdButton = ButtonElement(False, MIDI_CC_TYPE, 0, 115, name='FwdButton')
         #Device -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         self._device = DeviceComponent(name='Device', is_enabled=False, layer=Layer(parameter_controls=midimap['Encoders']), device_selection_follows_track_selection=True)
         self._device.set_enabled(True)
         self.set_device_component(self._device)
         #Mixer -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         mixer_size = 24
         self._mixer = MixerComponent(mixer_size, name='Mixer', is_enabled=False)
         #Super crude and repetitive mapping because after all this shit I'm not spending time learning how to loop this crap hehe
         #Bank A
         self._mixer.channel_strip(0).layer = Layer(volume_control = self._VolumeSlider0, arm_button=self._ArmButton0, pan_control=self._Encoder0)
         self._mixer.channel_strip(1).layer = Layer(volume_control = self._VolumeSlider1, arm_button=self._ArmButton1, pan_control=self._Encoder1)
         self._mixer.channel_strip(2).layer = Layer(volume_control = self._VolumeSlider2, arm_button=self._ArmButton2, pan_control=self._Encoder2)
         self._mixer.channel_strip(3).layer = Layer(volume_control = self._VolumeSlider3, arm_button=self._ArmButton3, pan_control=self._Encoder3)
         self._mixer.channel_strip(4).layer = Layer(volume_control = self._VolumeSlider4, arm_button=self._ArmButton4, pan_control=self._Encoder4)
         self._mixer.channel_strip(5).layer = Layer(volume_control = self._VolumeSlider5, arm_button=self._ArmButton5, pan_control=self._Encoder5)
         self._mixer.channel_strip(6).layer = Layer(volume_control = self._VolumeSlider6, arm_button=self._ArmButton6, pan_control=self._Encoder6)
         self._mixer.channel_strip(7).layer = Layer(volume_control = self._VolumeSlider7, arm_button=self._ArmButton7, pan_control=self._Encoder7)
         #Bank B
         self._mixer.channel_strip(8).layer = Layer(volume_control = self._VolumeSlider8, arm_button=self._ArmButton8, pan_control=self._Encoder8)
         self._mixer.channel_strip(9).layer = Layer(volume_control = self._VolumeSlider9, arm_button=self._ArmButton9, pan_control=self._Encoder9)
         self._mixer.channel_strip(10).layer = Layer(volume_control = self._VolumeSlider10, arm_button=self._ArmButton10, pan_control=self._Encoder10)
         self._mixer.channel_strip(11).layer = Layer(volume_control = self._VolumeSlider11, arm_button=self._ArmButton11, pan_control=self._Encoder11)
         self._mixer.channel_strip(12).layer = Layer(volume_control = self._VolumeSlider12, arm_button=self._ArmButton12, pan_control=self._Encoder12)
         self._mixer.channel_strip(13).layer = Layer(volume_control = self._VolumeSlider13, arm_button=self._ArmButton13, pan_control=self._Encoder13)
         self._mixer.channel_strip(14).layer = Layer(volume_control = self._VolumeSlider14, arm_button=self._ArmButton14, pan_control=self._Encoder14)
         self._mixer.channel_strip(15).layer = Layer(volume_control = self._VolumeSlider15, arm_button=self._ArmButton15, pan_control=self._Encoder15)
         #Bank C     
         self._mixer.channel_strip(16).layer = Layer(volume_control = self._VolumeSlider16, arm_button=self._ArmButton16, pan_control=self._Encoder16)
         self._mixer.channel_strip(17).layer = Layer(volume_control = self._VolumeSlider17, arm_button=self._ArmButton17, pan_control=self._Encoder17)
         self._mixer.channel_strip(18).layer = Layer(volume_control = self._VolumeSlider18, arm_button=self._ArmButton18, pan_control=self._Encoder18)
         self._mixer.channel_strip(19).layer = Layer(volume_control = self._VolumeSlider19, arm_button=self._ArmButton19, pan_control=self._Encoder19)
         self._mixer.channel_strip(20).layer = Layer(volume_control = self._VolumeSlider20, arm_button=self._ArmButton20, pan_control=self._Encoder20)
         self._mixer.channel_strip(21).layer = Layer(volume_control = self._VolumeSlider21, arm_button=self._ArmButton21, pan_control=self._Encoder21)
         self._mixer.channel_strip(22).layer = Layer(volume_control = self._VolumeSlider22, arm_button=self._ArmButton22, pan_control=self._Encoder22)
         self._mixer.channel_strip(23).layer = Layer(volume_control = self._VolumeSlider23, arm_button=self._ArmButton23, pan_control=self._Encoder23)
         self._mixer.set_enabled(True)
         #Track change listener
         self.song().view.add_selected_track_listener(self._update_selected_device)
示例#3
0
 def _create_transport(self):
     self._transport = TransportComponent(is_enabled=False, name='Transport', layer=Layer(play_button=self._play_button, stop_button=self._stop_button, loop_button=self._loop_button, record_button=self._record_button))
     self._transport.set_enabled(True)
示例#4
0
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            is_momentary = True
            self._device_selection_follows_track_selection = True
            self.set_pad_translations(PAD_TRANSLATIONS)
            self._suggested_input_port = 'HyperControl'
            self._suggested_output_port = 'HyperControl'
            self._display_on_button = ButtonElement(not is_momentary,
                                                    MIDI_CC_TYPE, 15, 79)
            self._waiting_for_first_response = True
            mixer1 = DisplayingMixerComponent(0)
            mixer1.set_select_buttons(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 111),
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 110))
            mixer1.set_mute_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 12))
            mixer1.set_solo_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 13))
            mixer2 = NotifyingMixerComponent(8)
            mixer2.set_bank_buttons(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 15),
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 14))
            mixer2.master_strip().set_volume_control(
                SliderElement(MIDI_CC_TYPE, 15, 41))
            for index in range(8):
                mixer2.channel_strip(index).set_volume_control(
                    SliderElement(MIDI_CC_TYPE, 15, 33 + index))

            device = PageableDeviceComponent()
            self.set_device_component(device)
            ffwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 115)
            rwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 114)
            loop_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 113)
            transport = TransportComponent()
            transport.set_stop_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 116))
            transport.set_play_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 117))
            transport.set_record_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 118))
            session = SessionComponent(0, 0)
            transport_view_modes = TransportViewModeSelector(
                transport, session, ffwd_button, rwd_button, loop_button)
            select_button_modes = SelectButtonModeSelector(
                mixer2,
                tuple([
                    ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 49 + offset)
                    for offset in range(8)
                ]))
            select_button_modes.set_mode_toggle(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 57))
            self._mixer_encoder_modes = EncoderMixerModeSelector(mixer2)
            encoders = []
            for offset in range(8):
                encoders.append(
                    PeekableEncoderElement(
                        MIDI_CC_TYPE, 15, 17 + offset,
                        Live.MidiMap.MapMode.relative_smooth_two_compliment))
                encoders[-1].set_feedback_delay(-1)

            mixer_or_device = MixerOrDeviceModeSelector(
                self._mixer_encoder_modes, device, tuple(encoders),
                tuple([
                    ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 74 + offset)
                    for offset in range(4)
                ]))
            mixer_or_device.set_mode_toggle(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 109))
            mixer_or_device.set_peek_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 78))
            self._track_display = PhysicalDisplayElement(8, 1)
            self._track_display.set_clear_all_message(SYSEX_START + (16, 247))
            self._track_display.set_message_parts(SYSEX_START + (17, 1, 0, 0),
                                                  (247, ))
            self._track_display.segment(0).set_data_source(
                mixer1.selected_strip().track_name_data_source())
            device_display = PhysicalDisplayElement(8, 1)
            device_display.set_message_parts(SYSEX_START + (17, 1, 0, 10),
                                             (247, ))
            parameter_display = PhysicalDisplayElement(16, 1)
            parameter_display.set_message_parts(SYSEX_START + (17, 2, 0, 0),
                                                (247, ))
            select_button_modes.set_mode_display(parameter_display)
            mixer1.set_display(parameter_display)
            mixer2.set_bank_display(parameter_display)
            page_displays = []
            for index in range(4):
                page_displays.append(PhysicalDisplayElement(5, 1))
                page_displays[-1].set_message_parts(
                    SYSEX_START + (17, 4, index, 0), (247, ))

            encoder_display = PhysicalDisplayElement(80, 8)
            encoder_display.set_message_parts(SYSEX_START + (17, 3), (247, ))
            for index in range(8):
                pos_id = tuple()
                if index != 0:
                    pos_id += (0, )
                if index > 3:
                    pos_id += (index % 4, 13)
                else:
                    pos_id += (index % 4, 0)
                encoder_display.segment(index).set_position_identifier(pos_id)

            mixer_or_device.set_displays(encoder_display, parameter_display,
                                         device_display, tuple(page_displays))
            for component in self.components:
                component.set_enabled(False)
示例#5
0
 def _create_transport(self):
     self._transport = TransportComponent(is_enabled=True, name='Transport')
     self._transport.layer = Layer(play_button=self._play_button,
                                   stop_button=self._stop_button,
                                   record_button=self._record_button)
    def _create_transport(self):

        def play_toggle_model_transform(value):
            return False if self._shift_button.is_pressed() else value

        return TransportComponent(name='Transport', is_enabled=False, play_toggle_model_transform=play_toggle_model_transform, layer=Layer(play_button=self._play_button, record_button=self._record_button))
示例#7
0
    def _build_components(self):

        self._buttons = {}
        for identifier in range(5, 53) + range(64, 68):
            # We create the shift button in a special way
            if identifier == OP1_SHIFT_BUTTON:
                continue
            # Encoders present as buttons when values are changed
            button = APCUtils.make_pedal_button(identifier)
            button.add_value_listener(self.debug_button_handler)
            self._buttons[identifier] = button

        # Encoder buttons
        # See notes below for explanation of exclusion of first button
        # for identifier in [OP1_ENCODER_2_BUTTON, OP1_ENCODER_3_BUTTON, OP1_ENCODER_4_BUTTON]:
        # 	button = APCUtils.make_pedal_button(identifier)
        # 	button.add_value_listener(self.debug_button_handler)
        # 	APCUtils.make_pedal_button(identifier] = butto)

        self._notes = {}
        for identifier in range(OP1_MIN_NOTE, OP1_MAX_NOTE + 1):
            note = APCUtils.make_button(CHANNEL, identifier)
            note.add_value_listener(self.debug_note_handler)
            self._notes[identifier] = note

        # Buttons
        self._button_shift = ButtonElement(
            is_momentary=True,
            msg_type=MIDI_CC_TYPE,
            channel=0,
            identifier=OP1_SHIFT_BUTTON,
            # Required for modifier buttons
            resource_type=PrioritizedResource,
            name='ShiftButton',
        )
        # self._button_shift.add_value_listener(self.on_shift_button)

        self._button_mode_synth = self._buttons[OP1_MODE_1_BUTTON]
        self._button_mode_drum = self._buttons[OP1_MODE_2_BUTTON]
        self._button_mode_tape = self._buttons[OP1_MODE_3_BUTTON]
        self._button_mode_mixer = self._buttons[OP1_MODE_4_BUTTON]

        self._button_mode_1 = self._buttons[OP1_T1_BUTTON]
        self._button_mode_2 = self._buttons[OP1_T2_BUTTON]
        self._button_mode_3 = self._buttons[OP1_T3_BUTTON]
        self._button_mode_4 = self._buttons[OP1_T4_BUTTON]

        self._button_down = self._buttons[OP1_ARROW_DOWN_BUTTON]
        self._button_up = self._buttons[OP1_ARROW_UP_BUTTON]
        self._button_left = self._buttons[OP1_LEFT_ARROW]
        self._button_right = self._buttons[OP1_RIGHT_ARROW]

        self._button_metronome = self._buttons[OP1_METRONOME_BUTTON]
        self._button_scissors = self._buttons[OP1_SCISSOR_BUTTON]

        self._button_ss1 = self._buttons[OP1_SS1_BUTTON]
        self._button_ss2 = self._buttons[OP1_SS2_BUTTON]
        self._button_ss3 = self._buttons[OP1_SS3_BUTTON]
        self._button_ss4 = self._buttons[OP1_SS4_BUTTON]
        self._button_ss5 = self._buttons[OP1_SS5_BUTTON]
        self._button_ss6 = self._buttons[OP1_SS6_BUTTON]
        self._button_ss7 = self._buttons[OP1_SS7_BUTTON]
        self._button_ss8 = self._buttons[OP1_SS8_BUTTON]

        self._button_record = self._buttons[OP1_REC_BUTTON]
        self._button_play = self._buttons[OP1_PLAY_BUTTON]
        self._button_stop = self._buttons[OP1_STOP_BUTTON]

        self._button_microphone = self._buttons[OP1_MICROPHONE]
        self._button_com = self._buttons[OP1_COM]
        self._button_sequencer = self._buttons[OP1_SEQUENCER]

        # Encoders
        self._encoder_1 = EncoderElement(MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_1,
                                         ENCODER_MODE)
        self._encoder_2 = EncoderElement(MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_2,
                                         ENCODER_MODE)
        self._encoder_3 = EncoderElement(MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_3,
                                         ENCODER_MODE)
        self._encoder_4 = EncoderElement(MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_4,
                                         ENCODER_MODE)

        self._unshift_encoder_1 = ShiftEnabledControl(self._encoder_1,
                                                      self._button_shift,
                                                      False, self)
        self._unshift_encoder_2 = ShiftEnabledControl(self._encoder_2,
                                                      self._button_shift,
                                                      False, self)
        self._unshift_encoder_3 = ShiftEnabledControl(self._encoder_3,
                                                      self._button_shift,
                                                      False, self)
        self._unshift_encoder_4 = ShiftEnabledControl(self._encoder_4,
                                                      self._button_shift,
                                                      False, self)
        self._shift_encoder_1 = ShiftEnabledControl(self._encoder_1,
                                                    self._button_shift, True,
                                                    self)
        self._shift_encoder_2 = ShiftEnabledControl(self._encoder_2,
                                                    self._button_shift, True,
                                                    self)
        self._shift_encoder_3 = ShiftEnabledControl(self._encoder_3,
                                                    self._button_shift, True,
                                                    self)
        self._shift_encoder_4 = ShiftEnabledControl(self._encoder_4,
                                                    self._button_shift, True,
                                                    self)

        self._encoder_u01_1 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U01_ENCODER_1, ENCODER_MODE)
        self._encoder_u01_2 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U01_ENCODER_2, ENCODER_MODE)
        self._encoder_u01_3 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U01_ENCODER_3, ENCODER_MODE)
        self._encoder_u01_4 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U01_ENCODER_4, ENCODER_MODE)

        self._unshift_encoder_u01_1 = ShiftEnabledControl(
            self._encoder_u01_1, self._button_shift, False, self)
        self._unshift_encoder_u01_2 = ShiftEnabledControl(
            self._encoder_u01_2, self._button_shift, False, self)
        self._unshift_encoder_u01_3 = ShiftEnabledControl(
            self._encoder_u01_3, self._button_shift, False, self)
        self._unshift_encoder_u01_4 = ShiftEnabledControl(
            self._encoder_u01_4, self._button_shift, False, self)
        self._shift_encoder_u01_1 = ShiftEnabledControl(
            self._encoder_u01_1, self._button_shift, True, self)
        self._shift_encoder_u01_2 = ShiftEnabledControl(
            self._encoder_u01_2, self._button_shift, True, self)
        self._shift_encoder_u01_3 = ShiftEnabledControl(
            self._encoder_u01_3, self._button_shift, True, self)
        self._shift_encoder_u01_4 = ShiftEnabledControl(
            self._encoder_u01_4, self._button_shift, True, self)

        self._encoder_u02_1 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U02_ENCODER_1, ENCODER_MODE)
        self._encoder_u02_2 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U02_ENCODER_2, ENCODER_MODE)
        self._encoder_u02_3 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U02_ENCODER_3, ENCODER_MODE)
        self._encoder_u02_4 = EncoderElement(MIDI_CC_TYPE, CHANNEL,
                                             OP1_U02_ENCODER_4, ENCODER_MODE)

        # NOTE: encoder_1_button conflicts with encoder_U03_4
        self._encoder_button_1 = self._buttons[OP1_ENCODER_1_BUTTON]
        self._encoder_button_2 = self._buttons[OP1_ENCODER_2_BUTTON]
        self._encoder_button_3 = self._buttons[OP1_ENCODER_3_BUTTON]
        self._encoder_button_4 = self._buttons[OP1_ENCODER_4_BUTTON]

        self._mixer = MixerComponent(
            num_tracks=NUM_TRACKS,
            num_returns=2,
        )

        # self._mixer.set_select_buttons(
        # 	prev_button=self._button_up,
        # 	next_button=self._button_down,
        # )
        # self.map_mixer_controls_for_current_track()

        def on_down_button(value):
            if value == BUTTON_ON:
                self.set_selected_scene(self.scene_offset + 1)

        def on_up_button(value):
            if value == BUTTON_ON:
                self.set_selected_scene(self.scene_offset - 1)

        self.scene_offset = 0
        self.song().view.add_selected_scene_listener(
            self.selected_scene_changed)
        self._button_right.add_value_listener(on_down_button)
        self._button_left.add_value_listener(on_up_button)

        self._transport = TransportComponent()
        self._transport.set_metronome_button(self._button_metronome)

        #
        # Controls for navigating the bottom detail pane
        #
        self._device_navigation = DetailViewCntrlComponent()

        # Toggle hide/show of bottom detail pane
        self._device_navigation.set_detail_toggle_button(self._button_ss1)

        # Toggle between clip detail and effects detail in bottom detail pane
        self._device_navigation.set_device_clip_toggle_button(self._button_ss2)

        # Nav left/right in the device chain detail view in bottom pane
        self._device_navigation.device_nav_left_button.set_control_element(
            self._button_ss7)
        self._device_navigation.device_nav_right_button.set_control_element(
            self._button_ss8)

        # Clip firing
        self._notes[OP1_F3_NOTE].add_value_listener(partial(
            self.clip_fired, 0))
        self._notes[OP1_G3_NOTE].add_value_listener(partial(
            self.clip_fired, 1))
        self._notes[OP1_A3_NOTE].add_value_listener(partial(
            self.clip_fired, 2))
        self._notes[OP1_B3_NOTE].add_value_listener(partial(
            self.clip_fired, 3))
        self._notes[OP1_C4_NOTE].add_value_listener(partial(
            self.clip_fired, 4))
        self._notes[OP1_D4_NOTE].add_value_listener(partial(
            self.clip_fired, 5))
        self._notes[OP1_E4_NOTE].add_value_listener(partial(
            self.clip_fired, 6))
        self._notes[OP1_F4_NOTE].add_value_listener(partial(
            self.clip_fired, 7))

        self._button_scissors.add_value_listener(self.selected_clip_deleted)
示例#8
0
    def _setup_components(self):

        # Session

        self._session = SessionComponent(8, len(self._scene_launch_buttons))
        self._session.name = 'Session_Control'
        self._session.selected_scene().name = 'Selected_Scene'
        self._session.selected_scene().set_launch_button(
            self._scene_launch_button)
        self._session.set_stop_all_clips_button(self._scene_stop_button)

        for index in range(8):
            clip_slot = self._session.selected_scene().clip_slot(index)
            clip_slot.set_launch_button(self._clip_launch_buttons[index])
            clip_slot.name = 'Selected_Clip_Slot_' + str(index)

        self._session.set_stop_track_clip_buttons(
            tuple(self._clip_stop_buttons))

        # Undo

        self._do_undo.subject = self._clip_undo_button

        # Transport

        transport = TransportComponent()
        transport.name = 'Transport'
        transport.set_stop_button(self._stop_button)
        transport.set_play_button(self._play_button)
        transport.set_record_button(self._rec_button)
        transport.set_loop_button(self._loop_button)

        self._transport_view_modes = TransportViewModeSelector(
            transport, self._session, self._ffwd_button, self._rwd_button)
        self._transport_view_modes.name = 'Transport_View_Modes'

        session_recording = SessionRecordingComponent(
            ClipCreator(),
            ViewControlComponent(),
            name='Session_Recording',
            is_enabled=False,
            layer=Layer(record_button=self._overdub_button))

        # Device

        # device = DeviceComponent()
        # device.name = 'Device_Component'
        # self.set_device_component(device)
        # device.set_parameter_controls(self._encoders)

        # Navigation

        self._session_navigation = SessionNavigationComponent(
            name='Session_Navigation')
        self._session_navigation.set_next_track_button(self._next_track_button)
        self._session_navigation.set_prev_track_button(self._prev_track_button)

        # Playing
        # self._session.set_scene_launch_buttons(tuple(self._scene_launch_buttons))
        for index in range(len(self._scene_launch_buttons)):
            scene = self._session.scene(index)
            scene.set_launch_button(self._scene_launch_buttons[index])
示例#9
0
 def __init__(self, c_instance):
     ControlSurface.__init__(self, c_instance)
     transport = TransportComponent() #Instantiate a Transport Component
     transport.set_play_button(ButtonElement(True, 0, 0, 61)) #ButtonElement(is_momentary, msg_type, channel, identifier)
     transport.set_stop_button(ButtonElement(True, 0, 0, 63))
     transport.set_record_button(ButtonElement(True, 0, 0, 66))
示例#10
0
    def _init_transport_component(self, transport_controls, global_channel,
                                  macro_map_mode):
        is_momentary = True
        if transport_controls:
            transport = TransportComponent()
            transport.name = 'Transport'
            #THIS IS NEW STUFF
            #if 'TEMPO' in transport_control.keys() and transport_controls['TEMPO'] in range(128):
            tempo_slider = EncoderElement(MIDI_CC_TYPE, global_channel, 1,
                                          macro_map_mode)
            tempo_slider.name = 'Tempo_Slider'
            transport.set_tempo_control(tempo_slider)
            #END NEW STUFF
            if 'STOP' in transport_controls.keys(
            ) and transport_controls['STOP'] in range(128):
                stop_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                            global_channel,
                                            transport_controls['STOP'])
                stop_button.name = 'Stop_Button'
                transport.set_stop_button(stop_button)

            if 'PLAY' in transport_controls.keys(
            ) and transport_controls['PLAY'] in range(128):
                play_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                            global_channel,
                                            transport_controls['PLAY'])
                play_button.name = 'Play_Button'
                transport.set_play_button(play_button)

            if 'REC' in transport_controls.keys(
            ) and transport_controls['REC'] in range(128):
                rec_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                           global_channel,
                                           transport_controls['REC'])
                rec_button.name = 'Record_Button'
                transport.set_record_button(rec_button)

            if 'LOOP' in transport_controls.keys(
            ) and transport_controls['LOOP'] in range(128):
                loop_button = ButtonElement(is_momentary, MIDI_CC_TYPE,
                                            global_channel,
                                            transport_controls['LOOP'])
                loop_button.name = 'Loop_Button'
                transport.set_loop_button(loop_button)

            ffwd_button = None
            rwd_button = None
            momentary_seek = 'NORELEASE' not in transport_controls.keys()
            if 'FFWD' in transport_controls.keys(
            ) and transport_controls['FFWD'] in range(128):
                ffwd_button = ButtonElement(momentary_seek, MIDI_CC_TYPE,
                                            global_channel,
                                            transport_controls['FFWD'])
                ffwd_button.name = 'FFwd_Button'

            if 'RWD' in transport_controls.keys(
            ) and transport_controls['RWD'] in range(128):
                rwd_button = ButtonElement(momentary_seek, MIDI_CC_TYPE,
                                           global_channel,
                                           transport_controls['RWD'])
                rwd_button.name = 'Rwd_Button'

            transport.set_seek_buttons(ffwd_button, rwd_button)
    def __init__(self, c_instance):
        ControlSurface.__init__(self, c_instance)
        with self.component_guard():
            self.c_instance = c_instance

            self.retries_count = 0
            self.device_connected = False

            self.clip_color_callbacks = {}
            self.slot_callbacks = {}

            self.text_start_sequence = (0xf0, 0x0, 0x20, 0x76, 0x00, 0x03)
            self.text_end_sequence = (0xf7, )
            self.enable_sequence = (0xf0, 0x00, 0x20, 0x76, 0x00, 0x01, 0x02,
                                    0xf7)
            self.disable_sequence = (0xf0, 0x00, 0x20, 0x76, 0x00, 0x01, 0x00,
                                     0xf7)

            self.id_sequence = (0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7)

            self.text_color_start_sequence = (0xf0, 0x0, 0x20, 0x76, 0x00,
                                              0x04)

            #			self.log('INITIALIZING')

            self.app = Live.Application.get_application()

            #maj = self.app.get_major_version()
            #min = self.app.get_minor_version()
            #bug = self.app.get_bugfix_version()

            #self.show_message(str(maj) + "." + str(min) + "." + str(bug))

            self.show_message("Version: " + VERSION)

            # reseting text
            self.write_text(' ')

            # reset display clips
            self.reset_display_clips()

            # getting browser visible state
            self.session_browser_visible = self.app.view.is_view_visible(
                "Browser")

            # getting browser visible state
            self.arrange_browser_visible = self.app.view.is_view_visible(
                "Browser")

            # getting session view visible state
            self.session_visible = self.app.view.is_view_visible("Session")

            # getting arrange view visible state
            self.arrange_visible = self.app.view.is_view_visible("Arranger")

            # getting detail view visible state
            self.detail_visible = self.app.view.is_view_visible("Detail")

            # getting back to arranger state
            self.back_to_arranger_state = self.song().back_to_arranger

            # initializing channel strip to null
            self._channel_strip = None

            # initializing mixer component
            self._mixer = MixerComponent(NUM_TRACKS, 2)

            # initializing session component
            self._session = SessionComponent(NUM_TRACKS, NUM_ROWS)
            self._session.add_offset_listener(self.session_offset_changed)
            self.set_highlighting_session_component(self._session)
            self._suppress_session_highlight = False

            # initializing transport component
            self._transport = TransportComponent()

            # configuring operation mode selector buttons
            self._operation_mode_buttons = ButtonElement(
                True, MIDI_CC_TYPE, CHANNEL, OP1_MODE_1_BUTTON), ButtonElement(
                    True, MIDI_CC_TYPE,
                    CHANNEL, OP1_MODE_2_BUTTON), ButtonElement(
                        True, MIDI_CC_TYPE, CHANNEL,
                        OP1_MODE_3_BUTTON), ButtonElement(
                            True, MIDI_CC_TYPE, CHANNEL, OP1_MODE_4_BUTTON),

            # initializing operation mode selector
            self._operation_mode_selector = OP1ModeSelectorComponent(
                self, self._transport, self._mixer, self._session)

            # setting operation mode selector buttons
            self._operation_mode_selector.set_mode_buttons(
                self._operation_mode_buttons)

            # adding value listener for operation mode index
            self._operation_mode_selector.add_mode_index_listener(
                self.mode_index_changed)

            # setting global transport assignments
            self._transport.set_record_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_REC_BUTTON))
            self._transport.set_stop_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_STOP_BUTTON))
            self._transport.set_metronome_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                              OP1_METRONOME_BUTTON))
            self._transport.set_tap_tempo_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_HELP_BUTTON))
            #			self._transport.set_punch_buttons(ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_SS1_BUTTON), ButtonElement(True,MIDI_CC_TYPE, CHANNEL, OP1_SS2_BUTTON))
            self._transport.set_loop_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_SS3_BUTTON))
            self._transport.set_overdub_button(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_SS4_BUTTON))

            self._play_button = ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                                              OP1_PLAY_BUTTON)
            #                        self._transport.set_play_button(self._play_button)
            self.shift_pressed = False
            self._play_button.add_value_listener(self.play_button_callback)

            # setting global session assignments
            self._session.set_scene_bank_buttons(
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_COM),
                ButtonElement(True, MIDI_CC_TYPE, CHANNEL, OP1_MICRO))

            # encoder for transport control - leave it empty for now
            self._encoder_1 = EncoderElement(
                MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_1,
                Live.MidiMap.MapMode.relative_two_compliment)
            self._encoder_2 = EncoderElement(
                MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_2,
                Live.MidiMap.MapMode.relative_two_compliment)
            self._encoder_3 = EncoderElement(
                MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_3,
                Live.MidiMap.MapMode.relative_two_compliment)
            self._encoder_4 = EncoderElement(
                MIDI_CC_TYPE, CHANNEL, OP1_ENCODER_4,
                Live.MidiMap.MapMode.relative_two_compliment)
            # setting misc listeners

            self._encoder_1_push = ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                                                 OP1_ENCODER_1_PUSH)
            self._encoder_2_push = ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                                                 OP1_ENCODER_2_PUSH)
            self._encoder_3_push = ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                                                 OP1_ENCODER_3_PUSH)
            self._encoder_4_push = ButtonElement(True, MIDI_CC_TYPE, CHANNEL,
                                                 OP1_ENCODER_4_PUSH)

            self._encoder_3_push.add_value_listener(self.e3_push_callback)
            self._e3_pressed = False

            self.mainview_toggle_button = ButtonElement(
                False, MIDI_CC_TYPE, CHANNEL, OP1_ARROW_DOWN_BUTTON)
            self.mainview_toggle_button.add_value_listener(
                self.mainview_toggle_button_callback)

            self.detailview_toggle_button = ButtonElement(
                False, MIDI_CC_TYPE, CHANNEL, OP1_SCISSOR_BUTTON)
            self.detailview_toggle_button.add_value_listener(
                self.detailview_toggle_button_callback)

            self.clear_track_button = ButtonElement(True, MIDI_CC_TYPE,
                                                    CHANNEL, OP1_SS8_BUTTON)
            self.clear_track_button.add_value_listener(
                self.clear_track_button_callback)

            self.back_to_arranger_button = ButtonElement(
                True, MIDI_CC_TYPE, CHANNEL, OP1_SEQ_BUTTON)
            self.back_to_arranger_button.add_value_listener(
                self.back_to_arranger_button_callback)

            # adding value listener for selected track change
            self.song().view.add_selected_track_listener(
                self.selected_track_changed)

            # adding value listener for selected scene change
            self.song().view.add_selected_scene_listener(
                self.selected_scene_changed)

            # setting assignments for currently selected track
            self.selected_track_changed()

            # setting assignments for currently selected scene
            self.selected_scene_changed()
示例#12
0
    def __init__(self, *a, **k):
        super(MPK261MX, self).__init__(*a, **k)
        self.show_message(
            "-----------------------= MPK261MX LOADING - maxcloutier13 says hi =----------------------------------------------------------"
        )
        self.log_message(
            "-----------------------= MPK261MX LOADING - maxcloutier13 says hi =----------------------------------------------------------"
        )
        with self.component_guard():
            midimap = MidiMap()
            #Super crude manual init for the custom buttons and faders
            #Bank A - Channel 1 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            self._Encoder0 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                22,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder0')
            self._Encoder1 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                23,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder1')
            self._Encoder2 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                24,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder2')
            self._Encoder3 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                25,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder3')
            self._Encoder4 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                26,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder4')
            self._Encoder5 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                27,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder5')
            self._Encoder6 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                28,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder6')
            self._Encoder7 = EncoderElement(
                MIDI_CC_TYPE,
                1,
                29,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder7')
            self._ArmButton0 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             32,
                                             name='ArmButton0')
            self._ArmButton1 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             33,
                                             name='ArmButton1')
            self._ArmButton2 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             34,
                                             name='ArmButton2')
            self._ArmButton3 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             35,
                                             name='ArmButton3')
            self._ArmButton4 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             36,
                                             name='ArmButton4')
            self._ArmButton5 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             37,
                                             name='ArmButton5')
            self._ArmButton6 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             38,
                                             name='ArmButton6')
            self._ArmButton7 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             39,
                                             name='ArmButton7')
            self._VolumeSlider0 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                12,
                                                name='VolumeSlider0')
            self._VolumeSlider1 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                13,
                                                name='VolumeSlider1')
            self._VolumeSlider2 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                14,
                                                name='VolumeSlider2')
            self._VolumeSlider3 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                15,
                                                name='VolumeSlider3')
            self._VolumeSlider4 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                16,
                                                name='VolumeSlider4')
            self._VolumeSlider5 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                17,
                                                name='VolumeSlider5')
            self._VolumeSlider6 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                18,
                                                name='VolumeSlider6')
            self._VolumeSlider7 = SliderElement(MIDI_CC_TYPE,
                                                0,
                                                19,
                                                name='VolumeSlider7')
            #Bank B - Channel 2 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            self._Encoder8 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                22,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder8')
            self._Encoder9 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                23,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder9')
            self._Encoder10 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                24,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder10')
            self._Encoder11 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                25,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder11')
            self._Encoder12 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                26,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder12')
            self._Encoder13 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                27,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder13')
            self._Encoder14 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                28,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder14')
            self._Encoder15 = EncoderElement(
                MIDI_CC_TYPE,
                2,
                29,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder15')
            self._ArmButton8 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             1,
                                             32,
                                             name='ArmButton8')
            self._ArmButton9 = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             1,
                                             33,
                                             name='ArmButton9')
            self._ArmButton10 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              34,
                                              name='ArmButton10')
            self._ArmButton11 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              35,
                                              name='ArmButton11')
            self._ArmButton12 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              36,
                                              name='ArmButton12')
            self._ArmButton13 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              37,
                                              name='ArmButton13')
            self._ArmButton14 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              38,
                                              name='ArmButton14')
            self._ArmButton15 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              1,
                                              39,
                                              name='ArmButton15')
            self._VolumeSlider8 = SliderElement(MIDI_CC_TYPE,
                                                1,
                                                12,
                                                name='VolumeSlider8')
            self._VolumeSlider9 = SliderElement(MIDI_CC_TYPE,
                                                1,
                                                13,
                                                name='VolumeSlider9')
            self._VolumeSlider10 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 14,
                                                 name='VolumeSlider10')
            self._VolumeSlider11 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 15,
                                                 name='VolumeSlider11')
            self._VolumeSlider12 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 16,
                                                 name='VolumeSlider12')
            self._VolumeSlider13 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 17,
                                                 name='VolumeSlider13')
            self._VolumeSlider14 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 18,
                                                 name='VolumeSlider14')
            self._VolumeSlider15 = SliderElement(MIDI_CC_TYPE,
                                                 1,
                                                 19,
                                                 name='VolumeSlider15')
            #Bank C - Channel 3 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            self._Encoder16 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                22,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder16')
            self._Encoder17 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                23,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder17')
            self._Encoder18 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                24,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder18')
            self._Encoder19 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                25,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder19')
            self._Encoder20 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                26,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder20')
            self._Encoder21 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                27,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder21')
            self._Encoder22 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                28,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder22')
            self._Encoder23 = EncoderElement(
                MIDI_CC_TYPE,
                3,
                29,
                Live.MidiMap.MapMode.relative_two_compliment,
                name='Encoder23')
            self._ArmButton16 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              32,
                                              name='ArmButton16')
            self._ArmButton17 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              33,
                                              name='ArmButton17')
            self._ArmButton18 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              34,
                                              name='ArmButton18')
            self._ArmButton19 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              35,
                                              name='ArmButton19')
            self._ArmButton20 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              36,
                                              name='ArmButton20')
            self._ArmButton21 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              37,
                                              name='ArmButton21')
            self._ArmButton22 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              38,
                                              name='ArmButton22')
            self._ArmButton23 = ButtonElement(False,
                                              MIDI_CC_TYPE,
                                              2,
                                              39,
                                              name='ArmButton23')
            self._VolumeSlider16 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 12,
                                                 name='VolumeSlider16')
            self._VolumeSlider17 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 13,
                                                 name='VolumeSlider17')
            self._VolumeSlider18 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 14,
                                                 name='VolumeSlider18')
            self._VolumeSlider19 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 15,
                                                 name='VolumeSlider19')
            self._VolumeSlider20 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 16,
                                                 name='VolumeSlider20')
            self._VolumeSlider21 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 17,
                                                 name='VolumeSlider21')
            self._VolumeSlider22 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 18,
                                                 name='VolumeSlider22')
            self._VolumeSlider23 = SliderElement(MIDI_CC_TYPE,
                                                 2,
                                                 19,
                                                 name='VolumeSlider23')
            #Drum rack -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            drum_rack = DrumRackComponent(
                name='Drum_Rack',
                is_enabled=False,
                layer=Layer(pads=midimap['Drum_Pads']))
            drum_rack.set_enabled(True)
            #Transport -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            transport = TransportComponent(name='Transport',
                                           is_enabled=False,
                                           layer=Layer(
                                               play_button=midimap['Play'],
                                               record_button=midimap['Record'],
                                               stop_button=midimap['Stop'],
                                               loop_button=midimap['Loop']))
            #, seek_forward_button=midimap['Forward'], seek_backward_button=midimap['Backward']
            transport.set_enabled(True)
            #Make the Back/Fwd button just normal mapable CC senders
            self._BackButton = ButtonElement(False,
                                             MIDI_CC_TYPE,
                                             0,
                                             116,
                                             name='BackButton')
            self._FwdButton = ButtonElement(False,
                                            MIDI_CC_TYPE,
                                            0,
                                            115,
                                            name='FwdButton')
            #Device -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            self._device = DeviceComponent(
                name='Device',
                is_enabled=False,
                layer=Layer(parameter_controls=midimap['Encoders']),
                device_selection_follows_track_selection=True)
            self._device.set_enabled(True)
            self.set_device_component(self._device)
            #Mixer -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            mixer_size = 24
            self._mixer = MixerComponent(mixer_size,
                                         name='Mixer',
                                         is_enabled=False)
            #Super crude and repetitive mapping because after all this shit I'm not spending time learning how to loop this crap hehe
            #Bank A
            self._mixer.channel_strip(0).layer = Layer(
                volume_control=self._VolumeSlider0,
                arm_button=self._ArmButton0,
                pan_control=self._Encoder0)
            self._mixer.channel_strip(1).layer = Layer(
                volume_control=self._VolumeSlider1,
                arm_button=self._ArmButton1,
                pan_control=self._Encoder1)
            self._mixer.channel_strip(2).layer = Layer(
                volume_control=self._VolumeSlider2,
                arm_button=self._ArmButton2,
                pan_control=self._Encoder2)
            self._mixer.channel_strip(3).layer = Layer(
                volume_control=self._VolumeSlider3,
                arm_button=self._ArmButton3,
                pan_control=self._Encoder3)
            self._mixer.channel_strip(4).layer = Layer(
                volume_control=self._VolumeSlider4,
                arm_button=self._ArmButton4,
                pan_control=self._Encoder4)
            self._mixer.channel_strip(5).layer = Layer(
                volume_control=self._VolumeSlider5,
                arm_button=self._ArmButton5,
                pan_control=self._Encoder5)
            self._mixer.channel_strip(6).layer = Layer(
                volume_control=self._VolumeSlider6,
                arm_button=self._ArmButton6,
                pan_control=self._Encoder6)
            self._mixer.channel_strip(7).layer = Layer(
                volume_control=self._VolumeSlider7,
                arm_button=self._ArmButton7,
                pan_control=self._Encoder7)
            #Bank B
            self._mixer.channel_strip(8).layer = Layer(
                volume_control=self._VolumeSlider8,
                arm_button=self._ArmButton8,
                pan_control=self._Encoder8)
            self._mixer.channel_strip(9).layer = Layer(
                volume_control=self._VolumeSlider9,
                arm_button=self._ArmButton9,
                pan_control=self._Encoder9)
            self._mixer.channel_strip(10).layer = Layer(
                volume_control=self._VolumeSlider10,
                arm_button=self._ArmButton10,
                pan_control=self._Encoder10)
            self._mixer.channel_strip(11).layer = Layer(
                volume_control=self._VolumeSlider11,
                arm_button=self._ArmButton11,
                pan_control=self._Encoder11)
            self._mixer.channel_strip(12).layer = Layer(
                volume_control=self._VolumeSlider12,
                arm_button=self._ArmButton12,
                pan_control=self._Encoder12)
            self._mixer.channel_strip(13).layer = Layer(
                volume_control=self._VolumeSlider13,
                arm_button=self._ArmButton13,
                pan_control=self._Encoder13)
            self._mixer.channel_strip(14).layer = Layer(
                volume_control=self._VolumeSlider14,
                arm_button=self._ArmButton14,
                pan_control=self._Encoder14)
            self._mixer.channel_strip(15).layer = Layer(
                volume_control=self._VolumeSlider15,
                arm_button=self._ArmButton15,
                pan_control=self._Encoder15)
            #Bank C
            self._mixer.channel_strip(16).layer = Layer(
                volume_control=self._VolumeSlider16,
                arm_button=self._ArmButton16,
                pan_control=self._Encoder16)
            self._mixer.channel_strip(17).layer = Layer(
                volume_control=self._VolumeSlider17,
                arm_button=self._ArmButton17,
                pan_control=self._Encoder17)
            self._mixer.channel_strip(18).layer = Layer(
                volume_control=self._VolumeSlider18,
                arm_button=self._ArmButton18,
                pan_control=self._Encoder18)
            self._mixer.channel_strip(19).layer = Layer(
                volume_control=self._VolumeSlider19,
                arm_button=self._ArmButton19,
                pan_control=self._Encoder19)
            self._mixer.channel_strip(20).layer = Layer(
                volume_control=self._VolumeSlider20,
                arm_button=self._ArmButton20,
                pan_control=self._Encoder20)
            self._mixer.channel_strip(21).layer = Layer(
                volume_control=self._VolumeSlider21,
                arm_button=self._ArmButton21,
                pan_control=self._Encoder21)
            self._mixer.channel_strip(22).layer = Layer(
                volume_control=self._VolumeSlider22,
                arm_button=self._ArmButton22,
                pan_control=self._Encoder22)
            self._mixer.channel_strip(23).layer = Layer(
                volume_control=self._VolumeSlider23,
                arm_button=self._ArmButton23,
                pan_control=self._Encoder23)
            self._mixer.set_enabled(True)


#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
示例#13
0
    def _mode1(self):
        self.show_message("_mode1 is active")
        # mixer
        global mixer
        num_tracks = 32
        num_returns = 7
        self.mixer = MixerComponent(num_tracks, num_returns)
        self.mixer.set_track_offset(0)
        self.song().view.selected_track = self.mixer.channel_strip(0)._track
        # sends
        send0_controls = (
            SliderElement(MIDI_CC_TYPE, 0, 32),
            SliderElement(MIDI_CC_TYPE, 0, 36),
            SliderElement(MIDI_CC_TYPE, 0, 40),
            None,
            None,
            None,
            None,
            None,
        )
        self.mixer.channel_strip(0).set_send_controls(tuple(send0_controls))
        self.mixer.channel_strip(0).set_volume_control(
            SliderElement(MIDI_CC_TYPE, 0, 44))
        send1_controls = (
            SliderElement(MIDI_CC_TYPE, 0, 33),
            SliderElement(MIDI_CC_TYPE, 0, 37),
            SliderElement(MIDI_CC_TYPE, 0, 41),
            None,
            None,
            None,
            None,
            None,
        )
        self.mixer.channel_strip(1).set_send_controls(tuple(send1_controls))
        self.mixer.channel_strip(1).set_volume_control(
            SliderElement(MIDI_CC_TYPE, 0, 45))

        send2_controls = (
            SliderElement(MIDI_CC_TYPE, 0, 34),
            SliderElement(MIDI_CC_TYPE, 0, 38),
            SliderElement(MIDI_CC_TYPE, 0, 42),
            None,
            None,
            None,
            None,
            None,
        )
        self.mixer.channel_strip(2).set_send_controls(tuple(send2_controls))
        self.mixer.channel_strip(2).set_volume_control(
            SliderElement(MIDI_CC_TYPE, 0, 46))
        send3_controls = (
            SliderElement(MIDI_CC_TYPE, 0, 35),
            SliderElement(MIDI_CC_TYPE, 0, 39),
            SliderElement(MIDI_CC_TYPE, 0, 43),
            None,
            None,
            None,
            None,
            None,
        )
        self.mixer.channel_strip(3).set_send_controls(tuple(send3_controls))
        self.mixer.channel_strip(3).set_volume_control(
            SliderElement(MIDI_CC_TYPE, 0, 47))
        # session
        global _session
        num_tracks = 4
        num_scenes = 3
        session_buttons = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
        self._pads = [
            ButtonElement(1, MIDI_CC_TYPE, 1, session_buttons[index])
            for index in range(num_tracks * num_scenes)
        ]
        self._grid = ButtonMatrixElement(rows=[
            self._pads[(index * num_tracks):(index * num_tracks) + num_tracks]
            for index in range(num_scenes)
        ])
        self._session = SessionComponent(num_tracks, num_scenes)
        self._session.set_clip_launch_buttons(self._grid)
        self.set_highlighting_session_component(self._session)
        # session track stop
        stop_track_buttons = [12, 13, 14, 15]
        self._track_stop_buttons = [
            ButtonElement(1, MIDI_CC_TYPE, 1, stop_track_buttons[index])
            for index in range(num_tracks)
        ]
        self._session.set_stop_track_clip_buttons(
            tuple(self._track_stop_buttons))
        # session navigation
        self.session_left = ButtonElement(1, MIDI_CC_TYPE, 3, 8)
        self._session.set_page_left_button(self.session_left)
        self.session_left.add_value_listener(self._reload_active_devices,
                                             identify_sender=False)
        self.session_right = ButtonElement(1, MIDI_CC_TYPE, 3, 11)
        self._session.set_page_right_button(self.session_right)
        self.session_right.add_value_listener(self._reload_active_devices,
                                              identify_sender=False)
        self.session_up = ButtonElement(1, MIDI_CC_TYPE, 3, 10)
        self._session.set_page_up_button(self.session_up)
        self.session_up.add_value_listener(self._reload_active_devices,
                                           identify_sender=False)
        self.session_down = ButtonElement(1, MIDI_CC_TYPE, 3, 13)
        self._session.set_page_down_button(self.session_down)
        self.session_down.add_value_listener(self._reload_active_devices,
                                             identify_sender=False)
        self._session._link()
        self._session.set_mixer(self.mixer)
        #self._session.set_mixer(self.mixer)
        self._mode1_devices()
        self.add_device_listeners()
        # button: next device
        self.next_device = ButtonElement(0, MIDI_CC_TYPE, 1, 25)
        self.next_device.add_value_listener(self._next_device_value,
                                            identify_sender=False)
        # button: prev device
        self.previous_device = ButtonElement(1, MIDI_CC_TYPE, 1, 24)
        self.previous_device.add_value_listener(self._prev_device_value,
                                                identify_sender=False)
        # transport
        global transport
        self.transport = TransportComponent()
        self.transport.name = 'Transport'
        loop_button = ButtonElement(1, MIDI_CC_TYPE, 1, 50)
        loop_button.name = 'loop_button'
        self.transport.set_loop_button(loop_button)
        stop_button = ButtonElement(1, MIDI_CC_TYPE, 1, 49)
        stop_button.name = 'stop_button'
        self.transport.set_stop_button(stop_button)
        play_button = ButtonElement(1, MIDI_CC_TYPE, 1, 48)
        play_button.name = 'play_button'
        self.transport.set_play_button(play_button)
        # button: track navigation right
        self.track_navigation_right = ButtonElement(1, MIDI_CC_TYPE, 3, 17)
        self.track_navigation_right.add_value_listener(
            self._track_navigation_right_track_nav, identify_sender=False)
        # button: track navigation left
        self.track_navigation_left = ButtonElement(1, MIDI_CC_TYPE, 3, 14)
        self.track_navigation_left.add_value_listener(
            self._track_navigation_left_track_nav, identify_sender=False)
示例#14
0
 def _setup_transport_control(self):
     self._transport = TransportComponent()
     self._transport.name = 'Transport'
示例#15
0
 def _setup_transport_control(self):
     self._transport_control = TransportComponent(name=b'Transport')
     self._transport_control.set_enabled(True)
 def _setup_transport(self):
     is_momentary = True
     transport = TransportComponent()
     studiotransport = MaschineTransport()
     playButton = StateButton(is_momentary, MIDI_CC_TYPE, 0, 108)
     stopButton = StateButton(not is_momentary, MIDI_CC_TYPE, 0, 110)
     recordButton = StateButton(is_momentary, MIDI_CC_TYPE, 0, 109)
     overdubButton = StateButton(is_momentary, MIDI_CC_TYPE, 0, 107)
     metrononmeButton = StateButton(is_momentary, MIDI_CC_TYPE, 0, 104)
     eventRecButton = StateButton(is_momentary, MIDI_CC_TYPE, 0, 98)
     playButton.name = 'Play'
     stopButton.name = 'Stop'
     recordButton.name = 'Record'
     overdubButton.name = 'Overdub'
     metrononmeButton.name = 'Metronome'
     transport.set_play_button(playButton)
     transport.set_stop_button(stopButton)
     transport.set_record_button(recordButton)
     transport.set_overdub_button(overdubButton)
     transport.set_metronome_button(metrononmeButton)
     studiotransport.set_session_auto_button(eventRecButton)
     studiotransport.set_arrangement_overdub_button(
         StateButton(is_momentary, MIDI_CC_TYPE, 0, 106))
     studiotransport.set_back_arrange_button(
         StateButton(is_momentary, MIDI_CC_TYPE, 0, 105))
     transport.set_nudge_buttons(
         StateButton(is_momentary, MIDI_CC_TYPE, 1, 51),
         StateButton(is_momentary, MIDI_CC_TYPE, 1, 50))
     punchinbutton = ToggleButton(MIDI_CC_TYPE, 1, 52)
     punchoutbutton = ToggleButton(MIDI_CC_TYPE, 1, 53)
     punchinbutton.name = 'Punch In'
     punchoutbutton.name = 'Punch Out'
     transport.set_punch_buttons(punchinbutton, punchoutbutton)
     transport.set_loop_button(
         StateButton(is_momentary, MIDI_CC_TYPE, 1, 54))
     self.song_follow_button = ButtonElement(True, MIDI_CC_TYPE, 2, 98)
     self._do_song_follow.subject = self.song_follow_button
     self._song_follow_changed.subject = self.song().view
     self._song_follow_changed()
     self.prehear_knob = SliderElement(MIDI_CC_TYPE, 0, 41)
     self.prehear_knob.connect_to(
         self.song().master_track.mixer_device.cue_volume)
     self.transp_ff_button = ButtonElement(True, MIDI_CC_TYPE, 1, 59)
     self.transp_rw_button = ButtonElement(True, MIDI_CC_TYPE, 1, 58)
     transport.set_seek_buttons(self.transp_ff_button,
                                self.transp_rw_button)
     self.xfadeKnob = SliderElement(MIDI_CC_TYPE, 1, 105)
     self.xfadeKnob.connect_to(
         self.song().master_track.mixer_device.crossfader)
     self.master_knob = SliderElement(MIDI_CC_TYPE, 0, 99)
     self.master_knob.connect_to(
         self.song().master_track.mixer_device.volume)
     self.tap_button = StateButton(is_momentary, MIDI_CC_TYPE, 0, 88)
     self._do_tap_tempo.subject = self.tap_button
     self.cue_add_delete_button = StateButton(is_momentary, MIDI_CC_TYPE, 1,
                                              55)
     self.cue_prev_button = StateButton(is_momentary, MIDI_CC_TYPE, 1, 56)
     self.cue_next_button = StateButton(is_momentary, MIDI_CC_TYPE, 1, 57)
     self._do_toggle_cue.subject = self.cue_add_delete_button
     self._do_toggle_prev_cue.subject = self.cue_prev_button
     self._do_toggle_next_cue.subject = self.cue_next_button
示例#17
0
 def _create_transport(self):
     self._transport = TransportComponent(name='Transport', is_enabled=False, layer=Layer(stop_button=self._stop_button, play_button=self._play_button))
     self._transport.set_enabled(True)
 def _create_transport(self):
     self._transport = TransportComponent(name='Transport')
示例#19
0
文件: Axiom_OJI.py 项目: cybass/m4m7
    def __init__(self, *a, **k):
        #super(Axiom_OJI, self).__init__(*a, **k)
        ControlSurface.__init__(self, *a, **k)
        with self.component_guard():
            is_momentary = True
            #self.set_pad_translations(PAD_TRANSLATIONS)
            self._suggested_input_port = u'HyperControl'
            self._suggested_output_port = u'HyperControl'
            self._display_on_button = ButtonElement(not is_momentary,
                                                    MIDI_CC_TYPE, 15, 79)
            self._waiting_for_first_response = True
            self._mixer1 = DisplayingMixerComponent(0)
            self._mixer1.set_select_buttons(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 111),
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 110))
            self._mixer1.set_mute_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 12))
            self._mixer1.set_solo_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 13))
            self._mixer2 = NotifyingMixerComponent(8)
            self._mixer2.set_bank_buttons(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 15),
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 14))
            self._mixer2.master_strip().set_volume_control(
                SliderElement(MIDI_CC_TYPE, 15, 41))
            for index in range(8):
                self._mixer2.channel_strip(index).set_volume_control(
                    SliderElement(MIDI_CC_TYPE, 15, 33 + index))

            self._device = PageableDeviceComponent(
                device_selection_follows_track_selection=True)
            self.set_device_component(self._device)
            self._ffwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15,
                                              115)
            self._rwd_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15,
                                             114)
            self._loop_button = ButtonElement(is_momentary, MIDI_CC_TYPE, 15,
                                              113)
            self._transport = TransportComponent()
            self._transport.set_stop_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 116))
            self._transport.set_play_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 117))
            self._transport.set_record_button(
                ButtonElement(is_momentary,
                              MIDI_CC_TYPE,
                              15,
                              118,
                              name='RecordButton'))
            self._session = SessionComponent(0, 0)
            self._transport_view_modes = TransportViewModeSelector(
                self._transport, self._session, self._ffwd_button,
                self._rwd_button, self._loop_button)
            self._select_button_modes = SelectButtonModeSelector(
                self._mixer2,
                tuple([
                    ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 49 + offset)
                    for offset in range(8)
                ]))
            self._select_button_modes.set_mode_toggle(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 57))
            self._mixer_encoder_modes = EncoderMixerModeSelector(self._mixer2)
            self._encoders = []
            for offset in range(8):
                self._encoders.append(
                    PeekableEncoderElement(
                        MIDI_CC_TYPE, 15, 17 + offset,
                        Live.MidiMap.MapMode.relative_smooth_two_compliment))
                self._encoders[-1].set_feedback_delay(-1)

            self._mixer_or_device = MixerOrDeviceModeSelector(
                self._mixer_encoder_modes, self._device, tuple(self._encoders),
                tuple([
                    ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 74 + offset)
                    for offset in range(4)
                ]))
            self._mixer_or_device.set_mode_toggle(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 109))
            self._mixer_or_device.set_peek_button(
                ButtonElement(is_momentary, MIDI_CC_TYPE, 15, 78))
            self._track_display = PhysicalDisplayElement(8, 1)
            self._track_display.set_clear_all_message(SYSEX_START + (16, 247))
            self._track_display.set_message_parts(SYSEX_START + (17, 1, 0, 0),
                                                  (247, ))
            #self._track_display.segment(0).set_data_source(mixer1.selected_strip().track_name_data_source())
            self._device_display = PhysicalDisplayElement(8, 1)
            self._device_display.set_message_parts(
                SYSEX_START + (17, 1, 0, 10), (247, ))
            self._parameter_display = PhysicalDisplayElement(16, 1)
            self._parameter_display.set_message_parts(
                SYSEX_START + (17, 2, 0, 0), (247, ))
            #self._select_button_modes.set_mode_display(parameter_display)
            #self._mixer1.set_display(parameter_display)
            #self._mixer2.set_bank_display(parameter_display)
            self._page_displays = []
            for index in range(4):
                self._page_displays.append(PhysicalDisplayElement(5, 1))
                self._page_displays[-1].set_message_parts(
                    SYSEX_START + (17, 4, index, 0), (247, ))

            self._encoder_display = PhysicalDisplayElement(80, 8)
            self._encoder_display.set_message_parts(SYSEX_START + (17, 3),
                                                    (247, ))
            for index in range(8):
                pos_id = tuple()
                if index != 0:
                    pos_id += (0, )
                if index > 3:
                    pos_id += (index % 4, 13)
                else:
                    pos_id += (index % 4, 0)
                self._encoder_display.segment(index).set_position_identifier(
                    pos_id)

            self._data_sources = [
                DisplayDataSource('                           ')
                for index in range(7)
            ]
            top_display = PhysicalDisplayElement(20, 1)
            top_display.set_message_parts(SYSEX_START + (17, 1, 0, 0), (247, ))
            top_display.set_clear_all_message(SYSEX_START + (16, 247))
            self._header_display = top_display
            self._display1 = top_display.segment(0)
            long_display = PhysicalDisplayElement(80, 4)
            long_display.set_message_parts(SYSEX_START + (
                17,
                3,
            ), (247, ))
            self._display2 = long_display.segment(0)
            pos_id = tuple()
            pos_id += (0, 0)
            self._display2.set_position_identifier(pos_id)
            self._display3 = long_display.segment(1)
            pos_id = tuple()
            pos_id += (0, 1, 0)
            self._display3.set_position_identifier(pos_id)
            self._display4 = long_display.segment(2)
            pos_id = tuple()
            pos_id += (0, 2, 0)
            self._display4.set_position_identifier(pos_id)
            self._display5 = long_display.segment(3)
            pos_id = tuple()
            pos_id += (0, 3, 0)
            self._display5.set_position_identifier(pos_id)
            middle_display = PhysicalDisplayElement(20, 1)
            middle_display.set_message_parts(SYSEX_START + (17, 2, 0, 0),
                                             (247, ))
            self._display6 = middle_display.segment(0)
            bottom_display = PhysicalDisplayElement(20, 1)
            bottom_display.set_message_parts(SYSEX_START + (17, 4, 0, 0),
                                             (247, ))
            self._display7 = bottom_display.segment(0)

            self._browser_displays = [
                self._display1, self._display2, self._display3, self._display4,
                self._display5, self._display6, self._display7
            ]
            self._drumpads = [
                ButtonElement(True,
                              MIDI_NOTE_TYPE,
                              15,
                              81 + index,
                              name='Pad_' + str(index)) for index in range(8)
            ]
            self._setup_m4l_interface()

        self.log_message('Axiom_OJI script installed')
 def _create_transport(self):
     transport = TransportComponent(play_toggle_model_transform=lambda v: v)
     transport.layer = Layer(record_button=self._modified_start_stop_button,
                             play_button=self._start_stop_button)
     return transport
 def _setup_transport(self):
     self._transport = TransportComponent(name='Transport')
     self._transport.set_enabled(False)
     self._transport.layer = Layer(play_button=self._play_button, stop_button=self._stop_button, record_button=self._record_button, overdub_button=self._shifted_record_button, loop_button=self._shifted_arm_buttons[3], tap_tempo_button=self._shifted_arm_buttons[4], metronome_button=self._shifted_arm_buttons[5], nudge_down_button=self._shifted_arm_buttons[6], nudge_up_button=self._shifted_arm_buttons[7])