# 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