diff options
Diffstat (limited to 'midi.py')
-rw-r--r-- | midi.py | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -0,0 +1,47 @@ +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() + +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): + print(f"outport: {_outport}") + if _outport: + msg = _light_ctrl_msg.copy(note=button, velocity=colour) + 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]() |