def _recolor_mixer_track(self, index): if index != 0: for i in range(channels.channelCount()): if channels.getTargetFxTrack(i) == index: mixer.setTrackColor(index, channels.getChannelColor(i)) return mixer.setTrackColor(index, -10261391)
def _next_free_mixer_track(self): last_track = 0 for i in range(channels.channelCount()): if i == channels.selectedChannel(): # Skip the assignment for the channel we are assigning. continue last_track = max(last_track, channels.getTargetFxTrack(i)) return last_track + 1
def sync_current_color(unused_param_value): """Sync channel color""" selected = channels.selectedChannel() if selected < 0: return mixer_index = channels.getTargetFxTrack(selected) if mixer_index <= 0: return color = channels.getChannelColor(selected) mixer.setTrackColor(mixer_index, color)
def sync_all_colors(unused_param_value): """Sync all colors""" num_channels = channels.channelCount() for i in range(num_channels): color = channels.getChannelColor(i) mixer_index = channels.getTargetFxTrack(i) if mixer_index <= 0: # Nothing to sync continue mixer.setTrackColor(mixer_index, color)
def OnUpdateTargetMixerTrack(self, delta): max_track_idx = mixer.trackCount() - 2 # One of the track is a control track prev_track = channels.getTargetFxTrack(channels.selectedChannel()) target_track = self.circular(0, max_track_idx, prev_track + delta) # Remember to unset the name of the previous pointed to track. mixer.setTrackNumber(target_track, midi.curfxMinimalLatencyUpdate) mixer.linkTrackToChannel(midi.ROUTE_ToThis) channel_idx = self._channel_with_route_to_mixer_track(prev_track) if channel_idx < 0: mixer.setTrackName(prev_track, '') elif mixer.getTrackName(prev_track) == mixer.getTrackName(target_track): mixer.setTrackName(prev_track, channels.getChannelName(channel_idx)) if target_track == 0: mixer.setTrackName(target_track, '')
def mixerTrackSelect(channelNum): mixer.deselectAll() mixer.selectTrack(channels.getTargetFxTrack(channelNum))
def _channel_with_route_to_mixer_track(self, track): max_channel = channels.channelCount() for i in range(max_channel): if channels.getTargetFxTrack(i) == track: return i return -1
def OnMixerTrackKnobPress(self): if not channels.getTargetFxTrack(channels.selectedChannel()): track = self._next_free_mixer_track() self.OnUpdateTargetMixerTrack(track) else: self._toggle_all_mixer_plugins()
def _toggle_all_mixer_plugins(self): mixer_track = channels.getTargetFxTrack(channels.selectedChannel()) mixer.setTrackNumber(mixer_track)
def get_target_mixer_track(): track = channels.getTargetFxTrack(channels.selectedChannel()) return '%d' % track if track > 0 else 'MASTER'
def selectMixerTrackChannel(self, track_index): current = channels.channelNumber() count = channels.channelCount() return self.cycleChannels( current, count, lambda i: channels.getTargetFxTrack(i) == track_index)