def __init__(self, scrollable_list = None, data_sources = tuple(), *a, **k): super(ListComponent, self).__init__(*a, **k) self._data_sources = data_sources self._activation_task = Task.Task() self._action_on_scroll_task = Task.Task() self._scrollable_list = None self._scroller = self.register_component(ScrollComponent()) self._pager = self.register_component(ScrollComponent()) self.last_action_item = lambda : self._last_action_item self.item_formatter = DefaultItemFormatter() for c in (self._scroller, self._pager): for button in (c.scroll_up_button, c.scroll_down_button): button.color = 'List.ScrollerOn' button.pressed_color = None button.disabled_color = 'List.ScrollerOff' if scrollable_list == None: self.scrollable_list = ActionList(num_visible_items=len(data_sources)) else: self.scrollable_list = scrollable_list self._scrollable_list.num_visible_items = len(data_sources) self._delay_activation = BooleanContext() self._selected_index_float = 0.0 self._in_encoder_selection = BooleanContext(False) self._execute_action_task = self._tasks.add(Task.sequence(Task.delay(1), Task.run(self._execute_action))) self._execute_action_task.kill() return
def __init__(self, scrollable_list=None, data_sources=tuple(), *a, **k): super(ListComponent, self).__init__(*a, **k) self._data_sources = data_sources self._activation_task = Task.Task() self._action_on_scroll_task = Task.Task() self._scrollable_list = None self._scroller = self.register_component(ScrollComponent()) self._pager = self.register_component(ScrollComponent()) self.last_action_item = lambda: self._last_action_item self.item_formatter = DefaultItemFormatter() for c in (self._scroller, self._pager): for button in (c.scroll_up_button, c.scroll_down_button): button.color = 'List.ScrollerOn' button.pressed_color = None button.disabled_color = 'List.ScrollerOff' if scrollable_list == None: self.scrollable_list = ActionList( num_visible_items=len(data_sources)) else: self.scrollable_list = scrollable_list self._scrollable_list.num_visible_items = len(data_sources) self._delay_activation = BooleanContext() self._selected_index_float = 0.0 self._in_encoder_selection = BooleanContext(False) self._execute_action_task = self._tasks.add( Task.sequence(Task.delay(1), Task.run(self._execute_action))) self._execute_action_task.kill()
def __init__(self, playing_clip_above_layer=None, playing_clip_below_layer=None, *a, **k): super(SelectPlayingClipComponent, self).__init__(*a, **k) self._update_mode_task = self._tasks.add( Task.sequence(Task.delay(1), Task.run(self._update_mode))) self._update_mode_task.kill() self._notification = self.register_component( NotificationComponent(notification_time=-1, is_enabled=False)) self.add_mode('default', None) self.add_mode('above', [ AddLayerMode(self, playing_clip_above_layer), self._notification, partial(self._show_notification, MessageBoxText.PLAYING_CLIP_ABOVE_SELECTED_CLIP) ]) self.add_mode('below', [ AddLayerMode(self, playing_clip_below_layer), self._notification, partial(self._show_notification, MessageBoxText.PLAYING_CLIP_BELOW_SELECTED_CLIP) ]) self.selected_mode = 'default' self._on_detail_clip_changed.subject = self.song().view self._on_playing_slot_index_changed.subject = self.song( ).view.selected_track
def __init__(self, selection=None, browser_component=None, browser_mode=None, browser_hotswap_mode=None, insert_left=False, *a, **k): super(CreateDeviceComponent, self).__init__(*a, **k) self._selection = selection self._add_effect_mode = BrowserAddEffectMode( selection=selection, browser=self.application().browser, application_view=self.application().view, insert_left=insert_left) self._create_device_modes = self.register_component(ModesComponent()) self._create_device_modes.add_mode('create', [ SetAttributeMode(browser_component, 'do_load_item', self._do_browser_load_item), self._add_effect_mode, browser_mode, browser_component.reset_load_memory ]) self._create_device_modes.add_mode( 'hotswap', [browser_hotswap_mode, browser_mode]) self._go_to_hotswap_task = self._tasks.add( Task.sequence(Task.delay(1), Task.run(self._go_to_hotswap))) self._go_to_hotswap_task.kill()
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 _on_length_release(self): song = self.song() slot = song_selected_slot(song) if slot == None: return clip = slot.clip if self._length_press_state is not None: press_slot, press_position = self._length_press_state if press_slot == slot and self._length_should_be_fixed() and slot.is_recording and not clip.is_overdubbing: length, _ = self._get_selected_length() one_bar = 4.0 * song.signature_numerator / song.signature_denominator loop_end = int(press_position / one_bar) * one_bar loop_start = loop_end - length if loop_start >= 0.0: clip.loop_end = loop_end clip.end_marker = loop_end clip.loop_start = loop_start clip.start_marker = loop_start self._tasks.add( Task.sequence( Task.delay(0), Task.run(partial(slot.fire, force_legato=True, launch_quantization=_Q.q_no_q)), ) ) self.song().overdub = False self._fixed_length.is_active = False self._length_press_state = None
def _on_length_release(self): song = self.song() slot = song_selected_slot(song) if slot == None: return clip = slot.clip if self._length_press_state is not None: press_slot, press_position = self._length_press_state if press_slot == slot and self._length_should_be_fixed( ) and slot.is_recording and not clip.is_overdubbing: length, _ = self._get_selected_length() one_bar = 4.0 * song.signature_numerator / song.signature_denominator loop_end = int(press_position / one_bar) * one_bar loop_start = loop_end - length if loop_start >= 0.0: clip.loop_end = loop_end clip.end_marker = loop_end clip.loop_start = loop_start clip.start_marker = loop_start self._tasks.add( Task.sequence( Task.delay(0), Task.run( partial(slot.fire, force_legato=True, launch_quantization=_Q.q_no_q)))) self.song().overdub = False self._fixed_length.is_active = False self._length_press_state = None
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, c_instance): super(LaunchControl, self).__init__(c_instance) with self.component_guard(): self._init_mixer() self._init_session() self._init_device() self._init_modes() self._refresh_state_task = self._tasks.add(Task.sequence(Task.delay(3), Task.run(self._do_refresh_state))) self._refresh_state_task.kill() self.log_message(u'Launch Control script loaded')
def __init__(self, c_instance): super(LaunchControl, self).__init__(c_instance) with self.component_guard(): self._init_mixer() self._init_session() self._init_device() self._init_modes() self._refresh_state_task = self._tasks.add(Task.sequence(Task.delay(3), Task.run(self._do_refresh_state))) self._refresh_state_task.kill() self.log_message('Launch Control script loaded')
def __init__(self, playing_clip_above_layer = None, playing_clip_below_layer = None, *a, **k): super(SelectPlayingClipComponent, self).__init__(*a, **k) self._update_mode_task = self._tasks.add(Task.sequence(Task.delay(1), Task.run(self._update_mode))) self._update_mode_task.kill() self._notification = self.register_component(NotificationComponent(notification_time=-1, is_enabled=False)) self.add_mode('default', None) self.add_mode('above', [AddLayerMode(self, playing_clip_above_layer), self._notification, partial(self._show_notification, MessageBoxText.PLAYING_CLIP_ABOVE_SELECTED_CLIP)]) self.add_mode('below', [AddLayerMode(self, playing_clip_below_layer), self._notification, partial(self._show_notification, MessageBoxText.PLAYING_CLIP_BELOW_SELECTED_CLIP)]) self.selected_mode = 'default' self._on_detail_clip_changed.subject = self.song().view self._on_playing_slot_index_changed.subject = self.song().view.selected_track
def __init__(self, selection = None, browser_mode = None, browser_component = None, browser_hotswap_mode = None, *a, **k): super(CreateInstrumentTrackComponent, self).__init__(*a, **k) self._selection = selection self._with_browser_modes = self.register_component(ModesComponent()) self._with_browser_modes.add_mode('create', [self._prepare_browser, SetAttributeMode(self.application().browser, 'filter_type', Live.Browser.FilterType.instrument_hotswap), SetAttributeMode(browser_component, 'do_load_item', self._do_browser_load_item), browser_mode, browser_component.reset_load_memory]) self._with_browser_modes.add_mode('hotswap', [browser_hotswap_mode, browser_mode]) self._go_to_hotswap_task = self._tasks.add(Task.sequence(Task.delay(1), Task.run(self._go_to_hotswap))) self._go_to_hotswap_task.kill()
def __init__(self, header, *a, **k): super(DisplayLineElement, self).__init__(*a, **k) self._header = header self._current_line = list(self.blank_line) self._momentary_line = [] self._last_sent_message = None self._show_message_is_priority = False self._send_message_task = self._tasks.add(Task.run(self._send_message)) self._send_message_task.kill() self._auto_revert_task = self._tasks.add( Task.sequence(Task.delay(15), self.revert)) self._auto_revert_task.kill() return
def _show_selected_track(self): self.log('_show_selected_track: ' + str(self._showing_selected) + ', index: ' + str(self._mixer._selected_track_index)) self._showing_selected = not self._showing_selected volume_cc = 0 if self._bit_14 else 1 if self._mixer._selected_track_index != -1: curr_val = self._mixer._channel_strips[ self._mixer. _selected_track_index]._track.mixer_device.volume.value self._do_send_midi( (176 + MIXER_MODE, volume_cc + self._mixer._selected_track_index, int(math.floor(curr_val * 127.0)) if self._showing_selected else 0)) self._show_selected_task = self._tasks.add( Task.sequence(Task.delay(2), Task.run(self._show_selected_track)))
def __init__(self, scrollable_list = None, data_sources = tuple(), *a, **k): super(ListComponent, self).__init__(*a, **k) self._data_sources = data_sources self._activation_task = Task.Task() self._action_on_scroll_task = Task.Task() self._scrollable_list = None self._scroller = self.register_component(ScrollComponent()) self.last_action_item = lambda : self._last_action_item if scrollable_list == None: self.scrollable_list = ActionList(num_visible_items=len(data_sources)) else: self.scrollable_list = scrollable_list self._scrollable_list.num_visible_items = len(data_sources) self._delay_activation = BooleanContext() self._selected_index_float = 0.0 self._in_encoder_selection = BooleanContext(False) self._execute_action_task = self._tasks.add(Task.sequence(Task.delay(1), Task.run(self._execute_action))) self._execute_action_task.kill()
def __init__(self, scrollable_list=None, data_sources=tuple(), *a, **k): super(ListComponent, self).__init__(*a, **k) self._data_sources = data_sources self._activation_task = Task.Task() self._action_on_scroll_task = Task.Task() self._scrollable_list = None self._scroller = self.register_component(ScrollComponent()) self.last_action_item = lambda: self._last_action_item if scrollable_list == None: self.scrollable_list = ActionList( num_visible_items=len(data_sources)) else: self.scrollable_list = scrollable_list self._scrollable_list.num_visible_items = len(data_sources) self._delay_activation = BooleanContext() self._selected_index_float = 0.0 self._in_encoder_selection = BooleanContext(False) self._execute_action_task = self._tasks.add( Task.sequence(Task.delay(1), Task.run(self._execute_action))) self._execute_action_task.kill()
def schedule_message(self, delay_in_ticks, callback, parameter=None): u""" Schedule a callback to be called after a specified time """ assert delay_in_ticks > 0 assert callable(callback) if not self._is_sending_scheduled_messages: delay_in_ticks -= 1 message_reference = [None] def message(delta): if parameter: callback(parameter) else: callback() self._remaining_scheduled_messages.remove(message_reference) message_reference[0] = message self._remaining_scheduled_messages.append(message_reference) if delay_in_ticks: self._task_group.add( Task.sequence(Task.delay(delay_in_ticks), message)) else: self._task_group.add(message) return
def __init__(self, *a, **k): super(ArmingTrackScrollComponent, self).__init__(*a, **k) self._arming_task = self._tasks.add( Task.sequence(Task.delay(1), self._arm_task)) self._arming_task.kill()
def __init__(self, *a, **k): super(ArmingTrackScrollComponent, self).__init__(*a, **k) self._arming_task = self._tasks.add(Task.sequence(Task.delay(1), self._arm_task)) self._arming_task.kill()