Backends¶
Choosing a Backend¶
Mido comes with five backends:
- RtMidi is the recommended backends. It has all the features of the other ones and more and is usually easier to install.
- PortMidi was the default backend up until 1.2. It
uses the
portmidi
shared library and can be difficult to install on some systems. - Pygame uses the
pygame.midi
. - rtmidi-python uses the
rtmidi_python
package, an alternative wrapper for PortMidi. It is currently very basic but easier to install on some Windows systems. - Amidi is an experimental backend for Linux/ALSA
that uses the command
amidi
to send and receive messages.
If you want to use another than the RtMidi you can override this with
the MIDO_BACKEND
environment variable, for example:
$ MIDO_BACKEND=mido.backends.portmidi ./program.py
Alternatively, you can set the backend from within your program:
>>> mido.set_backend('mido.backends.portmidi')
>>> mido.backend
<backend mido.backends.portmidi (not loaded)>
This will override the environment variable.
If you want to use more than one backend at a time, you can do:
rtmidi = mido.Backend('mido.backends.rtmidi')
portmidi = mido.Backend('mido.backends.portmidi')
input = rtmidi.open_input()
output = portmidi.open_output()
for message in input:
output.send(message)
The backend will not be loaded until you call one of the open_
or
get_
methods. You can pass load=True
to have it loaded right
away.
If you pass use_environ=True
the module will use the environment
variables MIDO_DEFAULT_INPUT
etc. for default ports.
Environment Variables¶
You can override the backend’s choice of default ports with these three environment variables:
MIDO_DEFAULT_INPUT
MIDO_DEFAULT_OUTPUT
MIDO_DEFAULT_IOPORT
For example:
$ MIDO_DEFAULT_INPUT='SH-201' python program.py
or:
$ export MIDO_DEFAULT_OUTPUT='Integra-7'
$ python program1.py
$ python program2.py