import mido lp_key = [[j for j in range(i * 16, i * 16 + 8)] for i in range(0,8)] GREEN = 124 YELLOW = 126 RED = 3 _light_ctrl_msg = mido.Message('note_on', channel=0) _inport = None _outport = None _callbacks_on_press = dict() _callbacks_on_release = dict() _debug = False def midi_init(device_name="Launchpad Mini MIDI 1"): global _inport, _outport _inport = mido.open_input(device_name) _outport = mido.open_output(device_name) _inport.callback = _callback def button_on(button, colour): if _debug: print(f"outport: {_outport}") if _outport: msg = _light_ctrl_msg.copy(note=button, velocity=colour) if _debug: print(f"sending {msg}") _outport.send(msg) def button_off(button): if _outport: msg = _light_ctrl_msg.copy(note=button, velocity=0) _outport.send(msg) def on_press(button, function): _callbacks_on_press[button] = function def on_release(button, function): _callbacks_on_release[button] = function def _callback(msg): if msg.velocity == 0: if msg.note in _callbacks_on_release: _callbacks_on_release[msg.note]() elif msg.velocity == 127: if msg.note in _callbacks_on_press: _callbacks_on_press[msg.note]()