Free Software Stuff

Asysex - A SysEx Utility

This is the homepage for asysex, a small command-line MIDI SysEx utility. It reads a System Exclusive (SysEx) message on its standard input and sends it to a connected MIDI device, then receives the device reply (if any) and prints to standard output.

Asysex is distributed under the terms of the GNU General Public License, version 3 or higher.

Asysex is no longer developed as a standalone project; it is now included in the kmxtool project, which was started from the asysex codebase.


Sending arbitrary SysEx messages

To send an arbitrary System Exclusive message to the MIDI device, the user writes it, in hexadecimal, to asysex’s standard input. It is up to the user to feed asysex with a valid SysEx message; asysex itself simply verifies that the message starts with a F0 byte (“Start of SysEx” status byte) and ends with a F7 byte (“End of SysEx” status byte).

For example, to set the Master Balance of a MIDI device (connected to the default MIDI port) to “full left”:

$ asysex <<< "F07F0004020000F7"

Asysex ignores all non-hexadecimal characters in its input, and ignore all characters (including hexadecimal characters) from a ‘#’ to the next end of line. This allows to write annotated SysEx message in a file. The above message could be stored as follows:

F0 # SysEx message begin
7F # Universal System Exclusive message
00 # Global MIDI Channel is 1
0402 # Function is "Set Master Balance"
0000 # Value (0000, full left; 7F7F, full right; 4040, center)
F7 # SysEx message end

and then sent to the device by feeding the file to asysex:

$ asysex < set_master_balance_message

When the message triggers a reply from the device, asysex receives it and prints it on its standard output in “canonical hex+ASCII” format (like hexdump -C). For example, to dump a program from a Korg synthesizer:

$ asysex <<< "F042307A1C210900F7"
00000000  f0 42 30 7a 4c 01 21 09  00 43 6f 6d 61 74 6f 73  |.B0zL.!..Comatos|
00000010  00 65 20 20 20 20 20 20  00 20 20 1e 1e 00 00 14  |.e      .  .....|
                              [truncated output]
000001e0  14 00 00 00 3d 63 04 63  04 00 63 46 0a 00 1a 14  |....=c.c..cF....|
000001f0  0f 00 00 00 01 00 00 3c  00 00 3c 00 00 40 0e 00  |.......<..<..@..|
00000200  f0 7f 00 7f 00 00 f7                              |.......|

The -r, --raw option makes asysex write the reply in raw binary format. Raw output can be sent to a file or piped to hexdump(1) which would then display it in any format suitable to the user.

Identification of devices

The -I, --inquiry option makes asysex send a DEVICE INQUIRY message to the connected device. Upon reception of that universal System Exclusive message, any compliant MIDI device should reply by identifying itself. Asysex reads that reply and prints the information on standard output.

Here is an example with a Korg microX synthesizer:

$ asysex -I
Korg model 7a, family 9, version


The following release tarball is available:

For newer releases and latest source code, refer to the kmxtool project.