コード例 #1
0
 def __init__(self,
              notification_time=2.5,
              blinking_time=0.3,
              display_lines=[],
              *a,
              **k):
     super(NotificationComponent, self).__init__(*a, **k)
     self._display_lines = display_lines
     self._token_control = _TokenControlElement()
     self._align_text_fn = self._default_align_text_fn
     self._message_box = self.register_component(MessageBoxComponent())
     self._message_box.set_enabled(False)
     self._notification_timeout_task = self._tasks.add(
         Task.sequence(Task.wait(notification_time),
                       Task.run(self.hide_notification))
     ).kill() if notification_time != -1 else self._tasks.add(Task.Task())
     self._blink_text_task = self._tasks.add(
         Task.loop(
             Task.sequence(
                 Task.run(lambda: self._message_box.
                          __setattr__('text', self._original_text)),
                 Task.wait(blinking_time),
                 Task.run(lambda: self._message_box.__setattr__(
                     'text', self._blink_text)),
                 Task.wait(blinking_time)))).kill()
     self._original_text = None
     self._blink_text = None
コード例 #2
0
 def _make_scroll_task(self, scroll_step):
     task = self._tasks.add(
         Task.sequence(
             Task.wait(self.scrolling_delay),
             Task.loop(Task.wait(self.scrolling_step_delay),
                       Task.run(scroll_step))))
     task.kill()
     return task
コード例 #3
0
    def __init__(self, clip_creator=None, playhead=None, *a, **k):
        super(NoteEditorComponent, self).__init__(*a, **k)
        self.loop_steps = False
        self._selected_page_point = 0
        self._page_index = 0
        self._clip_creator = clip_creator
        self._matrix = None
        self._sequencer_clip = None
        self._step_colors = ["NoteEditor.StepEmpty"] * STEP_SEQ_SIZE
        self._note_settings_layer = None
        self._top_data_sources = map(DisplayDataSource, STEP_PARAM_NAMES)
        self._bottom_data_sources = [DisplayDataSource() for _ in xrange(8)]
        self._show_settings_task = self._tasks.add(
            Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.run(self._show_settings))
        )
        self._show_settings_task.kill()
        self._mute_button = None
        self._velocity_offset = 0
        self._length_offset = 0
        self._nudge_offset = 0
        self._attribute_deltas = [None for _ in xrange(3)]
        self._full_velocity = False
        self._pressed_steps = []
        self._modified_steps = []
        self._pressed_step_callback = None
        self._quantization_buttons = []
        self._quantization_button_slots = self.register_slot_manager()
        self._modify_task = self._tasks.add(Task.run(self._do_modification))
        self._modify_task.kill()
        self._modify_all_notes_enabled = False
        self._step_tap_tasks = dict(
            [
                (
                    (x, y),
                    self._tasks.add(
                        Task.sequence(
                            Task.wait(Defaults.MOMENTARY_DELAY),
                            Task.run(partial(self._trigger_modification, (x, y), done=True)),
                        )
                    ),
                )
                for x, y in product(xrange(STEP_SEQ_WIDTH), xrange(STEP_SEQ_HEIGHT))
            ]
        )
        for task in self._step_tap_tasks.itervalues():
            task.kill()

        self._clip_notes = []
        self._note_index = 36
        self._triplet_factor = 1.0
        self._set_quantization_index(3)
        self._playhead = playhead
        self._playhead_notes = range(92, 100) + range(84, 92) + range(76, 84) + range(68, 76)
        self._playhead_triplet_notes = range(92, 98) + range(84, 90) + range(76, 82) + range(68, 74)
        with self._playhead_update_guard():
            self._update_full_playhead()
コード例 #4
0
    def __init__(self, clip_creator=None, playhead=None, *a, **k):
        super(NoteEditorComponent, self).__init__(*a, **k)
        self.loop_steps = False
        self._selected_page_point = 0
        self._page_index = 0
        self._clip_creator = clip_creator
        self._matrix = None
        self._sequencer_clip = None
        self._step_colors = ['NoteEditor.StepEmpty'] * STEP_SEQ_SIZE
        self._note_settings_layer = None
        self._top_data_sources = map(DisplayDataSource, STEP_PARAM_NAMES)
        self._bottom_data_sources = [DisplayDataSource() for _ in xrange(8)]
        self._show_settings_task = self._tasks.add(
            Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY),
                          Task.run(self._show_settings)))
        self._show_settings_task.kill()
        self._mute_button = None
        self._velocity_offset = 0
        self._length_offset = 0
        self._nudge_offset = 0
        self._attribute_deltas = [None for _ in xrange(3)]
        self._full_velocity = False
        self._pressed_steps = []
        self._modified_steps = []
        self._pressed_step_callback = None
        self._quantization_buttons = []
        self._quantization_button_slots = self.register_slot_manager()
        self._modify_task = self._tasks.add(Task.run(self._do_modification))
        self._modify_task.kill()
        self._modify_all_notes_enabled = False
        self._step_tap_tasks = dict([
            ((x, y),
             self._tasks.add(
                 Task.sequence(
                     Task.wait(Defaults.MOMENTARY_DELAY),
                     Task.run(
                         partial(self._trigger_modification, (x, y),
                                 done=True)))))
            for x, y in product(xrange(STEP_SEQ_WIDTH), xrange(
                STEP_SEQ_HEIGHT))
        ])
        for task in self._step_tap_tasks.itervalues():
            task.kill()

        self._clip_notes = []
        self._note_index = 36
        self._triplet_factor = 1.0
        self._set_quantization_index(3)
        self._playhead = playhead
        self._playhead_notes = range(92, 100) + range(84, 92) + range(
            76, 84) + range(68, 76)
        self._playhead_triplet_notes = range(92, 98) + range(84, 90) + range(
            76, 82) + range(68, 74)
        with self._playhead_update_guard():
            self._update_full_playhead()
