Mido is a library for working with MIDI messages and ports. It’s
designed to be as straight forward and Pythonic as possible:
>>> import mido
>>> msg = mido.Message('note_on', note=60)
[144, 60, 64]
<message note_on channel=2 note=60 velocity=64 time=0>
with mido.open_input('LinnStrument') as inport:
for msg in inport:
port = mido.open_output()
mid = mido.MidiFile('song.mid')
for msg in mid.play():
Full documentation at https://mido.readthedocs.io/
- works in Python 2 and 3.
- convenient message objects.
- supports RtMidi, PortMidi and Pygame. New backends are easy to
- full support for all 18 messages defined by the MIDI standard.
- standard port API allows all kinds of input and output ports to be
used interchangeably. New port types can be written by subclassing
and overriding a few methods.
- includes a reusable MIDI parser.
- full support for MIDI files (read, write, create and play) with
complete access to every message in the file, including all common
- can read and write SYX files (binary and plain text).
- implements (somewhat experimental) MIDI over TCP/IP with socket
ports. This allows for example wireless MIDI between two
- includes programs for playing MIDI files, listing ports and
serving and forwarding ports over a network.
1.2 is the third stable release.
Mido targets Python 2.7 and 3.2.
pip install mido
If you want to use ports:
pip install python-rtmidi
See docs/backends/ for other backends.
Mido is released under the terms of the MIT license.
TODO: Brief introduction on what you do with files - including link to relevant help section.