2 ПРОТОКОЛ MIDI
2.1 Общие понятия протокола
С самого появления протокола MIDI (Musical Instrument Digital Interface — цифровой интерфейс музыкальных инструментов) он стал стандартом для всей электромузыкальной промышленности с необычайной до этого совместимостью. Совместимости такого уровня нет ни в одной другой сфере передачи данных. До сих пор выпускаемые электромузыкальные устройства, не проектируются без поддержки MIDI.
Почему же MIDI за многие десятилетия имеет ошеломляющий успех? Ответ прост. Протокол был разработан очень скрупулезно, прежде чем выйти в массы. В нем отсутствуют недоработки, а требования к аппаратной реализации и взаимодействию устройств очень четко определены. Кроме того, MIDI является продуктом целой ассоциации производителей.
Основной причиной появления MIDI стала насущная потребность музыкантов того времени управлять с одной клавиатуры несколькими синтезаторами одновременно. При этом требовалось, чтобы соединение инструментов было простым, а интерфейс надежным и недорогим. Сейчас, по прошествии тридцати лет, можно говорить твёрдо: эти условия для того времени были выполнены идеально. Протокол разрабатывался как простое, недорогое и надежное средство для управления одним синтезатором с другого.
MIDI - протокол, который позволяет исполнителю нажать клавишу на одном инструменте и другой при этом зазвучит. Любые манипуляции человека с органами управления синтезатора могут быть преобразованы в команды MIDI, которые будут пригодны для отправки по кабелю на другие инструменты. Эти инструменты будут получать и выполнять все в точности также как если бы манипуляции производили с их органами управления.
Суть протокола в том, что есть управляющее устройство "мастер", генерирующее команды, и есть подчиненные устройства - "слэйвы", которые выполняют эти команды.
Мастер-устройства делятся на два типа: устройства, на которых можно поиграть (синтезатор или MIDI клавиатура) и секвенсоры. Секвенсор это магнитофон, который записывает команды управления в свою память. Секвенсор позволяет записать действия исполнителя включая динамику, стиль, штрихи, а значит и все косяки исполнения. Затем воспроизвести их в первозданном виде, точно так же, как если бы исполнитель снова сел за инструмент и сыграл то же самое. Кроме того, в секвенсоре можно редактировать записанную информацию, здесь можно делать всё что угодно, изменять инструменты, менять ноты местами, подгонять съехавшие с ритма партии, транспонировать.
MIDI является выраженным клавишно-ориентированным протоколом. Но есть множество других "мастер" устройств ввода, например, электронные пэды и целые ударные установки, гитарные или духовые контроллеры. Но все равно сообщения преобразуются в клавишно-ориентированные.
К сожалению приемы звукоизвлечения, нехарактерные для клавишного инструмента, такие как гитарные подтяжки струн и игра на безладовых струнных, могут быть лишь сымитированы средствами MIDI с той или иной степенью достоверности.
2.1.1 Коммутация
Соединение устройств в MIDI очень простое, если у нас есть два синтезатора и мы хотим управлять с помощью первого - вторым, то нам нужно разъем "выход" на первом синтезаторе соединить с разъемом "вход" на втором синтезаторе. Сообщения, вышедшие из синтезатора "Мастер" генерируются после нажатий на нём клавиш и по проводу следуют в синтезатор "Слэйв", который, распознавая сообщения, будет воспроизводить звук, как показано на рисунке 3.1.
Рисунок 3.1 - Простейшая односторонняя коммутация одним проводом
Что если нам нужно играть аккордами? Никаких проблем, играйте! Ведь MIDI это последовательный цифровой интерфейс, команды о нажатии нот физически не могут конечно передаться одновременно, но и вы не сможете сыграть все ноты в аккорде абсолютно одновременно. Все команды идут друг за другом, как вагоны состава, но очень быстро, на столько, что никаких задержек человеческое ухо воспринять не сможет.
А если мы хотим с помощью одного "Мастер" синтезатора управлять тремя другими? Тогда нам нужно иметь три разъёма "выход" на "Мастер" синтезаторе? Соединим всё это тремя проводами и организуем сеть с топологией "звезда", как показано на рисунке 3.2.
Рисунок 3.2 - Теоретически возможное подключение.
Теоретически эта схема рабочая, но ни один производитель не будет делать в синтезаторе 3 разъема одинакового предназначения. Выход оказался гениальным, было решено размещать на синтезаторе сквозное гнездо "MIDI Thru", дублирующее всё что приходит на входной разъем "MIDI IN". Таким образом наши синтезаторы можно соединить цепочкой, как изображено на рисунке 3.3.
Рисунок 3.3 - Возможное на практике подключение трёх синтезаторов к одной клавиатуре, при помощи сквозных разъёмов MIDI Thru.
А как быть если у нас есть мультитембральный синтезатор, который может петь разными голосами одновременно и секвенсор, который может записывать и воспроизводить MIDI партии? Всё также, соединять их одним проводом.
Рисунок 3.4 - Сообщения разных каналов передаются последовательно по одному проводу.
Разработчики предложили присваивать передающимся сигналам номера каналов. Это снова означает что все инструменты будут передаваться последовательно, вклиниваясь между друг другом, но опять таки это будет происходить настолько быстро что наши уши не заметят, что бас на самом деле не попадает в бочку.
Если подумать, то в наших выше рассмотренных случаях трём синтезаторам не нужны клавиатуры, а тому, который управляет ими - не нужен тон-генератор. Такие эксперименты привели к появлению "неполноценных" инструментов, таких как MIDI контроллеры (клавиатуры без тон-генераторов) и звуковые модули (синтезаторы без клавиатур).
Также возможны такие фокусы, как разделение клавиатуры синтезатора или MIDI контроллера на две области и привязка к областям разных каналов. При этом можно подключить два синтезатора или два звуковых модуля и на каждом выбрать свой канал. и при этом всём нам понадобится лишь два провода, для организации такой сложной казалось бы системы, что мы наблюдаем на рисунке 3.5.
Рисунок 3.5 - Разделение клавиатуры позволяет управлять двумя синтезаторами в реальном времени.
Возможности стандарта MIDI постепенно начали делать музыкантов более ленивыми, так как необязательно было исполнять вживую несколько партий сразу, можно было записать партии в виде секвенций (последовательностей нот) в секвенсор по очереди, причем записать партии можно на простом и неказистом по звучанию инструменте или даже настучать партию на "немой" MIDI-клавиатуре. А для сведения одолжить пару качественных синтезаторов или звуковых модулей.
2.1.2 MIDI — протокол реального времени
Нажал - звучит. Именно так можно кратко описать MIDI протокол. Человек нажал кнопку, клавиатура генерирует сообщение "взять ноту" и передает тон-генератору, а он сразу же воспроизводит ноту. Моментом выполнения считается момент получения команды, связанные с моментами выполнения команд, в сообщениях не передаются. Поэтому сообщения с отсрочкой начала звучания ноты на определенное время в MIDI отсутствуют. Сообщения с указанием длительности звучания нот в системе реального времени также невозможно.
Представьте: как только рука человека ударяет по клавиатуре, в тон генератор бежит сообщение "взять ноту" и он начинает "петь". Больше никаких сведений нет, ни как долго будет нажата клавиша ни чего подобного. Нота будет стоять, пока человек не отпустит клавишу, и в тон-генератор не побежит команда "снять ноту". Вот что значит протокол реального времени. Например, темп задается не командой "200 ударов в минуту", а самими сообщениями о взятии ноты в соответствующем темпе, или с помощью midi-clock.
Отсюда же следует одна из самых главных проблем MIDI - "зависшие ноты". Если после начала звучания, сообщение о снятии ноты не пришло (например, из-за обрыва кабеля), нота будет звучать вечно, либо до тех пор, пока не перезапустить тон-генератор.
Секвенсор позволяет те же действия, что производит человек, запрограммировать, то есть записать в память и проигрывать без участия человека. Такое программирование музыки в свое время дало жизнь множеству стилей электронной музыки и в корне изменило творческий процесс, сейчас всё это доступно в наших ПК.
Очевидно, чтобы одно устройство реагировало на управляющие воздействия с другого, нужно стандартизировать две вещи: язык общения устройств и физический способ их коммутации. Для того, сохранения, редактирования и воспроизведения такого языка, нужен также стандартный формат их хранения.
|