コード例 #5
0
 def __init__(self, c_instance, *a, **k):
     super(Launchkey_MK1, self).__init__(c_instance=c_instance, *a, **k)
     set_log_instance(self) # For Debug Output only
     self._is_25_key_model = False
     self._is_in_control_on = True
     with self.component_guard():
         self._skin = make_skin()
         with inject(skin=const(self._skin)).everywhere():
             self._create_controls()
     self._request_task = self._tasks.add(Task.sequence(Task.wait(self.identity_request_delay), Task.run(self._send_identity_request)))
     self._request_task.kill()
     self._encoder_mode_toggle_enabled = False
     self._encoder_mode_task = self._tasks.add(Task.sequence(Task.wait(self.encoder_in_control_double_click_time), Task.run(self._disable_toggle_encoder_mode)))
     self._encoder_mode_task.kill()
コード例 #6
0
    def __init__(self, wrapped_control=None, *a, **k):
        super(MultiButton, self).__init__(wrapped_control=wrapped_control,
                                          *a,
                                          **k)
        self.register_wrapped()
        self.request_listen_nested_control_elements()

        self._long_press_task = self._tasks.add(
            Task.sequence(Task.wait(self.LONG_TAP_MAX_DELAY),
                          Task.run(self.notify_long_press))).kill()

        self._double_press_task = self._tasks.add(
            Task.sequence(Task.wait(self.DOUBLE_PRESS_MAX_DELAY),
                          Task.run(self.notify_single_press))).kill()
コード例 #7
0
 def action_button(self, button):
     self._settings_task.kill()
     self._settings_task = self._tasks.add(
         Task.sequence(
             Task.wait(self.SETTINGS_DELAY),
             Task.run(self._do_show_settings)))
     self.trigger_action()
コード例 #8
0
 def _on_scroll(self):
     if self._trigger_action_on_scrolling:
         trigger_selected = partial(self._trigger_action, self.selected_item)
         self._action_on_scroll_task.kill()
         self._action_on_scroll_task = self._tasks.add(
             Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.delay(1), Task.run(trigger_selected))
         )
コード例 #9
0
 def __init__(self, play_toggle_model_transform=const(True), *a, **k):
     super(TransportComponent, self).__init__(*a, **k)
     self._ffwd_button = None
     self._rwd_button = None
     self._tap_tempo_button = None
     self._tempo_control = None
     self._tempo_fine_control = None
     self._song_position_control = None
     self._rwd_task = Task.Task()
     self._ffwd_task = Task.Task()
     self._fine_tempo_needs_pickup = True
     self._prior_fine_tempo_value = -1
     self._end_undo_step_task = self._tasks.add(
         Task.sequence(Task.wait(1.5), Task.run(self.song().end_undo_step)))
     self._end_undo_step_task.kill()
     song = self.song()
     self._loop_toggle, self._punch_in_toggle, self._punch_out_toggle, self._record_toggle, self._play_toggle, self._stop_toggle, self._nudge_down_toggle, self._nudge_up_toggle, self._metronome_toggle, self._arrangement_overdub_toggle, self._overdub_toggle = self.register_components(
         ToggleComponent('loop', song),
         ToggleComponent('punch_in', song, is_momentary=True),
         ToggleComponent('punch_out', song, is_momentary=True),
         ToggleComponent('record_mode', song),
         ToggleComponent('is_playing',
                         song,
                         model_transform=play_toggle_model_transform),
         ToggleComponent('is_playing',
                         song,
                         model_transform=const(False),
                         view_transform=const(False)),
         ToggleComponent('nudge_down', song, is_momentary=True),
         ToggleComponent('nudge_up', song, is_momentary=True),
         ToggleComponent('metronome', song),
         ToggleComponent('arrangement_overdub', song),
         ToggleComponent('overdub', song))
     return
