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:
dev name Set the name of the MIDI input port
virt (name) Use virtual MIDI port with optional name (Linux/macOS)
pass name Set name of MIDI output port for MIDI pass-through
list Lists the MIDI input ports
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 (0-16), defaults to 0
ts Output a timestamp for each received MIDI message
nn Output notes as numbers instead of names
omc number Set octave for middle C, defaults to 3
voice Show all Channel Voice messages
note Show all Note messages
on (note) Show Note On, optionally for note (0-127)
off (note) Show Note Off, optionally for note (0-127)
pp (note) Show Poly Pressure, optionally for note (0-127)
cc (number) Show Control Change, optionally for controller (0-127)
cc14 (number) Show 14-bit CC, optionally for controller (0-63)
nrpn (number) Show NRPN, optionally for parameter (0-16383)
nrpnf (number) Show full NRPN (MSB+LSB), optionally for parameter (0-16383)
rpn (number) Show RPN, optionally for parameter (0-16383)
rpnf (number) Show full RPN (MSB+LSB), optionally for parameter (0-16383)
pc (number) Show Program Change, optionally for program (0-127)
cp Show Channel Pressure
pb Show Pitch Bend
sr Show all System Real-Time messages
clock Show Timing Clock
start Show Start
stop Show Stop
cont Show Continue
as Show Active Sensing
rst Show Reset
sc Show all System Common messages
syx Show System Exclusive
syf path Store SysEx into a .syx file
tc Show MIDI Time Code Quarter Frame
spp Show Song Position Pointer
ss Show Song Select
tun Show Tune Request
q Don't show the received messages on standard output
js code Execute this script for each received MIDI message
jsf path Execute the script in this file for each message
-h or --help Print Help (this message) and exit
--version Print version information and exit
-- Read commands from standard input until it's closed