Python wrapper for RtMidi, the lightweight, cross-platform MIDI I/O library. For Linux, Mac OS X and Windows.
On Windows, the preferred way is to use one of the precompiled binaries available from PyPI. On Linux and Mac OS X, the easiest way to install rtmidi-python is using pip:
pip install rtmidi-python
Alternatively, you can build the module from source as follows:
python setup.py install
If you want to build from the Cython source, make sure that you have a recent version of Cython (>= 0.17), and run:
python setup.py install --from-cython
rtmidi-python uses the same API as RtMidi, only reformatted to comply with PEP-8, and with small changes to make it a little more pythonic.
import rtmidi_python as rtmidi midi_out = rtmidi.MidiOut() for port_name in midi_out.ports: print port_name
import rtmidi_python as rtmidi midi_out = rtmidi.MidiOut() midi_out.open_port(0) midi_out.send_message([0x90, 48, 100]) # Note on midi_out.send_message([0x80, 48, 100]) # Note off
import rtmidi_python as rtmidi midi_in = rtmidi.MidiIn() midi_in.open_port(0) while True: message, delta_time = midi_in.get_message() if message: print message, delta_time
Note that the signature of get_message()
differs from the original
RtMidi API: It returns a tuple instead of using a return parameter.
import rtmidi_python as rtmidi def callback(message, time_stamp): print message, time_stamp midi_in = rtmidi.MidiIn() midi_in.callback = callback midi_in.open_port(0) # do something else here (but don't quit)
Note that the signature of the callback differs from the original RtMidi
API: message
is now the first parameter, like in the tuple returned by
get_message()
.
rtmidi-python is licensed under the MIT License, see LICENSE.
It uses RtMidi, licensed under a modified MIT License, see RtMidi/RtMidi.h.