MIDI is a computer language. Like all computer languages MIDI is constructed from 1s and 0s (so called bits).
In the MIDI language bits are grouped into units called bytes. The bytes in MIDI are made from 8 bits.
Here is an example MIDI byte .... 10010011
Click here to read about binary and computer counting systems
Because the bytes in MIDI are 8 bits long it is said to be an 8-bit language. Other computer language's are 16-bit (16 bits in a byte) or even 24-bit, 32-bit, 64-bit, or 128-bit. MIDI is 8-bit because it is transmitted very slowly (for cost reasons) compared to many languages and therefore needs to be as small as possible to ensure that timing errors do not become noticeable.
Click here to read about binary and computer counting systems
In the MIDI language there are 256 different bytes. Each byte has a specific purpose.
This example MIDI byte "says" ... Note On / Channel 2 ... 10010011
This example MIDI byte "says" ... 127 ... 01111111
Click here to read about binary and computer counting systems
MIDI bytes fall into one of 2 categories ...
Status bytes always start with a 1 and define the type of message being sent.
This is an example status byte ... 10010011 ... which means Note On / Channel 2
Data bytes start with a 0 and simply give a value between 0 and 127.
Here is an example data byte ... 01000001 ... which means 65
By combining bytes together, MIDI messages are constructed.
There are 2 categories of MIDI message ...
Channel messages are mostly to do with performance information sent on MIDI channels.
System messages handle system wide jobs like MIDI Timecode and are not sent on channels.
All MIDI messages are constructed from at least 1 status byte and 1 data byte, often many many more.
Here is an example of a simple 3 byte MIDI message comprising a Status byte and 2 Data bytes. This message is telling a sound module set to respond on MIDI channel 1 to start playing a note (C3) at a velocity of 101.

None at present