MIDI 'events' are transmitted using strings of
bytes.
Each event can be sent as a
MIDI status-byte (value 128 to 255
decimal) followed by one or more
MIDI data-bytes (value 0 to 127).
The purpose of the status-byte is to describe the kind of data that is about to be sent. Generally, the same number of data-bytes is sent after each particular status-byte
Often, the same kind of data is sent repeatedly, and sending the status-byte repeatedly would be redundant and reduce the
bandwidth of the MIDI stream. Examples would include a series of
MIDI note-ons or
MIDI pitch-bend events.
So most modern MIDI hardware (e.g. synths) and software use 'running-status'. It's assumed that, once the expected number of data-bytes has been sent/received, IF the next byte is *not* a status-byte, THEN the last status-byte received should be used to
decipher the following data bytes.
Typically this results in about a 1/3 reduction in the number of bytes sent.