Zoë Blade's notebook

SysEx file

A SysEx file (extension .SYX) contains one or more SysEx messages. The SysEx file format is an unofficial, de facto standard. It isn't standardised by the MIDI Manufacturers Association.

Standard MIDI Files (which, as the name suggests, are standardised) contain additional data useful for playing back music, placing each MIDI event in the context of a track and a point in time.

In contrast, isolated SysEx messages don't need that context. A stream of one or more SysEx messages is the sum total of the required information to store and retrieve. Unlike music, it's not especially time sensitive — you can transmit the messages as quickly as the receiving device can cope with them. Tracks needn't enter the equation at all. It's not like you're going to mute and solo SysEx messages. Using a Standard MIDI File just to store SysEx data works, but it's unnecessarily complicated.

To simplify things, the authors of librarian applications generally took to simply saving the raw data stream itself in a file, devoid of the track and timing context.

Originally, they tended to contain incompatible headings and use arbitrary filename extensions, but in the 1990s they settled on simply storing the raw data stream itself, without prefixing any additional metadata, and using the now-familiar .SYX extension. It probably helped that people started sharing their SysEx files on dial-up bulletin board systems, and then the Internet, causing a greater need for compatibility between librarian applications.

As SysEx messages always begin with an F0 byte and end with an F7 byte, you can analyse the file in a hex viewer to see whether it contains one or more SysEx messages, and anything else in between.

Example implementations


MIDI: DAW | Editor/librarian | MIDI clock | MIDI sequencer | MIDI timing | ST MIDI sequencer timeline | Song position pointer | SysEx file