Quick! Send a MIDI control change message! Or some obscure parameter!

Well, sometimes typing something is the easiest way to do things. And that’s why Geert Bevin’s new, free and open source tool SendMIDI is invaluable. Sorry to nerd out completely here, but I suspect this is going to be way more relevant to my daily life than anything coming out of NAMM this week.

In this case, whether you know much about how to use a command line or not, there’s almost certainly no faster way of performing basic MIDI tasks. Anyone working with hardware is certain to want one. (Someone I suspect will make their own little standalone MIDI tool by connecting a Raspberry Pi to a little keyboard and carry it around like a MIDI terminal.)

The commands are simple and obvious and easy to remember once you try them. Installation is dead-simple. Every OS is supported – build it yourself, install with Homebrew on macOS, or – the easiest method – grab a pre-built binary for Windows, Mac, or Linux.

And now with version 1.0.5, the whole thing is eminently usable and supports more or less the entire MIDI spec, minus MIDI Time Code (which you wouldn’t want to send this way anyway).

So, now troubleshooting, sending obscure parameter changes, and other controls is simpler than ever. It’s a must for hardware lovers.

Developers, that support for all operating systems is also evidence of how easy the brilliant open source C++ JUCE framework makes building. The ProJucer tool does all the magic. “But wait, I thought JUCE was for making ugly non-native GUIs,” I’m sure some people are saying. No, actually, that’s wrong on two counts. One, JUCE doesn’t necessarily have anything to do with GUIs; it’s a full-featured multimedia framework focused on music, and this tool shows your end result might not have a GUI at all. Two, if you’ve seen an ugly UI, that’s the developer’s fault, not JUCE’s – and very often you’ve seen beautiful GUIs built in JUCE, but as a result didn’t know that’s how they were built.

But anyone should grab this, seriously.


  • Armando

    “Someone I suspect will make their own little standalone MIDI tool by connecting a Raspberry Pi to a little keyboard and carry it around like a MIDI terminal.”

    You literally read my mind before I even got to that line. Literally word for word. That’s what I was thinking about doing before I read the post. Thanks for the heads up!

  • D

    You Beauty.

    Single tool doing the job well following 1970s Unix Philosophy.

  • J.R.

    Some of this is available via the Bus Pirate, even hooking up to an oscilloscope, all from a terminal: https://youtu.be/ICzDtjcUjbs

    • D

      this fails the buying stuff I don’t need to impress people I don’t like test

  • James Britt / Neurogami

    Command-line device interaction is very handy. That’s why I wrote midi-repl (https://github.com/Neurogami/midi-repl ) and osc-repl (https://github.com/Neurogami/osc-repl ) a few years ago.

    I’ve been using osc-repl to control complex operations in Reaper from the command line. Very handy for mixing, comping, and so on.

    • cpc464freak

      “)” at end of your link URLs, causing a 404.

      • James Britt / Neurogami

        DIsqus needs to fix their URL parsing code when auto-linking text.

        But that will take forever, so I edited my comment. 🙂

  • Div Slomin

    Blowing my own horn (program 60?)…
    Free command line MIDI utilities including a very similar implementation of sendmidi, since 2003.

    • cpc464freak

      Nice and almost no dependencies.

    • James Britt / Neurogami

      Very interesting. (Side note: that font makes it painful to read so much text. )

      I will check this out. Thanks!

  • Benjy

    For us non old people (sorry old people) what would be the use or application for this? Say I had it running on a raspberry pi, or on my laptop, what would be the general use? what can it do that modern tools cannot? and what would the benefits be?

    • James Britt / Neurogami

      I wrote a program (in Processing) that generated graphics based on MIDI input. The MIDI would be coming from Renoise; I added a special track to my song to send out MIDI notes in sync with the music to drive the visuals.

      Different notes/instruments would have different effects in the Processing program. To test things out, and to experiment, I needed to send notes from a fairly wide octave range and different instruments. I could plausibly have used an actual MIDI controller, or done this from Renoise itself, but it was so much easier for me to be able to just type a few characters and hit send to do the same thing. I had complete control over note, instrument, velocity.

      Likewise if I were doing MIDI mapping in a DAW; if I wanted to be able to change song settings, swap instruments, etc in Renoise using MIDI mappings it would be much easier to verify the set up by typing at the command line then in trying to use a controller or a GUI appliction. It also helps narrow down possible issues. If I don’t get the results I want when using a controller I know the issue is not in the MIDI mappings because I was able to verify input with a command-line tool.

      (I find command-line OSC more useful than MIDI, but that might be that my tools of choice all have built-in OSC handling.)

      In general, if you are using a computer to make music and you don’t take the time to learn some general programming (Ruby or Python or Lua, etc.) you’re cheating yourself. Pretty sure that every notable DAW or music program allows you to write custom scripts and to interact using MIDI and/or OSC.

  • brianmoore

    Midiox is very comprehensive software for monitoring, exploring, and deeply analyzing MIDI data. I’m not sure what this program has over on something like Midiox. That being said, the more tools out there, the better as far as I’m concerned 🙂

    • James Britt / Neurogami

      “not sure what this program has over on something like Midiox”

      From the midiox site: “MIDI-OX is a Windows 95/NT program (also Win98/Me/2000/XP/Vista)”

      So, not cross-platform. Not open source. I also could not find anything on the midiox site about using it from the command line.

  • papernoise

    Very cool! I agree, this might be better (practically speaking) than most stuff coming out at NAMM! 🙂
    And about the JUCE thing… do people really think that? Just to add a bit of horn self blowing to the list, we made this one with JUCE, and I don’t think it’s uglier than many other plugins: http://ju-x.com/frosting.