← All tools

gbevin/SendMIDI

Popularity 75 Updated Development & Build

Multi-platform command-line tool to send out MIDI messages

githubauto-collected

Installation

A directly usable install command is not verified yet. Check the project documentation or releases.

SendMIDI

SendMIDI is a multi-platform command-line tool makes it very easy to quickly send MIDI messages to MIDI devices from your computer.

All the heavy lifting is done by the wonderful JUCE library.

The project website is https://github.com/gbevin/SendMIDI

Purpose

This tool is mainly intended for configuration or setup through Control Change, RPN and NRPN messages, but many other MIDI messages can be sent.

Here's a tutorial video about both SendMIDI and ReceiveMIDI, including some tips and tricks of how to use the command-line on macOS:

<a href="https://www.youtube.com/watch?v=o1kg0IbetY" target="blank"<img src="https://i.ytimg.com/vi/o1kg0IbetY/maxresdefault.jpg" alt="Tutorial Video" width="640" border="0" /</a

Download

You can download pre-built binaries from the release section: https://github.com/gbevin/SendMIDI/releases

Since SendMIDI is free and open-source, you can also easily build it yourself. Just take a look into the Builds directory when you download the sources.

If you're using the macOS Homebrew package manager, you can install SendMIDI with:

brew install gbevin/tools/sendmidi

Usage

To use it, simply type "sendmidi" or "sendmidi.exe" on the command line and follow it with a series of commands that you want to execute. These commands have purposefully been chosen to be concise and easy to remember, so that it's extremely fast and intuitive to quickly shoot out a few MIDI messages.

These are all the supported commands:

  dev     name          Set the name of the MIDI output port
  virt    (name)        Use virtual MIDI port with optional name (Linux/macOS)
  list                  Lists the MIDI output ports
  panic                 Sends Note Offs, panic CCs, resets controllers & bend
  file    path          Loads commands from the specified program file
  dec                   Interpret the next numbers as decimals by default
  hex                   Interpret the next numbers as hexadecimals by default
  ch      number        Set MIDI channel for the commands (1-16), defaults to 1
  omc     number        Set octave for middle C, defaults to 3
  on      note velocity Send Note On with note (0-127) and velocity (0-127)
  off     note velocity Send Note Off with note (0-127) and velocity (0-127)
  pp      note value    Send Poly Pressure with note (0-127) and value (0-127)

cc14 number value Send 14-bit CC number (0-31) with value (0-16383) pc number Send Program Change number (0-127) cp value Send Channel Pressure value (0-127) pb value Send Pitch Bend value (0-16383 or value/range) rpn number value Send RPN number (0-16383) with value (0-16383) nrpn number value Send NRPN number (0-16383) with value (0-16383) clock bpm (beats) Send MIDI Timing Clock for a BPM (1-999), optionally for a number of beats (default 2, 0 = until stopped) mc Send one MIDI Timing Clock start Start the current sequence playing stop Stop the current sequence cont Continue the current sequence as Send Active Sensing rst Send Reset syx bytes Send SysEx from a series of bytes (no F0/F7 delimiters) syf path Send SysEx from a .syx file nowait Don't wait for SysEx to be sent at worst-case MIDI speed tc type value Send MIDI Time Code with type (0-7) and value (0-15) spp beats Send Song Position Pointer with beat (0-16383) ss number Send Song Select with song number (0-127) tun Send Tune Request mpe zone range Send MPE Configuration for zone (1-2) with range (0-15) mpp input manager Configure MPE Profile initiator with MIDI input port members name, a manager channel (1-15), and desired member channel count (1-15, 0 to disable) (also uses MIDI output port) mpetest Send a sequence of MPE messages to test a receiver raw bytes Send raw MIDI from a series of bytes