skip to navigation
skip to content

mido 1.2.8

MIDI Objects for Python

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)
>>> msg.note
>>> msg.bytes()
[144, 60, 64]
>>> msg.copy(channel=2)
<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

Full documentation at

Main Features

  • works in Python 2 and 3.
  • convenient message objects.
  • supports RtMidi, PortMidi and Pygame. New backends are easy to write.
  • 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 meta messages.
  • 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 computers.
  • 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.


Ole Martin Bjorndalen -

File Type Py Version Uploaded on Size
mido-1.2.8-py2.py3-none-any.whl (md5) Python Wheel py2.py3 2017-06-30 68KB
mido-1.2.8.tar.gz (md5) Source 2017-06-30 91KB