MIDI-устройства обмениваются данными посредством MIDI-сообщений, которые представляют собой последовательности из трех или больше байт. Например, MIDI-сообщение «Note on» это три байта, из которых первый байт — задаёт конкретное действие и номер канала. Второй байт определяет высоту тона (0-127), а третий — значение velocity (обычно интерпретируется как громкость, 0-127). То есть команда выглядит так: 90 3C 7F (в шестнадцатеричном виде) или 100100000011110001111111 (в двоичном коде).
Таким образом, последовательность MIDI-сообщений (как и файл SMF) представляет собой двоичный код, который также может быть записан, прочитан и отредактирован в шестнадцатеричном формате (в Hex-редакторе):
MIDI-сообщения делятся на две большие группы — сообщения канала (Channel messages) и системные сообщения (System messages):
Сообщения канала (Channel messages) это, по большей части, голосовые сообщения (Voice message), которые содержат информацию о взятии/снятии нот, смене патчей и данные различных контроллеров — ручек, слайдеров и педалей, относящиеся к определенному MIDI-каналу.
К сообщениям канала относятся также сообщения режима канала (Mode messages). Это такие сообщения, как All Notes Off, Reset Controllers, Mono/Poly On и другие.
Системные сообщения (System messages) это команды для устройства в целом, не относящиеся к какому-либо MIDI-каналу. Это, например, команды Start, Stop, Song Select, System Reset и т.п.