import mido class MidiWrapper: def __init__(self): self._inPort = None self._outPort = None def connect(self, deviceName, callback): if self._inPort is None and self._outPort is None: self._inPort = mido.open_input(deviceName) self._inPort.callback = callback self._outPort = mido.open_output(deviceName) def disconnect(self): if self._inPort is not None: self._inPort.close() self._inPort = None if self._outPort is not None: self._outPort.reset() self._outPort.close() self._outPort = None def sendMessage(self, note, velocity, channel): if self._outPort is not None: msg = mido.Message('note_on', channel=channel, velocity=velocity, note=note) self._outPort.send(msg)