Sysex. What is it?

If you're reading this page, you're probably trying to load some patches onto your synthesizer, or use some patch editor software, or something like that. And you see this term "sysex" mentioned, and it sounds like voodoo. It's actually simple. Let's build up to it, though.

First: what's MIDI?

MIDI is a way for computers and synthesizers to talk to each other (or computers to talk to computers, or synths to synths, etc.). And the content of MIDI is just a series of numbers, sent one-by-one. Every number is between 0 and 255, and the numbers and their order have special meanings.

If you've ever used MIDI, it was probably so that you could play an instrument. The MIDI messages (numbers) that are used to play an instrument are mostly note messages and control change (CC) messages. These are standard messages (each message is just 3 numbers in a row) that are universally-understood by different instruments (although depending on the instrument, the CC messages might do different things). For example, to tell any synthesizer to start playing a middle C note (with a velocity of 80, on MIDI Channel 1), you would send:

144 60 80

The 144 tells the synth to start playing a note, then the 60 tells it that the note to play is middle C, and the 80 is the velocity to play the note at. It's that simple.

So what is sysex?

Then there's sysex, which is short for "System Exclusive". This is just a way for makers of synthesizers and other instruments to have their own special MIDI messages (not universal like notes and CC).

Every sysex message starts with the number 240 and ends with 247. Every number that's sent in between those two is between 0 and 127. The messages can be just a few numbers long, or thousands of numbers long! For example, this is the sysex message that you would send to a Yamaha DX7 to ask it to dump the sysex data for its current patch:

240 67 32 0 247

... and then it would send back a sysex message that is 163 numbers long, in a special (system exclusive!) format that represents the current patch settings on the synth.

Side note: one thing that mystifies people about sysex is hexadecimal. Hexadecimal is just a different way of writing numbers. It's a little more compact than normal notation. For example, 240 can be written as F0, and 247 as F7. It's the preferred notation for showing sysex, because every number in a sysex message can be written in just 2 characters in hexadecimal, and they become a bit more readable once you get used to it. For example, here's that same Yamaha DX7 patch dump message, but written in hexadecimal:

F0 43 20 00 F7

Also, sometimes you'll see hexadecimal numbers written with 0x at the front, which is just a visual signifier that "this number is in hexadecimal, not normal notation". So 0xF0 just means 240, once again.

What is sysex used for?

So that's what the message looks like, but what does it do?

That's up to the manufacturer of the instrument. Some of the most common uses for sysex messages are:

  • Parameter changes - messages that tell your synth to change a particular setting (e.g. Filter Cutoff). Patch editors use these messages a lot.
  • Single patch dumps - a single, long sysex message can contain the settings for every parameter in a synth patch.
  • Patch Banks / Backups - Patch Banks are usually a bunch of sysex messages in a row, one per patch. Some synths will have a patch bank stored as a single, huge sysex message.
  • Firmware updates - Some manufacturers distribute firmware updates to synths as sysex, so that the update can be sent to the synth in the same way a patch dump is.

Sysex Files

Ok, so maybe you have a sysex file. The file name probably ends in .syx, in which case the contents of the file are just the raw sysex messages held by the file (just a bunch of numbers, with each message starting with the number 240 and ending with 247).

With a file like that, you probably want to use it by sending it to your synthesizer. It might hold a patch you want to play, or a whole bank of patches that you want to load onto your synth. How do you get it to your synth?

For that, you just need some software that will read that file, and "play back" every message in it, sending the messages through your MIDI interface, where you synth is connected. My recommendations for software to do that (by platform):

  • Mac - Sysex Librarian is a tried and true open-source appl
  • Windows - MIDI-OX is the go-to on Windows. It's free.
  • iPhone / iPad - Sysex Base is made by Coffeeshopped. For sale on the App Store.

With these apps, you can send the entire contents of your .syx file to your synth. The apps can also control how fast the numbers are sent, and put little pauses between each message, which helps some (especially older) synthesizers digest the information a little easier (and not puke).

You might also have a .mid file, which is a more general file format that can hold all kinds of MIDI information. If you have a file like that with sysex in it, it contains the sysex messages, but also some extra information, so you can't just send the whole file directly to your synth. You have to use software that just reads the sysex parts, and sends only those. Sysex Librarian does this, and I think MIDI-OX does as well, but Sysex Base does not, yet.

That's the gist of what sysex is. If there's anything more I could explain here, please let me know by getting in touch.