GitPedia

Python rtmidi

Python bindings for the cross-platform MIDI I/O library RtMidi

From SpotlightKid·Updated June 15, 2026·View on GitHub·

A Python binding for the RtMidi C++ library implemented using Cython. The project is written primarily in Cython, distributed under the Other license, first published in 2015. Key topics include: alsa, coremidi, jack-midi, midi, python.

Latest release: 1.5.8
November 20, 2023View Changelog →

Welcome to python-rtmidi!

A Python binding for the RtMidi C++ library implemented using Cython.

Latest version
Project status
MIT License
Python versions
Distribution format
CI status

Overview

RtMidi is a set of C++ classes which provides a concise and simple,
cross-platform API (Application Programming Interface) for realtime MIDI
input / output across Linux (ALSA & JACK), macOS / OS X (CoreMIDI & JACK), and
Windows (MultiMedia System) operating systems.

python-rtmidi is a Python binding for RtMidi implemented using Cython and
provides a thin wrapper around the RtMidi C++ interface. The API is basically
the same as the C++ one but with the naming scheme of classes, methods and
parameters adapted to the Python PEP-8 conventions and requirements of the
Python package naming structure. python-rtmidi supports Python 3 (3.9+).

The documentation provides installation instructions, a history of changes
per release and an API reference.

See the file LICENSE.md about copyright and usage terms.

The source code repository and issue tracker are hosted on GitHub:

https://github.com/SpotlightKid/python-rtmidi.

Usage example

Here's a quick example of how to use python-rtmidi to open the first
available MIDI output port and send a middle C note on MIDI channel 1:

python
import time import rtmidi midiout = rtmidi.MidiOut() available_ports = midiout.get_ports() if available_ports: midiout.open_port(0) else: midiout.open_virtual_port("My virtual output") with midiout: note_on = [0x90, 60, 112] # channel 1, middle C, velocity 112 note_off = [0x80, 60, 0] midiout.send_message(note_on) time.sleep(0.5) midiout.send_message(note_off) time.sleep(0.1) del midiout

More usage examples can be found in the examples and tests directories of
the source repository.

Contributors

Showing top 11 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from SpotlightKid/python-rtmidi via the GitHub API.Last fetched: 6/28/2026