Skip to content

A Brief Primer on Core MIDI® Concepts

While not strictly required knowledge for operating a Zendrum© or in using the Zendrum Studio app, some surface knowledge of MIDI will give you a firmer understanding of how things works and will help you get the most from your Zendrum and equipment.

Feel free to skip this section or any part that seems too esoteric for your goals, though I encourage you to stick it out. The more knowledgeable you are, the more joy you'll get out of your instrument!

What Is MIDI?

MIDI is a serial communications protocol developed in 1981 for connecting and controlling musical instruments (amongst other uses which we won't get into here). You can kinda think of it as an early form of USB, albeit uni-directional and much slower, though it's more accurate to call it an extension of RS-232.

At a high level, MIDI is just a specification for a way to stream performance events down a wire. It's a unidirectional protocol, meaning you need one wire each to send and receive over.

MIDI Messages

Each MIDI message is an instruction intended for a particular receiving device. These instructions are things like "play this note that loud", or "turn that knob to this position". There could be more than one receiver listening for these message events. Messages are broadcast on a given channel, so devices can listen for messages that are intended specifically for them. Typically when using a Zendrum you'll be broadcasting percussion performance events, and those are generally broadcast on channel 10.

All messages start with a status byte, sometimes referred to as a status message. This byte is split into two nibbles that tell the receiver what type of message it is and on which channel it's being sent on. MIDI messages therefore are limited to 16 channels as this is most value that can be encoded in 4 bits. The receiver may be listening on a certain channel or could be in "omni mode" in which case it ignores the channel designation.

Depending on the message type, the next one or more bytes will contain the subject and value of the message. There are a class of messages referred to as "channel voice messages" which are the ones you're likely to use the most. Things like:

  • Note ON
  • Note OFF
  • Control Change
  • Program Change
  • Channel Pressure
  • Pitch Bend
  • Polyphonic Key Pressure

NOTE: Pitch Bend is a special case which we won't get into here.

Voice messages consist of the initial status, followed by two more bytes. The first byte identifies either the note or CC control (0 to 127). The second byte contains the value from 0 to 127.

As an example, when you hit a trigger, the following bytes may result:

10011010 01000000 01111111

The first byte is composed of two nibbles. 1001 means this is a Note ON message, while 1010 is binary for ten and indicates that this Note ON message is happening on channel 10.

The second byte is 64 in binary and indicates that it is note #64 that is playing. The final byte indicates what velocity to play the note at and is 127 in this case.

Incidentally, if you've ever wondered why we're limited to 127 notes and 127 possible velocities instead of the usual 256 values that a byte is capable of holding, it's because while data is steaming down the MIDI cable, the only way to tell which are status bytes is by the first significant bit, which is always a 1 for status messages.

This also means that instead of there being 16 different status message types, there are only 8 since that leaves only 3 bits available to define it. This limit was greatly expanded on within the MIDI 2.0 spec, but that's not relevant to conversations about Zendrums.

Shorthand Mode

A Note ON message is typically followed by a matching Note OFF, though not always. There's another scheme that reduces the amount of traffic by never sending Note ON messages, but instead only sends Off ones, with the third byte holding the velocity. Typically the velocity for Note Off is always zero. The Zendrum takes the old school approach of sending a Note On followed by a Note Off, with a 10 millisecond delay in between. You can lengthen this 10ms delay to something longer. This becomes important when talking to melodic sources where you probably don't want everything to be so short and staccato.

What Is SysEx?

SysEx or "System Exclusive" is a special MIDI status message that allows hardware and software vendors to pass arbitrary chunks of binary data back and forth. The contents of a SysEx message can be saved to disk and become a "SysEx file" (typically with a .syx file extension).

SysEx is a core concept of the Zendrum and we go into more detail in the overview section up next.