MIDIUtil Alternatives
Looking for an alternative to MIDIUtil? It's pure-Python library for programmatically creating and writing multi-track MIDI files. 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.
Heads up: MIDIUtil is no longer actively maintained (last activity 2018), so a maintained alternative below may be the safer long-term pick.
| Alternative | Language | License | Best for |
|---|---|---|---|
| MidoLibrary for working with MIDI messages, ports, and files via convenient message objects. | Python | MIT | Reading, writing, and sending/receiving raw MIDI messages and files. |
| pretty_midiUtility library for handling MIDI data intuitively for analysis and MIR workflows. | Python | MIT | MIR/ML preprocessing: extracting features and piano rolls from MIDI 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. |
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 MIDIUtil: it's also written in Python, so switching is low-friction; unlike MIDIUtil it's actively maintained.
pretty_midi
Utility library for handling MIDI data intuitively for analysis and MIR workflows. Best for mIR/ML preprocessing: extracting features and piano rolls from MIDI files. Versus MIDIUtil: it's also written in Python, so switching is low-friction; unlike MIDIUtil it's actively maintained.
pyFluidSynth
Python bindings for FluidSynth to render MIDI notes through SoundFont instruments. Best for programmatically playing MIDI/notes through SoundFont software synthesis. Versus MIDIUtil: it's also written in Python, so switching is low-friction; unlike MIDIUtil it's actively maintained.
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 MIDIUtil: it's also written in Python, so switching is low-friction; unlike MIDIUtil it's actively maintained.
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. Versus MIDIUtil: unlike MIDIUtil it's actively maintained.
Related Python tools
Other Python tools worth a look, from adjacent categories.