class TransportComponent(TransportComponentBase):
    play_button = ButtonControl(color='Transport.PlayOff')
    jump_encoder = EncoderControl()
    loop_start_encoder = EncoderControl()

    def __init__(self, *a, **k):
        super(TransportComponent, self).__init__(*a, **k)
        self.__on_signature_numerator_changed.subject = self.song
        self.__on_signature_denominator_changed.subject = self.song
        self._session_record_toggle = ToggleComponent('session_record',
                                                      self.song,
                                                      parent=self)
        self._calculate_distance_to_move()

    def set_play_button(self, button):
        self.play_button.set_control_element(button)

    def set_session_record_button(self, button):
        self._session_record_toggle.set_toggle_button(button)

    @play_button.pressed
    def play_button(self, _):
        self.song.start_playing()

    @jump_encoder.value
    def jump_encoder(self, value, _):
        self.song.jump_by(value * self._distance_to_move)

    @loop_start_encoder.value
    def loop_start_encoder(self, value, _):
        self.song.loop_start = max(
            0.0, self.song.loop_start + value * self._distance_to_move)

    @listens('signature_numerator')
    def __on_signature_numerator_changed(self):
        self._calculate_distance_to_move()

    @listens('signature_denominator')
    def __on_signature_denominator_changed(self):
        self._calculate_distance_to_move()

    def _calculate_distance_to_move(self):
        self._distance_to_move = 4.0 / self.song.signature_denominator * self.song.signature_numerator * 64

    def _update_button_states(self):
        super(TransportComponent, self)._update_button_states()
        self.play_button.color = self._play_toggle.toggled_color if self._play_toggle.is_toggled else self._play_toggle.untoggled_color

    def _update_stop_button_color(self):
        self._stop_button.color = self._play_toggle.untoggled_color if self._play_toggle.is_toggled else self._play_toggle.toggled_color
コード例 #2
0
 def __init__(self, *a, **k):
     super(TransportComponent, self).__init__(*a, **k)
     self.__on_signature_numerator_changed.subject = self.song
     self.__on_signature_denominator_changed.subject = self.song
     self._session_record_toggle = ToggleComponent('session_record', self.song, parent=self)
     self._calculate_distance_to_move()
コード例 #3
0
 def __init__(self, *a, **k):
     super(TransportComponent, self).__init__(*a, **k)
     self._punch_in_toggle = ToggleComponent('punch_in', self.song, parent=self)
     self._punch_out_toggle = ToggleComponent('punch_out', self.song, parent=self)
コード例 #4
0
 def __init__(self, *a, **k):
     super(TransportComponent, self).__init__(*a, **k)
     self._punch_in_toggle, self._punch_out_toggle = self.register_components(
         ToggleComponent('punch_in', self.song),
         ToggleComponent('punch_out', self.song))