def uiDraw(self): # draw midi mode toggle color = None if self.parentPage.midiTrackMode: color = 9 else: color = 5 outMsg = mido.Message('control_change', channel=midi.autochannel, control=98, value=color) midi.standaloneOutPort().send(outMsg) # draw selected track selectedTrack = None hightlightColor = None if self.parentPage.midiTrackMode: selectedTrack = settings[self.pageSettingsKey]['selectedMidiTrack'] hightlightColor = 9 else: selectedTrack = settings[ self.pageSettingsKey]['selectedAudioTrack'] hightlightColor = 5 for i in range(len(self.trackButtons)): color = hightlightColor if i == selectedTrack else 0 outMsg = mido.Message('control_change', channel=midi.autochannel, control=self.trackButtons[i], value=color) midi.standaloneOutPort().send(outMsg)
def uiDraw(self): for track in range(len(self.trackButtons)): color = None if self.muted[track]: color = 0 else: color = 5 outMsg = mido.Message('control_change', channel=midi.autochannel, control=self.trackButtons[track], value=color) midi.standaloneOutPort().send(outMsg)
def uiDraw(self): # draw settings shift color = None if self.parentPage.midiChannelSettingsMode: color = 3 else: color = 4 outMsg = mido.Message('control_change', channel=midi.autochannel, control=97, value=color) midi.standaloneOutPort().send(outMsg) if self.parentPage.midiChannelSettingsMode: # draw channel clear button color = 45 outMsg = mido.Message('control_change', channel=midi.autochannel, control=96, value=color) midi.standaloneOutPort().send(outMsg) # draw channel for selected track selectedTrack = None channel = None hightlightColor = None if self.parentPage.midiTrackMode: selectedTrack = settings[ self.pageSettingsKey]['selectedMidiTrack'] channel = settings['trackChannels']['midiTrackChannel'][ selectedTrack] hightlightColor = 9 else: selectedTrack = settings[ self.pageSettingsKey]['selectedAudioTrack'] channel = settings['trackChannels']['audioTrackChannel'][ selectedTrack] hightlightColor = 5 for i in range(len(self.midiChannelButtons)): color = None if i == channel: color = hightlightColor else: color = 0 outMsg = mido.Message('control_change', channel=midi.autochannel, control=self.midiChannelButtons[i], value=color) midi.standaloneOutPort().send(outMsg) else: # clear for button in self.midiChannelButtons + [96]: color = 0 outMsg = mido.Message('control_change', channel=midi.autochannel, control=button, value=color) midi.standaloneOutPort().send(outMsg)
def onCC(self, port, msg): levelControl = 46 volumeControl = 25 trackMute = 49 if port == midi.standaloneInPort(): if msg.control >= 21 and msg.control <= 28: track = msg.control - 21 channel = settings['trackChannels']['audioTrackChannel'][track] if channel is None: return outMsg = mido.Message('control_change', channel=channel, control=levelControl, value=msg.value) #outMsg = mido.Message('control_change', channel=channel, control=volumeControl, value=msg.value) midi.midiOutPort().send(outMsg) elif msg.control in self.page.trackButtons: if msg.value == 127: track = msg.control - 1 channel = settings['trackChannels']['audioTrackChannel'][track] self.page.muted[track] = not self.page.muted[track] value = None if self.page.muted[track]: value = 127 else: value = 0 outMsg = mido.Message('control_change', channel=channel, control=trackMute, value=value) midi.midiOutPort().send(outMsg) self.page.uiDraw() elif port == midi.midiInPort(): if msg.control == levelControl: channel = msg.channel value = msg.value # send midi cc to standalone port to light up fader value outMsg = mido.Message('control_change', channel=midi.autochannel, control=channel+21, value=value) midi.standaloneOutPort().send(outMsg) elif msg.control == trackMute: channel = msg.channel muted = (msg.value != 0) track = settings['trackChannels']['audioTrackChannel'].index(channel) self.page.muted[track] = muted self.page.uiDraw()
def gotoSavedSelectedPage(): # launchpad sysex 'header' headerMsg = mido.Message('sysex', data=(0, 32, 41, 2, 16)) page = settings.settings['selectedPage'] if page == 'live': outMsg = headerMsg.copy() outMsg.data += (33, 0) midi.liveOutPort().send(outMsg) else: outMsg = headerMsg.copy() outMsg.data += (33, 1) midi.liveOutPort().send(outMsg) outMsg = headerMsg.copy() if page == 'note': outMsg.data += (44, 0) elif page == 'drum': outMsg.data += (44, 1) elif page == 'fader': outMsg.data += (44, 2) elif page == 'programmer': outMsg.data += (44, 3) midi.standaloneOutPort().send(outMsg)