pretty_midi Alternatives
Looking for an alternative to pretty_midi? It's utility library for handling MIDI data intuitively for analysis and MIR workflows. Below are 8 other midi tools tools for making music with code — how each compares, and when it's the better choice. Every option is verified against its own source.
| Alternative | Language | License | Best for |
|---|---|---|---|
| MidoLibrary for working with MIDI messages, ports, and files via convenient message objects.↔ head-to-head vs pretty_midi | Python | MIT | Reading, writing, and sending/receiving raw MIDI messages and files. |
| pyFluidSynthPython bindings for FluidSynth to render MIDI notes through SoundFont instruments. | Python | LGPL-2.1-or-later | Programmatically playing MIDI/notes through SoundFont software synthesis. |
| python-rtmidiPython binding to the RtMidi C++ library for real-time MIDI input and output. | Python | MIT | Sending and receiving real-time MIDI messages to hardware or software ports. |
| html-midi-playerWeb components (<midi-player>, <midi-visualizer>) for playing and visualizing MIDI files on a page. | HTML/JavaScript | BSD-2-Clause | Embedding a styled, interactive MIDI player and visualizer directly in HTML. |
| MidiWriterJSTypeScript library for programmatically building and exporting multi-track Standard MIDI files. | JavaScript | MIT | Generating downloadable MIDI files from code in Node or the browser. |
| ScribbletuneWrite musical patterns as JS strings and export them to MIDI files or play them live via Tone.js. | JavaScript | MIT | Generating MIDI clips and progressions programmatically from terse JS patterns. |
| WebMidi.jsFriendly wrapper over the Web MIDI API for sending and receiving MIDI in the browser and Node. | JavaScript | Apache-2.0 | Building browser apps that talk to hardware or virtual MIDI instruments. |
| MIDIUtilinactivePure-Python library for programmatically creating and writing multi-track MIDI files. | Python | MIT | Simple, dependency-free generation of MIDI files from code. |
Notable picks
Mido
Library for working with MIDI messages, ports, and files via convenient message objects. Best for reading, writing, and sending/receiving raw MIDI messages and files. Versus pretty_midi: it's also written in Python, so switching is low-friction. Compare head-to-head →
pyFluidSynth
Python bindings for FluidSynth to render MIDI notes through SoundFont instruments. Best for programmatically playing MIDI/notes through SoundFont software synthesis. Versus pretty_midi: it's also written in Python, so switching is low-friction.
python-rtmidi
Python binding to the RtMidi C++ library for real-time MIDI input and output. Best for sending and receiving real-time MIDI messages to hardware or software ports. Versus pretty_midi: it's also written in Python, so switching is low-friction.
html-midi-player
Web components (<midi-player>, <midi-visualizer>) for playing and visualizing MIDI files on a page. Best for embedding a styled, interactive MIDI player and visualizer directly in HTML.
MidiWriterJS
TypeScript library for programmatically building and exporting multi-track Standard MIDI files. Best for generating downloadable MIDI files from code in Node or the browser.
Related Python tools
Other Python tools worth a look, from adjacent categories.