The Patchbay_

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.

AlternativeLanguageLicenseBest for
MidoLibrary for working with MIDI messages, ports, and files via convenient message objects.PythonMITReading, writing, and sending/receiving raw MIDI messages and files.
pretty_midiUtility library for handling MIDI data intuitively for analysis and MIR workflows.PythonMITMIR/ML preprocessing: extracting features and piano rolls from MIDI files.
pyFluidSynthPython bindings for FluidSynth to render MIDI notes through SoundFont instruments.PythonLGPL-2.1-or-laterProgrammatically playing MIDI/notes through SoundFont software synthesis.
python-rtmidiPython binding to the RtMidi C++ library for real-time MIDI input and output.PythonMITSending 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/JavaScriptBSD-2-ClauseEmbedding a styled, interactive MIDI player and visualizer directly in HTML.
MidiWriterJSTypeScript library for programmatically building and exporting multi-track Standard MIDI files.JavaScriptMITGenerating 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.JavaScriptMITGenerating 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.JavaScriptApache-2.0Building browser apps that talk to hardware or virtual MIDI instruments.

Notable picks

Mido Python · MIT

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 Python · MIT

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 · LGPL-2.1-or-later

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 · MIT

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 HTML/JavaScript · BSD-2-Clause

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.

AbjadACE-StepAmphionaubioAudioCraft (MusicGen)
← MIDIUtil overviewAll midi tools tools