Skip to content

rnixx/python-rtmidi

This branch is 3 commits ahead of, 151 commits behind SpotlightKid/python-rtmidi:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4fa0c53 · Mar 1, 2023
Jan 18, 2020
Jan 27, 2021
Jan 18, 2023
Oct 26, 2022
Jun 16, 2021
Apr 14, 2020
Apr 26, 2021
Oct 4, 2018
Jan 12, 2019
Jan 27, 2021
Oct 9, 2018
Apr 26, 2021
May 7, 2021
Apr 26, 2021
Apr 10, 2020
Jan 27, 2021
Jan 27, 2021
Jan 27, 2021
Jan 27, 2021
Nov 1, 2013
Sep 16, 2016
Oct 22, 2021
Jan 27, 2021
Aug 26, 2020
Oct 8, 2020
Oct 15, 2019

Repository files navigation

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 Travis 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.6, 3.7, 3.8, and 3.9).

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

See the file LICENSE.txt 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:

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 48.4%
  • Cython 45.8%
  • Shell 2.7%
  • Makefile 2.2%
  • C 0.9%