コード例 #10
0
 def __init__(self, clip_creator = None, measure_length = 4.0, follow_detail_clip = False, paginator = None, *a, **k):
     super(LoopSelectorComponent, self).__init__(*a, **k)
     self._clip_creator = clip_creator
     self._sequencer_clip = None
     self._paginator = Paginator()
     self._loop_start = 0
     self._loop_end = 0
     self._loop_length = 0
     self._is_following = False
     self._follow_button = None
     self._select_button = None
     self._short_loop_selector_matrix = None
     self._loop_selector_matrix = None
     self._pressed_pages = []
     self._page_colors = []
     self._measure_length = measure_length
     self._last_playhead_page = -1
     self._follow_task = self._tasks.add(Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.run(partial(self._set_is_following, True))))
     self._follow_task.kill()
     if follow_detail_clip:
         self._on_detail_clip_changed.subject = self.song().view
     self._on_session_record_changed.subject = self.song()
     self._on_song_playback_status_changed.subject = self.song()
     if paginator is not None:
         self.set_paginator(paginator)
コード例 #11
0
    def _setup_hardware(self):
        for msg in self._messages_to_send:
            self._tasks.add(
                Task.sequence(partial(self._send_midi, msg),
                              Task.wait(MESSAGE_DELAY)))

        self._messages_to_send = []
コード例 #12
0
 def __init__(self, *a, **k):
     super(DetailViewCntrlComponent, self).__init__(*a, **k)
     self._detail_view_visibility_changed.subject = self.application().view
     self._detail_view_visibility_changed()
     self._go_to_playing_clip_task = self._tasks.add(Task.sequence(Task.wait(SHOW_PLAYING_CLIP_DELAY), Task.run(self._go_to_playing_clip)))
     self._go_to_playing_clip_task.kill()
     self.set_device_clip_toggle_button = self.device_clip_toggle_button.set_control_element
     self.set_detail_toggle_button = self.detail_toggle_button.set_control_element
コード例 #13
0
ファイル: LaunchControlXL.py プロジェクト: aumhaa/livepy_diff
 def __init__(self, c_instance, *a, **k):
     super(LaunchControlXL, self).__init__(c_instance=c_instance, product_id_bytes=(0, 32, 41, 97), *a, **k)
     self._biled_skin = make_biled_skin()
     self._default_skin = make_default_skin()
     with self.component_guard():
         self._create_controls()
     self._initialize_task = self._tasks.add(Task.sequence(Task.wait(1), Task.run(self._create_components)))
     self._initialize_task.kill()
コード例 #14
0
    def _setup_hardware(self):
        sequence_to_run = [None] * (len(self._messages_to_send) * 2)
        sequence_to_run[::2] = [ Task.run(partial(self._send_midi, msg)) for msg in self._messages_to_send ]
        sequence_to_run[1::2] = [ Task.wait(INDIVIDUAL_MESSAGE_DELAY) for _ in self._messages_to_send ]
        for subsequence in split_list(sequence_to_run, 40):
            self._tasks.add(Task.sequence(*subsequence))

        self._messages_to_send = []
コード例 #15
0
 def _on_scroll(self):
     if self._trigger_action_on_scrolling:
         trigger_selected = partial(self._trigger_action,
                                    self.selected_item)
         self._action_on_scroll_task.kill()
         self._action_on_scroll_task = self._tasks.add(
             Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY),
                           Task.delay(1), Task.run(trigger_selected)))
 def __init__(self, *a, **k):
     super(DetailViewCntrlComponent, self).__init__(*a, **k)
     self._detail_view_visibility_changed.subject = self.application().view
     self._detail_view_visibility_changed()
     self._go_to_playing_clip_task = self._tasks.add(Task.sequence(Task.wait(SHOW_PLAYING_CLIP_DELAY), Task.run(self._go_to_playing_clip)))
     self._go_to_playing_clip_task.kill()
     self.set_device_clip_toggle_button = self.device_clip_toggle_button.set_control_element
     self.set_detail_toggle_button = self.detail_toggle_button.set_control_element
コード例 #17
0
    def _setup_hardware(self):
        sequence_to_run = [None] * (len(self._messages_to_send) * 2)
        sequence_to_run[::2] = [ Task.run(partial(self._send_midi, msg)) for msg in self._messages_to_send ]
        sequence_to_run[1::2] = [ Task.wait(INDIVIDUAL_MESSAGE_DELAY) for _ in self._messages_to_send ]
        for subsequence in split_list(sequence_to_run, 40):
            self._tasks.add(Task.sequence(*subsequence))

        self._messages_to_send = []
コード例 #18
0
 def __init__(self, c_instance, *a, **k):
     super(LaunchControlXL, self).__init__(c_instance=c_instance, product_id_bytes=(0, 32, 41, 97), *a, **k)
     self._biled_skin = make_biled_skin()
     self._default_skin = make_default_skin()
     with self.component_guard():
         self._create_controls()
     self._initialize_task = self._tasks.add(Task.sequence(Task.wait(1), Task.run(self._create_components)))
     self._initialize_task.kill()
