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
 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
    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()
    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()
 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()
    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()
Beispiel #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()
 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, 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
Beispiel #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)
    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 = []
 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
Beispiel #13
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()
    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 = []
Beispiel #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
    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 = []
 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()
Beispiel #19
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()
Beispiel #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()
 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()
 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)
Beispiel #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()
 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
Beispiel #25
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
     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()
 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)
Beispiel #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
Beispiel #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()
 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()
Beispiel #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)
Beispiel #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
Beispiel #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()
 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)
Beispiel #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()
Beispiel #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)
 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())
Beispiel #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
 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
Beispiel #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
Beispiel #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()
Beispiel #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))
 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
Beispiel #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
 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
 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)
 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()
 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()
 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()
 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