Пример #1
0
    def __init__(self, monochrome=False, *a, **k):
        super(ModeSelector, self).__init__(*a, **k)
        is_momentary = True
        self._monochrome = monochrome
        self._scene_mode = SceneMode(0)
        self._clip_mode = StudioClipMode(1)
        self._pad_mode = PadMode(2, monochrome)
        self._drum_mode = DrumMode(2, monochrome)
        self._control_mode = ControlMode(2, monochrome)
        self._pad_mode.set_alternate_mode(self._drum_mode)
        self._drum_mode.set_alternate_mode(self._pad_mode)
        self._tracks_assign = TrackAssign()
        self._arm_mode = TrackArmMode(self._tracks_assign)
        self._solo_mode = TrackSoloMode(self._tracks_assign)
        self._stop_mode = TrackStopMode(self._tracks_assign)
        self._mute_mode = TrackMuteMode(self._tracks_assign)
        self._select_mode = TrackSelectMode(self._tracks_assign)
        self._xfade_mode = TrackXFadeMode(self._tracks_assign)
        self._color_select_mode = MaschineColorSelectMode(5)
        self._mode = self._clip_mode
        self._return_mode = None

        def create_button(ccval, channel=0):
            return StateButton(is_momentary, MIDI_CC_TYPE, channel, ccval)

        self._scene_mode_button = create_button(112)
        self._clip_mode_button = create_button(113)
        self._pad_mode_button = create_button(114)
        self._select_button = create_button(117)
        self._solo_button = create_button(118)
        self._mute_button = create_button(119)
        self._xfade_button = self.canonical_parent.create_gated_button(84, 5)
        self._stop_button = self.canonical_parent.create_gated_button(94, 16)
        self._arm_button = self.canonical_parent.create_gated_button(83, 0)
        self._solo_button = StateButton(False, MIDI_CC_TYPE, 0, 118)
        self._clip_mode_button.send_value(127, True)
        self._select_clip_mode.subject = self._clip_mode_button
        self._select_scene_mode.subject = self._scene_mode_button
        self._select_pad_mode.subject = self._pad_mode_button
        self._select_arm.subject = self._arm_button
        self._select_solo.subject = self._solo_button
        self._select_stop.subject = self._stop_button
        self._select_xfade.subject = self._xfade_button
        self._select_mute.subject = self._mute_button
        self._select_select.subject = self._select_button
        self._arm_exclusive_button = create_button(51, 2)
        self._action_arm_exclusive.subject = self._arm_exclusive_button
        self._solo_exclusive_button = create_button(52, 2)
        self._action_solo_exclusive.subject = self._solo_exclusive_button
        self._scene_mode_button.send_value(0, True)
        self._clip_mode_button.send_value(1, True)
        self._pad_mode_button.send_value(0, True)
        self._mode._active = True
        return
    def __init__(self, note_repeat=None, *a, **k):
        super(ModeHandler, self).__init__(*a, **k)
        self._note_repeat = note_repeat
        self.nr_index = 6
        self._note_repeat.repeat_rate = 1.0 / CFG_REPEAT_FREQUENCIES[
            self.nr_index] * 4.0

        def create_button(ccval, channel=0, cname=None):
            button = StateButton(True,
                                 MIDI_CC_TYPE,
                                 channel,
                                 ccval,
                                 name=cname)
            button.last_value = 0
            return button

        self._note_repeat_button = create_button(CC_NOTE_REPEAT_BUTTON, 0,
                                                 'Note_Repeat_Button')
        self._do_note_repeat.subject = self._note_repeat_button
        self._scene_mode_button = create_button(CC_SCENE_BUTTON, 0,
                                                'Scene_Mode_Button')
        self._clip_mode_button = create_button(CC_PATTERN_BUTTON, 0,
                                               'Pattern_Mode_Button')
        self._pad_mode_button = create_button(CC_PAD_BUTTON, 0,
                                              'Pad_Mode_Button')
        self._keyboard_mode_button = create_button(CC_KEYBOARD_BUTTON, 0,
                                                   'Keyboard_Mode_Button')
        self._track_mode_button = create_button(CC_MIKRO_GROUP_BUTTON, 0,
                                                'Track_Mode_Button')
        self._level_mode_button = create_button(120, 0, 'Level_Mode_Button')
        self._select_clip_mode.subject = self._clip_mode_button
        self._select_scene_mode.subject = self._scene_mode_button
        self._select_pad_mode.subject = self._pad_mode_button
        self._select_keyboard_mode.subject = self._keyboard_mode_button
        self._select_track_mode.subject = self._track_mode_button
        self._select_level_mode.subject = self._level_mode_button
        self._solo_button = create_button(CC_SOLO_BUTTON, 0, 'Solo_Button')
        self._mute_button = create_button(CC_MUTE_BUTTON, 0, 'Mute_Button')
        self._select_button = create_button(CC_SELECT_BUTTON, 0,
                                            'Select_Button')
        self._handle_solo_button.subject = self._solo_button
        self._handle_mute_button.subject = self._mute_button
        self._handle_select_button.subject = self._select_button
        self._clip_mode = SessionMode()
        self._scene_mode = SceneMode()
        self._pad_mode = PadMode()
        self._drum_mode = DrumMode()
        self._track_mode = TrackMode()
        self._level_mode = LevelIndicatorMode()
        self._pad_mode.fitting_mode = self.fitting_mode
        self._drum_mode.fitting_mode = self.fitting_mode
        self._mode_group = MG_CLIP
        self._clip_mode.button_index = CLIP_MODE
        self._scene_mode.button_index = SCENE_MODE
        self._pad_mode.button_index = PAD_MODE
        self._drum_mode.button_index = PAD_MODE
        self._track_mode.button_index = TRACK_MODE
        self._level_mode.button_index = LEVEL_MODE
        self._clip_mode.enter_action = self.enter_clip_mode
        self._scene_mode.enter_action = self.enter_scene_mode
        self._pad_mode.enter_action = self.enter_pad_mode
        self._track_mode_button.send_value(7)
        self._mode = self._clip_mode
        self._selected_track_change.subject = self.song().view
        self._detail_clip_changed.subject = self.song().view
        self._defer_action = None
        self.__selected_track = self.song().view.selected_track
        if self.__selected_track:
            self.__on_track_color_changed.subject = self.__selected_track
        else:
            self.__on_track_color_changed.subject = None
        self.nr_frq = CTRL_TO_FREQ[4][1]
        self._note_repeat.repeat_rate = 1.0 / self.nr_frq * 4.0
        self._track_color = toHSB(self.song().view.selected_track.color)
        return
    def __init__(self, note_repeat=None, *a, **k):
        super(JamModes, self).__init__(*a, **k)
        self._note_repeat = note_repeat
        self.nr_index = 6
        self._note_repeat.repeat_rate = 1.0 / CFG_REPEAT_FREQUENCIES[self.nr_index] * 4.0

        def create_button(ccval, channel=0, cname=None):
            button = StateButton(True, MIDI_CC_TYPE, channel, ccval, name=cname)
            button.last_value = 0
            return button

        self.__main_knob = GrabEncoder(MIDI_CC_TYPE, 0, 86, name='Browse_Control')
        self.__push_button = TouchButton(MIDI_CC_TYPE, 0, 87, name='Browse_Push')
        self.__touch_main = TouchButton(MIDI_CC_TYPE, 0, 88, name='Browse_Touch')
        self._do_main_knob.subject = self.__main_knob
        self._do_push_button.subject = self.__push_button
        self._knob_action = None
        self.__instance_button = create_button(62, 0, 'Instance_1_Button')
        self.__perform_button = create_button(45, 0, 'Perform_Button')
        self.__tune_button = create_button(48, 0, 'Tune_Button')
        self.__swing_button = create_button(49, 0, 'Swing_Button')
        self.__browse_button = create_button(44, 0, 'Browse_Mode_Button')
        self.__do_browse_button.subject = self.__browse_button
        self._arrange_button = create_button(30, 0, 'Song_Mode_Button')
        self._arrange_button.view_mode = VM_SESSION
        self._pad_mode_button = create_button(32, 0, 'Pad_Mode_Button')
        self._step_mode_button = create_button(31, 0, 'Step_Mode_Button')
        self._solo_button = create_button(111, 0, 'Solo_Button')
        self._mute_button = create_button(112, 0, 'Mute_Button')
        self._grid_button = create_button(113, 0, 'Grid_Button')
        self.__notes_button = create_button(46, 0, 'Notes_Button')
        master_button = create_button(60, 0, 'Master_Button')
        group_button = create_button(61, 0, 'Group_Button')
        cue_button = create_button(63, 0, 'Cue_Button')
        self._tempo_button = create_button(110, 0, 'Tempo_Button')
        self._note_repeat_button = create_button(94, 0, 'Note_Repeat_Button')
        self._handle_master_button.subject = master_button
        self._handle_group_button.subject = group_button
        self._handle_cue_button.subject = cue_button
        self._handle_tempo_button.subject = self._tempo_button
        self._tempo_button.selected = False
        self._handle_solo_button.subject = self._solo_button
        self._handle_mute_button.subject = self._mute_button
        self._handle_grid_button.subject = self._grid_button
        self._handle_note_repeat.subject = self._note_repeat_button
        self.__encoder_control = MainEncoderControl(self, master_button, group_button, cue_button, self._grid_button, self._tempo_button, self._note_repeat_button, self._solo_button)
        self.__encoder_control.set_selected_track(self.song().view.selected_track)
        self._clip_mode = SessionMode(0)
        self._pad_mode = PadMode(1)
        self._drum_pad_mode = DrumMode(1)
        self._step_mode = StepMode(2, self._pad_mode)
        self._user_mode = UserMode(4)
        self._drum_step_mode = DrumStepMode(3)
        self._mode_group = MG_CLIP
        self._clip_mode.enter_action = self.enter_clip_mode
        self._pad_mode.enter_action = self.enter_pad_mode
        self._drum_pad_mode.enter_action = self.enter_pad_mode
        self._step_mode.enter_action = self.enter_step_mode
        self._user_mode.enter_action = self.enter_user_mode
        self._do_arrange_button.subject = self._arrange_button
        self._do_pad_mode.subject = self._pad_mode_button
        self._do_step_mode.subject = self._step_mode_button
        self._do_midi_capture.subject = self.__notes_button
        self._mode = self._clip_mode
        self._selected_track_change.subject = self.song().view
        self._detail_clip_changed.subject = self.song().view
        self._capture_changed.subject = self.song()
        self.update_arrange_button()
        self._defer_action = None
        return