コード例 #19
0
ファイル: ValueComponent.py プロジェクト: mowema/ableton_push
 def __init__(self, display_label = ' ', display_seg_start = 0, encoder = None, *a, **k):
     super(ValueComponentBase, self).__init__(*a, **k)
     self._display_mode = self.TOUCH_BASED
     self._button = None
     self._on_encoder_changed.subject = encoder
     self._display = self.register_component(self.create_display_component(display_label=display_label, display_seg_start=display_seg_start))
     self._display.set_enabled(False)
     self._hide_display_task = self._tasks.add(Task.sequence(Task.wait(self.AUTO_HIDE_IN_SEC), Task.run(partial(self._display.set_enabled, False))))
     self._hide_display_task.kill()
コード例 #20
0
 def __init__(self, *a, **k):
     super(ArturiaControlSurface, self).__init__(*a, **k)
     self._messages_to_send = []
     self._setup_hardware_task = self._tasks.add(
         Task.sequence(Task.run(self._collect_setup_messages),
                       Task.wait(SETUP_HARDWARE_DELAY),
                       Task.run(self._setup_hardware)))
     self._setup_hardware_task.kill()
     self._start_hardware_setup()
コード例 #21
0
 def __init__(self, display_label = ' ', display_seg_start = 0, encoder = None, *a, **k):
     super(ValueComponentBase, self).__init__(*a, **k)
     self._display_mode = self.TOUCH_BASED
     self._button = None
     self._on_encoder_changed.subject = encoder
     self._display = self.register_component(self.create_display_component(display_label=display_label, display_seg_start=display_seg_start))
     self._display.set_enabled(False)
     self._hide_display_task = self._tasks.add(Task.sequence(Task.wait(self.AUTO_HIDE_IN_SEC), Task.run(partial(self._display.set_enabled, False))))
     self._hide_display_task.kill()
コード例 #22
0
 def __init__(self, undo_step_handler = None, delete_handler = None, *a, **k):
     super(TouchEncoderElement, self).__init__(*a, **k)
     self._trigger_undo_step = False
     self._undo_step_open = False
     self._undo_step_handler = undo_step_handler
     self._delete_handler = delete_handler
     self._tap_count = 0
     self._tap_task = self._tasks.add(Task.sequence(Task.wait(consts.TAPPING_DELAY), Task.run(self._reset_tapping)))
     self._tap_task.kill()
     self.set_observer(None)
コード例 #23
0
 def __init__(self, identity_control = None, presentation_control = None, dongle_control = None, dongle = (0, 0), *a, **k):
     super(HandshakeComponent, self).__init__(*a, **k)
     self._identity_control = identity_control
     self._presentation_control = presentation_control
     self._dongle_control = dongle_control
     self._dongle_one, self._dongle_two = dongle
     self._on_identity_value.subject = identity_control
     self._on_dongle_value.subject = dongle_control
     self._identification_timeout_task = self._tasks.add(Task.sequence(Task.wait(HANDSHAKE_TIMEOUT), Task.run(self._do_fail)))
     self._identification_timeout_task.kill()
コード例 #24
0
 def __init__(self, notification_time = 2.5, blinking_time = 0.3, display_lines = [], *a, **k):
     super(NotificationComponent, self).__init__(*a, **k)
     self._display_lines = display_lines
     self._token_control = _TokenControlElement()
     self._message_box = self.register_component(MessageBoxComponent())
     self._message_box.set_enabled(False)
     self._notification_timeout_task = self._tasks.add(Task.sequence(Task.wait(notification_time), Task.run(self.hide_notification))).kill()
     self._blink_text_task = self._tasks.add(Task.loop(Task.sequence(Task.run(lambda : self._message_box.__setattr__('text', self._original_text)), Task.wait(blinking_time), Task.run(lambda : self._message_box.__setattr__('text', self._blink_text)), Task.wait(blinking_time)))).kill()
     self._original_text = None
     self._blink_text = None
コード例 #25
0
ファイル: Launchkey_MK2.py プロジェクト: aumhaa/livepy_diff
 def __init__(self, c_instance, *a, **k):
     super(Launchkey_MK2, self).__init__(c_instance=c_instance, *a, **k)
     self._is_25_key_model = False
     self._is_in_control_on = True
     with self.component_guard():
         self._skin = make_skin()
         with inject(skin=const(self._skin)).everywhere():
             self._create_controls()
     self._request_task = self._tasks.add(Task.sequence(Task.wait(self.identity_request_delay), Task.run(self._send_identity_request)))
     self._request_task.kill()
