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.
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.
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.
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:
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):
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.