Skip to main content

SendMIDI and ReceiveMIDI

Elevator Pitch

SendMIDI and ReceiveMIDI

SendMIDI and ReceiveMIDI are multi-platform command-line tools that make it very easy to quickly send, receive and monitor MIDI messages

Product Description

SendMIDI and ReceiveMIDI open the whole world of MIDI up to the computer command line and scripting. It’s very easy to quickly send messages for configuration or testing; to store scripts for repeated operation; or to monitor and receive particular filtered MIDI streams for troubleshooting or later reproduction.

The command line arguments of SendMIDI and ReceiveMIDI have be carefully chosen to allow for fluid expression of the intended use case.

The websites are:
https://github.com/gbevin/SendMIDI
https://github.com/gbevin/ReceiveMIDI

List of SendMIDI 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 all possible Note Offs and relevant panic CCs
  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)
  cc    number value   Send Control Change number (0-127) with 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            Send 2 beats of MIDI Timing Clock for a BPM (1-999)
  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
  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)
  mpetest              Send a sequence of MPE messages to test a receiver
  raw   bytes          Send raw MIDI from a series of bytes
  -h  or  --help       Print Help (this message) and exit
  --version            Print version information and exit
  --                   Read commands from standard input until it's closed

List of ReceiveMIDI commands:

 


How It’s Innovative

MIDI has mostly been used by hardware or UI-driven software. With SendMIDI and ReceiveMIDI, any command line use is fully supported, even in combination with other command line tools, honoring the unix legacy.

Most Inspiring Use Cases

It completely changes how an engineers develops MIDI products, using SendMIDI and ReceiveMIDI as multi-platform tools on the command line significantly streamlines the creation and testing process.

Expansion Plans

MIDI 2.0 support

Commercialization

SendMIDI and ReceiveMIDI are free and open-source under the GPLv3 license.