コード例 #26
0
 def __init__(self, msg_type, channel, identifier, map_mode, undo_step_handler = None, delete_handler = None, touch_button = None, *a, **k):
     super(TouchEncoderElement, self).__init__(msg_type, channel, identifier, map_mode, *a, **k)
     self._trigger_undo_step = False
     self._undo_step_open = False
     self._undo_step_handler = undo_step_handler
     self._delete_handler = delete_handler
     self._tap_count = 0
     self._tap_task = self._tasks.add(Task.sequence(Task.wait(consts.TAPPING_DELAY), Task.run(self._reset_tapping)))
     self._tap_task.kill()
     self.set_touch_button(touch_button)
     self.set_observer(None)
コード例 #27
0
 def __init__(self, product_id_bytes=None, *a, **k):
     super(IdentifiableControlSurface, self).__init__(*a, **k)
     assert product_id_bytes is not None
     assert len(product_id_bytes) < 12
     self._product_id_bytes = product_id_bytes
     self._identity_response_pending = False
     self._request_task = self._tasks.add(
         Task.sequence(Task.wait(self.identity_request_delay),
                       Task.run(self._send_identity_request)))
     self._request_task.kill()
     return
コード例 #28
0
 def __init__(self, c_instance, *a, **k):
     super(Launchkey_MK2, self).__init__(c_instance=c_instance, *a, **k)
     self._is_25_key_model = False
     self._is_in_control_on = True
     self._identity_response_pending = False
     with self.component_guard():
         self._skin = make_skin()
         with inject(skin=const(self._skin)).everywhere():
             self._create_controls()
     self._request_task = self._tasks.add(Task.sequence(Task.wait(self.identity_request_delay), Task.run(self._send_identity_request)))
     self._request_task.kill()
コード例 #29
0
 def __init__(self, all_pads = tuple(), parameter_sender = nop, default_profile = PadParameters(), update_delay = 0, *a, **k):
     raise find_if(lambda pad: pad < 0 or pad > 63, all_pads or []) == None or AssertionError
     super(PadUpdateComponent, self).__init__(*a, **k)
     self.parameter_sender = parameter_sender
     self._all_pads = set(all_pads)
     self._modified_pads = set(all_pads)
     self._profiles = {'default': default_profile}
     self._profile_for = dict(zip(all_pads, repeat('default')))
     self._profile_count = {'default': len(all_pads)}
     self._update_task = self._tasks.add(Task.sequence(Task.wait(update_delay), Task.run(self._update_modified)))
     self._update_task.restart()
コード例 #30
0
 def __init__(self, undo_step_handler=None, delete_handler=None, *a, **k):
     super(TouchEncoderElement, self).__init__(*a, **k)
     self._trigger_undo_step = False
     self._undo_step_open = False
     self._undo_step_handler = undo_step_handler
     self._delete_handler = delete_handler
     self._tap_count = 0
     self._tap_task = self._tasks.add(
         Task.sequence(Task.wait(consts.TAPPING_DELAY),
                       Task.run(self._reset_tapping)))
     self._tap_task.kill()
     self.set_observer(None)
コード例 #31
0
 def __init__(self, mode=None, delay=None, parent_task_group=None, *a, **k):
     super(DelayMode, self).__init__(*a, **k)
     assert mode is not None
     assert parent_task_group is not None
     delay = delay if delay is not None else Defaults.MOMENTARY_DELAY
     self._mode = tomode(mode)
     self._mode_entered = False
     self._delay_task = parent_task_group.add(
         Task.sequence(Task.wait(delay),
                       Task.run(self._enter_mode_delayed)))
     self._delay_task.kill()
     return
コード例 #32
0
 def _on_action_button_value(self, value):
     if self.is_enabled():
         self._settings_task.kill()
         if value:
             self._settings_task = self._tasks.add(Task.sequence(Task.wait(self.SETTINGS_DELAY), Task.run(self._do_show_settings)))
             self.trigger_action()
         elif self._is_showing_settings:
             self.hide_settings()
             self._is_showing_settings = False
         else:
             self.post_trigger_action()
         self._update_action_button()
コード例 #33
0
 def _on_selected_item_changed(self):
     self._scroller.update()
     self._update_display()
     self._update_action_feedback()
     self._activation_task.kill()
     self._action_on_scroll_task.kill()
     if self.SELECTION_DELAY and self._delay_activation:
         self._activation_task = self._tasks.add(Task.sequence(Task.wait(self.SELECTION_DELAY), Task.run(self._scrollable_list.request_notify_item_activated)))
     else:
         self._scrollable_list.request_notify_item_activated()
     if not self._in_encoder_selection:
         self._selected_index_float = float(self._scrollable_list.selected_item_index)
