Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 4
0
 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))
         )
Ejemplo n.º 6
0
 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 __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()
Ejemplo n.º 9
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)))
Ejemplo n.º 10
0
 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')
Ejemplo n.º 11
0
 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
Ejemplo n.º 13
0
 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()
Ejemplo n.º 14
0
 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
Ejemplo n.º 15
0
 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()
Ejemplo n.º 18
0
    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()