The PortMidi backend requires the
portmidi shared library.
apt install libportmidi-dev
brew install portmidi
port install portmidi
The backend will look for:
portmidi.so (Linux) portmidi.dll (Windows) portmidi.dynlib (macOS)
Can send but doesn’t receive
PortMidi has no callback mechanism, so callbacks are implemented in Python with threads. Each port with a callback has a dedicated thread doing blocking reads from the device.
Due to limitations in PortMidi the port list will not be up-to-date if there are any ports open. (The refresh is implemented by re-initalizing PortMidi which would break any open ports.)