コード例 #34
0
 def __init__(self,
              wrapped_control=None,
              double_press_context=None,
              *a,
              **k):
     super(DoublePressElement,
           self).__init__(wrapped_control=wrapped_control, *a, **k)
     self.register_control_element(self._wrapped_control)
     self._double_press_context = double_press_context
     self._double_press_task = self._tasks.add(
         Task.sequence(Task.wait(self.DOUBLE_PRESS_MAX_DELAY),
                       Task.run(self.finish_single_press))).kill()
     self.request_listen_nested_control_elements()
コード例 #35
0
 def _on_selected_item_changed(self):
     self._scroller.update()
     self._pager.update()
     self._update_display()
     self._update_action_feedback()
     self._activation_task.kill()
     self._action_on_scroll_task.kill()
     if self.SELECTION_DELAY and self._delay_activation:
         self._activation_task = self._tasks.add(Task.sequence(Task.wait(self.SELECTION_DELAY), Task.run(self._scrollable_list.request_notify_item_activated)))
     else:
         self._scrollable_list.request_notify_item_activated()
     if not self._in_encoder_selection:
         self._selected_index_float = float(self._scrollable_list.selected_item_index)
コード例 #36
0
 def __init__(self, *a, **k):
     super(SpecialChanStripComponent, self).__init__(*a, **k)
     self.empty_color = 'Option.Unused'
     self._invert_mute_feedback = True
     self._delete_button = None
     self._duplicate_button = None
     self._selector_button = None
     self._track_parameter_name_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._track_parameter_data_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._track_parameter_graphic_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._on_return_tracks_changed.subject = self.song()
     self._on_selected_track_changed.subject = self.song().view
     self._fold_task = self._tasks.add(Task.sequence(Task.wait(TRACK_FOLD_DELAY), Task.run(self._do_fold_track)))
     self._cue_volume_slot = self.register_disconnectable(ParameterSlot())
コード例 #37
0
 def __init__(self, *a, **k):
     super(ModesComponent, self).__init__(*a, **k)
     self._last_toggle_value = 0
     self._mode_toggle = None
     self._mode_toggle_task = self._tasks.add(
         Task.wait(Defaults.MOMENTARY_DELAY))
     self._mode_toggle_task.kill()
     self._mode_list = []
     self._mode_map = {}
     self._last_selected_mode = None
     self._mode_stack = StackingResource(self._do_enter_mode,
                                         self._do_leave_mode)
     self._shift_button = None
     return
コード例 #38
0
 def _sigabort_create(self):
     if self._show_returns == 3 or self._show_returns == 4:
         self._fold_enabled = False
         self._toggle_returns = True
     if not self._enable_function:
         self._direct_bank = False
         self._has_transport = False
     if self._channel_strip:
         self._fold_enabled = False
     self._user_custom = self._enable_function and not self._direct_bank and not self._has_transport
     self._bcr_controls = BCL(self, self._preset, self._relative,
                              self._bit_14)
     self._device_selection_follows_track_selection = True
     self._default_skin = make_default_skin()
     with inject(skin=const(self._default_skin)).everywhere():
         self._create_controls()
     self._set_offsets_task = self._tasks.add(
         Task.sequence(Task.wait(0), Task.run(self._set_session_offsets)))
     self._set_offsets_task.kill()
     if self._show_selected:
         self._show_selected_task = self._tasks.add(
             Task.sequence(Task.wait(1),
                           Task.run(self._show_selected_track)))
     return False
コード例 #39
0
 def __init__(self, *a, **k):
     super(SpecialChanStripComponent, self).__init__(*a, **k)
     self.empty_color = 'Option.Unused'
     self._invert_mute_feedback = True
     self._delete_button = None
     self._duplicate_button = None
     self._selector_button = None
     self._track_parameter_name_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._track_parameter_data_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._track_parameter_graphic_sources = [ DisplayDataSource(' ') for _ in xrange(14) ]
     self._on_return_tracks_changed.subject = self.song()
     self._on_selected_track_changed.subject = self.song().view
     self._fold_task = self._tasks.add(Task.sequence(Task.wait(TRACK_FOLD_DELAY), Task.run(self._do_fold_track))).kill()
     self._cue_volume_slot = self.register_disconnectable(ParameterSlot())
     self._track_state = self.register_disconnectable(TrackArmState())
     self._on_arm_state_changed.subject = self._track_state
コード例 #40
0
    def __init__(self, *a, **k):
        super(BeatStep_Q, self).__init__(*a, **k)

        self.QS = QSetup()
        self.control_layer_active = False

        with self.component_guard():
            self._setup_hardware_task = self._tasks.add(
                Task.sequence(Task.wait(SETUP_HARDWARE_DELAY),
                              Task.run(self._setup_hardware)))
            self._setup_hardware_task.kill()
            self._start_hardware_setup()

            self._create_controls()
            self._create_Q_control()

            self._create_device()
