Что такое MIDI?
MIDI - Musical Instrument Digital Interface (цифровой интерфейс музыкальных инструментов) - стандарт на соединение инструментов и передачи информации между ними. Каждый инструмент имеет три разъема: In (вход), Out (выход) и Thru (повторитель входного сигнала), что позволяет объединить в сеть практически любое количество инструментов.
Способ передачи - токовая петля (5 мА). Информация передается байтами, в последовательном стартстопном коде (8 битов данных, один стоповый, без четности - формат 8-N-1), со скоростью 31250 бит/с. В этом MIDI-интерфейс очень похож на последовательный интерфейс IBM PC - отличие только в скорости и способе передачи: в PC используется интерфейс V24 (RS-232) с передачей сигналов путем изменения напряжения. Частоту 31250 бит/с на стандартном интерфейсе IBM PC получить нельзя.
Поток данных, передаваемый по MIDI, состоит из сообщений (событий): нажатие/отпускание клавиш, изменение положений регуляторов (MIDI-контроллеров), смена режимов работы, синхронизация и т.п. Можно сказать, что по MIDI передается партитура музыкального произведения, однако есть и специальные виды сообщений - System Exclusive (SysEx) - в которых может содержаться любая информация для инструмента - например, оцифрованный звук для загрузки в ОЗУ, партитура ритм-блока и т.п. Обычно SysEx уникальны для каждого инструмента и не совместимы с другими инструментами.
Большинство сообщений содержит в себе номер канала (1..16) - это чаще всего условный номер инструмента в сети, для которого они предназначены. Однако один инструмент может "отзываться" и по нескольким каналам - именно так и работают звуковые карты и многие тонгенераторы (внешние модули синтеза). Прочие сообщения являются общими и воспринимаются всеми инструментами в сети.
В сообщениях о нажатиях/отпусканиях клавиш передается номер ноты - число в диапазоне 0..127, определяющее условный номер полутона: ноте До первой октавы соответствует номер 60. Отсюда происходит "компьютерная" нумерация октав, начинающаяся с нуля, в которой первой октаве соответствует номер 5, а нота До нулевой октавы имеет нулевой MIDI-номер.
При записи MIDI-потока в файл (MID, RMI) он оформляется в один из трех стандартных форматов:
0 - обычный MIDI-поток 1 - несколько параллельних потоков (дорожек) 2 - несколько независимых последовательных потоков
Разбиение на дорожки удобно для выделения партий отдельных инструментов - популярные MIDI-секвенсоры формируют файлы именно формата 1