コード例 #41
0
 def add_mode(self,
              name,
              mode_or_component,
              toggle_value=False,
              groups=set(),
              behaviour=None):
     u"""
     Adds a mode of the given name into the component.  The mode
     object should be a Mode or ControlSurfaceComponent instance.
     
     The 'toggle_value' is the light value the toggle_botton will
     be set to when the component is on this mode.
     
     If 'group' is not None, the mode will be put in the group
     identified by the passed object.  When several modes are grouped:
     
       * All the buttons in the group will light up when any of the
         modes withing the group is selected.
     
       * Any of the group buttons will cancel the current mode when
         the current mode belongs to the group.
     """
     assert name not in self._mode_map.keys()
     if not isinstance(groups, set):
         groups = set(groups)
     mode = tomode(mode_or_component)
     task = self._tasks.add(
         Task.sequence(
             Task.wait(Defaults.MOMENTARY_DELAY),
             Task.run(lambda: self._get_mode_behaviour(name).press_delayed(
                 self, name))))
     task.kill()
     slot = self.register_slot(listener=partial(self._on_mode_button_value,
                                                name),
                               event='value',
                               extra_kws=dict(identify_sender=True))
     self._mode_list.append(name)
     self._mode_map[name] = _ModeEntry(mode=mode,
                                       toggle_value=toggle_value,
                                       behaviour=behaviour,
                                       subject_slot=slot,
                                       momentary_task=task,
                                       groups=groups)
     button_setter = 'set_' + name + '_button'
     if not hasattr(self, button_setter):
         setattr(self, button_setter, partial(self.set_mode_button, name))
コード例 #42
0
 def __init__(self, grid_resolution = None, initial_encoder_layer = None, encoder_layer = None, settings_layer = None, *a, **k):
     super(NoteEditorSettingsComponent, self).__init__(*a, **k)
     raise encoder_layer or AssertionError
     self._bottom_data_sources = [ DisplayDataSource() for _ in xrange(8) ]
     self._request_hide = False
     self.settings = self.register_component(NoteSettingsComponent(grid_resolution=grid_resolution, layer=settings_layer))
     self.settings.set_enabled(False)
     self._automation = self.register_component(AutomationComponent())
     self._automation.set_enabled(False)
     self._mode_selector = self.register_component(OptionsComponent(num_options=2, num_labels=0, num_display_segments=8))
     self._mode_selector.set_enabled(False)
     self._on_selected_option.subject = self._mode_selector
     self._update_available_modes()
     self._mode_selector.selected_option = 0
     self._visible_detail_view = 'Detail/DeviceChain'
     self._show_settings_task = self._tasks.add(Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.run(self._show_settings)))
     self._show_settings_task.kill()
     self._update_infos_task = self._tasks.add(Task.run(self._update_note_infos))
     self._update_infos_task.kill()
     self._settings_modes = self.register_component(ModesComponent())
     self._settings_modes.set_enabled(False)
     self._settings_modes.add_mode('automation', [self._automation,
      self._mode_selector,
      partial(self._set_envelope_view_visible, True),
      self._show_clip_view])
     self._settings_modes.add_mode('note_settings', [self.settings,
      self._update_note_infos,
      self._mode_selector,
      partial(self._set_envelope_view_visible, False),
      self._show_clip_view])
     self._settings_modes.add_mode('pad_settings', [self.settings, partial(self._set_envelope_view_visible, False), self._show_clip_view])
     self._encoders = None
     self._initial_encoders = None
     self.add_mode('disabled', [])
     self.add_mode('about_to_show', [AddLayerMode(self, initial_encoder_layer), (self._show_settings_task.restart, self._show_settings_task.kill)])
     self.add_mode('enabled', [DetailViewRestorerMode(self.application()),
      AddLayerMode(self, encoder_layer),
      self._update_available_modes,
      self._settings_modes])
     self.selected_mode = 'disabled'
     self._editors = []
     self._on_detail_clip_changed.subject = self.song().view
     self._on_selected_track_changed.subject = self.song().view
     return
コード例 #43
0
 def __init__(self, grid_resolution = None, initial_encoder_layer = None, encoder_layer = None, settings_layer = None, *a, **k):
     super(NoteEditorSettingsComponent, self).__init__(*a, **k)
     raise encoder_layer or AssertionError
     self._bottom_data_sources = [ DisplayDataSource() for _ in xrange(8) ]
     self._request_hide = False
     self.settings = self.register_component(NoteSettingsComponent(grid_resolution=grid_resolution, layer=settings_layer))
     self.settings.set_enabled(False)
     self._automation = self.register_component(AutomationComponent())
     self._automation.set_enabled(False)
     self._mode_selector = self.register_component(OptionsComponent(num_options=2, num_labels=0, num_display_segments=8))
     self._mode_selector.set_enabled(False)
     self._on_selected_option.subject = self._mode_selector
     self._update_available_modes()
     self._mode_selector.selected_option = 0
     self._visible_detail_view = 'Detail/DeviceChain'
     self._show_settings_task = self._tasks.add(Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.run(self._show_settings)))
     self._show_settings_task.kill()
     self._update_infos_task = self._tasks.add(Task.run(self._update_note_infos))
     self._update_infos_task.kill()
     self._settings_modes = self.register_component(ModesComponent())
     self._settings_modes.set_enabled(False)
     self._settings_modes.add_mode('automation', [self._automation,
      self._mode_selector,
      partial(self._set_envelope_view_visible, True),
      self._show_clip_view])
     self._settings_modes.add_mode('note_settings', [self.settings,
      self._update_note_infos,
      self._mode_selector,
      partial(self._set_envelope_view_visible, False),
      self._show_clip_view])
     self._settings_modes.add_mode('pad_settings', [self.settings, partial(self._set_envelope_view_visible, False), self._show_clip_view])
     self._encoders = None
     self._initial_encoders = None
     self.add_mode('disabled', [])
     self.add_mode('about_to_show', [AddLayerMode(self, initial_encoder_layer), (self._show_settings_task.restart, self._show_settings_task.kill)])
     self.add_mode('enabled', [DetailViewRestorerMode(self.application()),
      AddLayerMode(self, encoder_layer),
      self._update_available_modes,
      self._settings_modes])
     self.selected_mode = 'disabled'
     self._editors = []
     self._on_detail_clip_changed.subject = self.song().view
     self._on_selected_track_changed.subject = self.song().view
コード例 #44
0
 def __init__(self, name='Transport_Control', *a, **k):
     super(SpecialTransportComponent, self).__init__(name=name, *a, **k)
     self._relative_tempo_control = None
     self._relative_tempo_fine_control = None
     self._ffwd_button = None
     self._rwd_button = None
     self._rwd_task = Task.Task()
     self._ffwd_task = Task.Task()
     self._nudge_down_button = None
     self._nudge_up_button = None
     self._last_record_quantization = RQ.rec_q_sixtenth
     self._on_is_playing_changed.subject = self.song()
     self._on_overdub_changed.subject = self.song()
     self._on_record_mode_changed.subject = self.song()
     self._on_metronome_changed.subject = self.song()
     self._on_loop_changed.subject = self.song()
     self._on_record_quantize_changed.subject = self.song()
     self._on_can_jump_to_prev_cue_changed.subject = self.song()
     self._on_can_jump_to_next_cue_changed.subject = self.song()
     self._end_undo_step_task = self._tasks.add(Task.sequence(Task.wait(1.5), Task.run(self.song().end_undo_step)))
     self._end_undo_step_task.kill()
     return
コード例 #45
0
 def __init__(self,
              msg_type,
              channel,
              identifier,
              map_mode,
              undo_step_handler=None,
              delete_handler=None,
              touch_button=None,
              *a,
              **k):
     super(TouchEncoderElement,
           self).__init__(msg_type, channel, identifier, map_mode, *a, **k)
     self._trigger_undo_step = False
     self._undo_step_open = False
     self._undo_step_handler = undo_step_handler
     self._delete_handler = delete_handler
     self._tap_count = 0
     self._tap_task = self._tasks.add(
         Task.sequence(Task.wait(consts.TAPPING_DELAY),
                       Task.run(self._reset_tapping)))
     self._tap_task.kill()
     self.set_touch_button(touch_button)
     self.set_observer(None)
コード例 #46
0
 def __init__(self, wrapped_control = None, double_press_context = None, *a, **k):
     super(DoublePressElement, self).__init__(wrapped_control=wrapped_control, *a, **k)
     self.register_control_element(self._wrapped_control)
     self._double_press_context = double_press_context
     self._double_press_task = self._tasks.add(Task.sequence(Task.wait(self.DOUBLE_PRESS_MAX_DELAY), Task.run(self.finish_single_press))).kill()
     self.request_listen_nested_control_elements()
コード例 #47
0
 def trigger_modification_task(x, y):
     trigger = partial(self._trigger_modification, (x, y), done=True)
     return self._tasks.add(Task.sequence(Task.wait(Defaults.MOMENTARY_DELAY), Task.run(trigger))).kill()
コード例 #48
0
 def __init__(self, *a, **k):
     super(ArturiaControlSurface, self).__init__(*a, **k)
     self._messages_to_send = []
     self._setup_hardware_task = self._tasks.add(Task.sequence(Task.run(self._collect_setup_messages), Task.wait(SETUP_HARDWARE_DELAY), Task.run(self._setup_hardware)))
     self._setup_hardware_task.kill()
     self._start_hardware_setup()
コード例 #49
0
 def _make_scroll_task(self, scroll_step):
     task = self._tasks.add(Task.sequence(Task.wait(self.scrolling_delay), Task.loop(Task.wait(self.scrolling_step_delay), Task.run(scroll_step))))
     task.kill()
     return task