MIDI-технология в картинках и таблицах
Павел Живайкин
Появившаяся в начале восьмидесятых годов
MIDI-технология вскоре получила новый импульс в
связи с широким распространением персональных
компьютеров. И хотя еще в 1991 году мне попалась
какая-то статья, где почти со злорадством
перечислялись ее недостатки и предсказывалась
скорая кончина, до настоящего времени
альтернативной идеи и альтернативной технологии
создано не было.
Основными недостатками MIDI считаются низкая
скорость передачи информации, узкий диапазон
изменения параметров и ограниченная сфера
применения. В то время как одно из главных ее
достоинств — небольшой объем файлов — в
последнее время уже потеряло решающее значение:
цены на пишущие CD-приводы и “болванки” для
записи становятся все доступнее. А с появлением
широких возможностей по использованию при
создании музыки готовых, заранее записанных
музыкальных фраз с CD-качеством (всякие “лупы”,
“сэмплы” и т.п.) многие “артисты” вообще решили,
что таких проблем, как обучение нотной грамоте,
владению инструментом, MIDI-технология и пр. для
них не существует.
Следуя этой логике, запись музыки банальными
нотами и диезами должна была уйти в небытие с
появлением фонографа Эдисона. Вот когда
настоящий прогресс пришел на смену устаревшей
технологии и беспросветному консерватизму! Как
подумаешь, что и Бах, и Шнитке пользовались
одними и теми же пятью нотными линейками, то
такие понятия, как “секвенсор” или
“контроллер” уже не кажутся столь древними.
Однако если принять во внимание, что
MIDI-технология изначально предназначалась не для
записи или воспроизведения музыки, а только лишь
для управления на некоем расстоянии (в
пространстве и времени) синтезаторами, звуковыми
модулями и прочими “железными” ящиками, то
многие претензии к ней будут сняты. Это все равно, что упрекать виолончель за
плохое звучание во флейтовом регистре. Научись
правильной аранжировке, а иначе и Ростропович не
поможет!
Итак, чтобы закончить мысль о достоинствах и
недостатках MIDI, сделаем несколько
предварительных выводов. Во-первых,
MIDI-технология остается ведущей в компьютерной и
аппаратно-студийной области. Во-вторых, она
совершенствуется, учитывает новые требования и
новые технические возможности. Об этом говорит
последовательное появление стандартов GM, GS и XG.
В-третьих, идея оказалась
настолько удачной, что MIDI-технология вовлекает в
сферу своего влияния все новые и новые области,
для которых она и не предназначалась, —
управление магнитофонами, устройствами звуковой
обработки, микшерскими пультами (не говоря уже о
мультимедийных продуктах и компьютерных играх).
Здесь же хочу затронуть еще одну близкую мне
тему. В музыкальном обучении качество звучания
уже не играет столь значительной роли, как в
звукозаписи или концертной деятельности. Зато
возможность воспроизводить изучаемый опус в
любом темпе и (тут вокалисты и духовики должны
затаить дыхание) в любой тональности делают
MIDI-технологию незаменимой в музыкальных школах и
училищах. Смешно сказать, но для этого достаточен
286-й компьютер со звуковой картой за 40 долл. Я
думаю, недалеко то время, когда некий аппарат,
подобными характеристиками станет
распространенней метронома. А вместо толстых
нотных сборников люди будут покупать дискеты с
этюдами Черни или Шопена.
Не учиться, не учиться и еще раз не учиться
Когда ко мне приходит молодой человек с
просьбой научить его работать с какой-нибудь
программой, я предлагаю для начала пройти азы MIDI.
Если до этого он уже записал пару треков на
каком-нибудь секвенсоре, то его первая реакция:
“Да это и так понятно”! Когда ему показываешь
разницу между MIDI-файлом, “настуканным”
(выражение грубое, но справедливое) одним пальцем
в шаговом режиме, и аранжировкой, сделанной с
учетом всех возможностей MIDI, он с энтузиазмом
хватается за все доступные источники информации.
Здесь его подстерегают первые неприятности. В
течение многих лет разные наши авторы пишут о MIDI
в различных журналах, а иногда и в книгах. Это
по-настоящему хорошо, потому что никакого
другого учебника или пособия нет. Трудно судить о
зарубежных изданиях, которые усиленно
рекламируются в американских и английских
музыкальных журналах. Переводить их — сплошное
мучение из-за горючей смеси компьютерных,
музыкальных и “жаргонно-тусовочных” терминов.
Вполне возможно, что такой переводчик еще не
родился.
О второй очереди неприятностей многие сразу и
не догадываются. Дело в том, что эти пособия пишут
не музыканты и преподаватели, а инженеры,
программисты и дилеры. Не кажется странным, что
учебник по теории музыки написан не Полом
Маккартни или Владимиром Спиваковым, а скромным
профессиональным педагогом. Я не думаю обижать
или обвинять кого-нибудь из авторов. Спрос есть, и
писать об этом надо. Но, к сожалению, и логика
изложения, и форма, и прочие невинные
педагогические приемы во всех материалах
отсутствуют.
Рано или поздно об этом догадывается любой
читатель. Он прочитывает страницу за страницей
один раз, потом второй, третий… И, наконец,
приходит к одному из трех выводов.
“Мне никогда этого не одолеть”, — решает он,
и это порой справедливо. Сведения не
систематизированы, изложены в произвольном
порядке, отрывочны, и не все термины объяснены...
“Ну и черт с ним, проживу без этих
премудростей”, — может подумать уставший
читатель. И здесь я соглашусь — о смертельных
исходах от незнания MIDI что-то пока не слыхать!
А если ему совсем не повезет, он решит, что
нечего тратить время и деньги на книги и журналы,
благо у всякой программы есть руководство и хэлп.
И хотя я знаю книгу об одной популярной
музыкальной программе, содержащую по пять-шесть
ошибок на страницу в логике, фактах, в английском,
а иногда и в русском языке — тут я с ним не
соглашусь никогда.
Во-первых, эти руководства и хэлпы создают те же
программисты с их “особенным” видением мира.
Если бы этих руководств было достаточно,
компьютерные отделы книжных магазинов не сияли
бы такой глянцевой пестротой.
Во-вторых, ни в одном руководстве я не видел
ничего похожего на фразу: “Здесь наша программа
должна сделать то-то, но почему-то она этого не
делает”. Столько полезного можно найти в
журналах, что порой кажется, будто производители
заранее договариваются с журналистами о том,
какие они наделают “бяки” в программах, а уж
писатели на радость читателям будут их на этом
ловить.
На основании всего вышесказанного хочу
обратиться к любому человеку, будь он музыкант,
звукорежиссер, разработчик мультимедийных
программ или простой любитель покопаться в
музыкальных программах: MIDI-технология не
устарела, не так уж и сложна и не будет тормозом в
вашем творчестве — смелее!
В этом материале будут рассмотрены самые
первые, и, пожалуй, самые главные темы —
назначение MIDI и типы MIDI-сообщений.
Назначение MIDI и подключение MIDI-устройств
Что такое MIDI-технология
MIDI — Musical Instrument Digital Interface — компьютерный
протокол (иногда говорят — язык),
предназначенный для связи одного музыкального
устройства с другим. Оба эти устройства должны
обладать любого вида микропроцессором или
программой, которые поддерживают MIDI-протокол.
Рис. 1.
Пример использования MIDI. На синтезаторе вы
можете играть ноты, выбирать новый тембр
инструмента, менять громкость, но сам он сейчас
не звучит. Все перечисленные действия передаются
по MIDI-кабелю (красного цвета) в виде команд на
звуковой модуль. Последний выполняет все эти
действия (звучат сыгранные ноты, меняется тембр и
громкость) и выдает звук через обычные динамики.
Красная стрелка показывает направление потока
MIDI-сообщений
|
Цель MIDI — управлять работой музыкального
устройства не с его панели или клавиатуры, а на
расстоянии (по MIDI-кабелю) — с другого
устройства. Для этого второе устройство передает
первому последовательность управляющих команд,
которые называются MIDI-сообщениями.
Какая информация передается с помощью MIDI
Все, что вы делаете, управляя работой своего
музыкального устройства (крутите ручки,
нажимаете на кнопки, играете на клавиатуре),
может передаваться в виде управляющих
MIDI-сообщений на ваше устройство с другого
MIDI-устройства.
Примечание 1. MIDI-сообщение передает не сам
звук (аудиоинформацию) или какие-то его
характеристики, а только управляющие команды,
которые выполняются устройством-получателем.
Примечание 2. Сам процесс передачи
MIDI-сообщения может осуществляться в реальном
времени (во время исполнения или воспроизведения
музыки), но может быть и разорванным во времени. В
этом случае MIDI-сообщение записывается в виде
файла на дискету или хард-диск компьютера, а
потом считывается устройством-получателем.
Какие музыкальные устройства могут получать и
принимать информацию по MIDI
Технология MIDI с самого начала была
предназначена для связи между самыми различными
устройствами (синтезаторами, звуковыми модулями,
компьютерами, устройствами цифровой обработки
звука и многими другими).
MIDI-устройство должно иметь:
внутри — программу или
микропроцессор, который понимает MIDI-информацию;
снаружи — разъемы, к которым
подсоединяется MIDI-кабель.
MIDI-разъемы
По MIDI-кабелю (в отличие, скажем, от телефонного)
информация передается всегда в одном
направлении. Поэтому каждый MIDI-разъем
используется только для одной цели в зависимости
от его вида.
Таблица 1. Виды MIDI-разъемов.
MIDI Out |
MIDI-выход. Через
этот разъем устройство посылает MIDI сообщение на
другое устройство |
MIDI In |
MIDI-вход. Через
этот разъем устройство получает MIDI сообщение от
другого устройства |
MIDI Thru |
Сквозной. Через
этот разъем посылается точная копия любого
MIDI-сообщения, которое поступило на разъем MIDI In |
В качестве разъема для MIDI используется
стандартный европейский 5-контактный разъем (рис.
2).
Рис. 2. MIDI-разъем. Контакт 2 —
земля, контакты 4 и 5 — сигнальные, контакты 1 и
3 — не используются.
|
Существует три вида MIDI-разъемов. Назначение
каждого понятно из табл. 1.
MIDI-кабель соответственно должен иметь три
провода, которые соединяют контакты 1, 4 и 5 на
обоих его концах.
Соединение MIDI-устройств между собой
Всегда одно устройство передает MIDI-сообщение,
другое получает. MIDI-кабель связывает разъем MIDI Out
передающего устройства с разъемом MIDI In
принимающего (рис. 1). Если вы хотите направить
информацию в обратную сторону, вы должны
соединить устройства по-новому (в соответствии с
тем, что было сказано в предыдущем предложении)
или использовать еще один кабель и, опять же,
связать MIDI-выход одного устройства с MIDI-входом
другого (рис. 3).
Рис. 3. По одному MIDI-кабелю
синтезатор передает MIDI-сообщение на звуковой
модуль. Затем (но не одновременно) по другому
MIDI-кабелю этот модуль может послать свое
MIDI-сообщение на синтезатор
|
У любого устройства имеется только один
MIDI-выход. Поэтому, если с него нужно посылать
команды на два или несколько других устройств,
используется разъем MIDI Thru. Тогда подключение
устройств-приемников происходит
последовательно (рис. 4). Но имеются, конечно, и
специальные приборы, которые способны
разветвлять MIDI-сообщения. Тогда нет
необходимости в последовательном подключении
MIDI-устройств.
Рис. 4. Компьютер посылает
MIDI-сообщения для синтезатора и звукового модуля
через свой MIDI-выход. Они оба поступают на MIDI-вход
синтезатора, оба выходят через его разъем MIDI Thru.
Синтезатор не может добавить никакую свою
информацию, поэтому эти MIDI-сообщения в
неизмененном виде поступают на MIDI-вход звукового
модуля. Каждое из устройств-получателей само
определяет, какие команды, находящиеся в
MIDI-сообщениях, ему следует выполнять. Кривые
линии красного цвета изображают MIDI-кабели,
прямые линии красного цвета — схематический
путь MIDI-информации
|
Итак, первое — при подключении
MIDI-устройств вы всегда должны учитывать
направление передачи информации. Второе —
при подключении третьего и следующих
MIDI-устройств вы должны пользоваться разъемом MIDI
Thru. Третье — передаваемая MIDI-информация
аналогична управлению вашим синтезатором с
помощью ручек, кнопок или клавиш.
MIDI-сообщение
Как записывается MIDI-сообщение
Для того чтобы одно устройство могло понимать
информацию, посланную другим устройством, язык
MIDI имеет строгую формальную структуру. Вся
информация передается в виде последовательности
MIDI-сообщений.
MIDI-сообщение — это управляющая команда,
использующая особый язык (протокол) MIDI.
MIDI-сообщение (как и любое компьютерное
сообщение) записывается в битах, то есть выглядит
как последовательность цифр 1 или 0 — 10011010
00101110… Но так как такая запись выглядит очень
громоздкой, то для чтения и редактирования
MIDI-сообщений применяется шестнадцатеричный
способ записи иединица измерения — байт.
Записать
число |
В
байтах (в шестнадцатеричном виде) |
В
байтах (в двоичном виде) |
В
байтах (в десятичном виде) |
00 |
0000 0000 |
0 |
01 |
0000 0001 |
1 |
02 |
0000 0010 |
2 |
03 |
0000 0011 |
3 |
04 |
0000 0100 |
4 |
05 |
0000 0101 |
5 |
06 |
0000 0110 |
6 |
07 |
0000 0111 |
7 |
08 |
0000 1000 |
8 |
09 |
0000 1001 |
9 |
0A |
0000 1010 |
10 |
0B |
0000 1011 |
11 |
0C |
0000 1100 |
12 |
0D |
0000 1101 |
13 |
0E |
0000 1110 |
14 |
0F |
0000 1111 |
15 |
10 |
0001 0000 |
16 |
11 |
0001 0001 |
17 |
12 |
0001 0010 |
18 |
… |
… |
… |
FF |
1111 1111 |
127 |
Для того, чтобы быть понятным, MIDI-сообщение
имеет четкую структуру. Эта структура зависит от
типа MIDI-сообщения.
Типы MIDI-сообщений
Все типы MIDI-сообщений делятся на две большие
группы (рис. 5). Системные MIDI-сообщения (System message)
передают команды, которые воздействуют на общие
параметры и режимы работы всех
устройств-получателей.
Рис. 5. Разделение всех типов
MIDI-сообщений на две группы
|
Примером системного сообщения может служить
команда “Старт”, которая включает режим
воспроизведения у любого секвенсора или
магнитофона, находящегося в MIDI-связке.
Канальные MIDI-сообщения (Channel message) включают в
себя номер MIDI-канала и передают сообщения на
каждый MIDI-канал индивидуально. Всего для одного
(и каждого) устройства MIDI-технология
предусматривает 16 MIDI-каналов.
MIDI-каналы
Представьте себе обычный многодорожечный
магнитофон. На одну дорожку можно записать трубу,
на другую — гитару и так далее. При
воспроизведении мы слышим все записанные
дорожки одновременно.
MIDI-каналы предназначены для того, чтобы один
синтезатор или звуковой модуль мог играть
несколькими разными тембрами одновременно,
причем каждый тембр (инструмент) исполняет свою
независимую партию.
Когда одно устройство передает канальные
MIDI-сообщения на другое, внешне это выглядит так,
как если бы они были соединены шестнадцатью
кабелями (и по каждому следуют указания о том,
какие ноты каким тембром играть).
Рис.
6. Разделение MIDI-сообщений на MIDI-каналы
|
На самом деле MIDI-технология использует один
кабель, но в каждое канальное MIDI-сообщение
вписывается номер MIDI-канала, для которого оно
предназначено. Устройство-получатель, пользуясь
этим номером, направляет каждое канальное
MIDI-сообщение на свой канал (рис. 6).
Типы сообщений из группы Channel
Канальные MIDI-сообщения
можно разделить по типам их структуры и по их
целям. В последнем случае имеются две группы
MIDI-сообщений: голосовые (Voice message) и режимные (Mode
message).
Рис. 7. MIDI-сообщения из
группы Channel. Все режимные сообщения по типу (а не
по функциям, как они разделены на этом рисунке)
являются MIDI-сообщениями типа Control Change, поэтому
изображены одним цветом и обведены пунктиром
|
Голосовые сообщения несут информацию о
нотах, тембре и других характеристиках, которые
должно учитывать устройство-получатель для
конкретного MIDI-канала.
Режимные сообщения тоже делятся на две
группы. Первая группа воздействует на
конкретный MIDI-канал (эти сообщения устанавливают
канал в состояние по умолчанию — сбрасывают
все ноты, настраивают канал на стандартную
высоту звука и пр.).
Сообщения второй режимной группы
воздействуют на все MIDI-устройство в целом,
другими словами, устанавливают режим его работы.
MIDI-сообщения группы System
В отличие от канальных сообщений все
MIDI-сообщения группы System message принадлежат одному типу (то есть
имеют одинаковый статус). Это можно увидеть и на
рис. 7.
Но по своему функциональному назначению их
делят на три подгруппы (рис. 8). К первой из
них (System Real Time) относятся сообщения, связанные с
синхронизацией работы двух MIDI-устройств.
Рис. 8. MIDI-сообщения из группы
System message (подгруппы показаны разным цветом, но по
статусу принадлежат к одному типу — Control Change)
|
Во второй подгруппе (System Common) находятся
сообщения, которые одинаково воспринимаются
всеми MIDI-устройствами. Поэтому они и называются
“общими”. Эта группа просто собрана из
различных MIDI-сообщений, и между ними нет никакой
логической связи.
Сообщения третьей группы (System Exclusive)
являются одними из самых важных и самых
неформализованных в MIDI-технологии. Они носят
название “эксклюзивные”, потому что содержание
данных определяется для каждого MIDI-устройства
своей фирмой-производителем и не может быть
распознано устройством другой модели или фирмы.
Среди этих сообщений могут быть команды о
настройке всего устройства целиком или
отдельных его модулей. Другие сообщения
управляют процессом передачи данных сэмплов или
каких-то специальных файлов (Sample Dump, File Dump).
Структура MIDI-сообщения
Каждое MIDI-сообщение (кроме System Exclusive) состоит из
одного, двух или трех байтов (рис. 9). Первый байт
содержит информацию о типе MIDI-сообщения — Status
byte (иногда называют Status Bar). Этот байт определяет
тип сообщения, и затем, в зависимости от типа,
устройство-получатель будет перерабатывать
другие байты этого MIDI-сообщения в
соответствующую команду.
Некоторые MIDI-сообщения (например, Program Change) не
имеют второго байта данных.
Если MIDI-сообщение является канальным, то его
первый байт (кроме статуса) содержит номер
MIDI-канала. Второй и третий байты MIDI-сообщения
называются Байт данных 1 (Data byte 1) и Байт данных 2
(Data byte 2). Байты данных содержат конкретную
информацию, которую несет это MIDI-сообщение.
Например, для сообщения “Взять ноту” Байт
данных 1 указывает, какую именно ноту, а Байт
данных 2 — с какой громкостью.
Рис. 9. Возможные виды
MIDI-сообщений группы Channel message
|
Сообщения типа System Exclusive могут содержать
большое количество байтов данных (рис. 10).
Рис. 10. Возможные виды
MIDI-сообщений типа System message
|
А MIDI-сообщения типа System Real time содержат только
Status byte.
Как определяется тип MIDI-сообщения
Как уже отмечалось, тип MIDI-сообщения
определяется по его статус-байту. В табл. 2
показаны различные значения статус-байта и
соответствующие типы сообщений.
Итак, MIDI-информация, которую одно устройство
передает другому, может быть в форме какого-либо
из этих восьми типов. Некоторые из них понятны
без комментариев (нажатие и снятие ноты), другие
нуждаются в небольших пояснениях.
Любое MIDI-устройство не обязано посылать или
отрабатывать обязательно все типы сообщений.
Каждая фирма-производитель исходит из
соображений целесообразности. Из этого следует,
что различные MIDI-устройства, например
синтезаторы, в одинаковых условиях могут вести
себя по-разному (хотя с этим идет борьба). Самые
простые домашние синтезаторы (с уменьшенными
клавишами) не воспринимают, например, силу удара
по клавише — громкость можно менять только
ручкой и для всего инструмента сразу. Это
напоминает игру на аккордеоне,
только у него громкость зависит от величины
разведения мехов.
А на практике?
Для чего, кому, и в каком объеме нужно
разбираться в MIDI-технологии? Если вы принесли из
магазина синтезатор, включили его, и он
заиграл — то, возможно, никаких знаний и не
потребуется. Кстати, такова цель любого
производителя.
Знания нужны или потому, что что-то не работает
(а может быть оно, кстати, и не должно работать),
или для того, чтобы применить их в каком-то
творческом процессе. Во втором случае вам
придется подробней разобраться в тонкостях
MIDI-технологии, но, конечно, в рамках
необходимости. Абсолютно сведущих специалистов,
возможно, вообще нет, так как процессом развития
этой области занимаются многие фирмы в разных
концах земного шара.
Для иллюстрации же первого случая разберем
простой пример. Посмотрите еще раз на рис. 1. Вы
правильно соединили проверенным MIDI-кабелем два
устройства (то есть MIDI Out синтезатора с MIDI In
звукового модуля), а звука в колонках нет, хотя
демонстрационные пьесы самого модуля играют. И
сам по себе синтезатор тоже играет. Налицо факт
отсутствия понимания между устройствами.
Проверяем у синтезатора:
включен ли режим посылки
MIDI-сообщений (по умолчанию — включен, но вдруг
вы что-то перепутали);
какой MIDI-канал установлен для
посылки MIDI-сообщений (установите, например, MIDI
Channel=1);
есть ли фильтр для посылки
MIDI-сообщений (вдруг там, например, отсеиваются
взятия нот).
Некоторые MIDI-устройства и компьютерные
программы имеют кнопку Reset или Panic, которая
устанавливает все параметры в значения по
умолчанию. Если она имеется, воспользуйтесь ею.
Проверяем у звукового модуля:
включен ли режим приема
MIDI-сообщений (по умолчанию должен быть включен);
какой режим приема включен (он
может быть разным в зависимости от устройства:
возможно, включен режим Mono, и тогда ваш звуковой
модуль будет играть, но одним тембром независимо
от MIDI-канала) —необходимо установить режим Poly;
какой MIDI-канал установлен для
приема MIDI-сообщения (если установлен режим Poly, то
сообщения будут приниматься по всем шестнадцати
каналам одновременно);
есть ли фильтр для приема
MIDI-сообщений (а вот приемный фильтр у всех
уважающих себя устройств имеется), и что у него
выставлено.
Возможна еще одна причина непонимания.
Поиграйте в середине клавиатуры. Возможно,
какой-нибудь тембр звукового модуля и не должен
звучать очень высоко или очень низко.
Все это верно и при подключении синтезатора к
компьютеру, только в роли звукового модуля будет
выступать установленная на компьютере
программа.
И последнее. На стандартном синтезаторе
колесико или рычажок слева от клавиатуры
посылает MIDI-сообщения типа Pitch Bend (изменение
высоты звука). Колесико или рычажок, называемый
Modulation, посылает сообщение Control Change (см. рис. 9,
первый байт данных равен единице, что и означает
модуляцию, второй байт равен глубине модуляции).
Ручка или движок громкости тоже посылает
сообщение Control Change (первый байт данных равен семи,
что означает громкость, второй байт сообщает о
силе громкости).
Кнопки или ручки, меняющие громкость, посылают
MIDI-сообщение типа Program Change (оно имеет только
первый байт данных — номер тембра).
Таблица 2. Определение типа MIDI-сообщения
по статус-байту
Группа
MIDI-сообщений |
Status byte |
Тип MIDI-сообщения |
Пояснение |
Channel |
8 |
Note Off |
Снятие ноты |
|
9 |
Note On |
Взятие ноты |
|
A |
Aftertouch Poly (Polyphonic Key
Pressure) |
Контроллер
Aftertouch, который влияет на отдельную ноту |
|
B |
Control Change |
Контроллер
для изменения какого-нибудь параметра MIDI-канала |
|
C |
Program Change |
Номер тембра для
MIDI-канала |
|
|
D |
Aftertouch Channel (Channel
Pressure) |
Контроллер
Aftertouch, который влияет на все ноты MIDI-канала |
|
E |
Pitch Bend |
Относительное
изменение высоты звука (влияет на все ноты
MIDI-канала) |
System |
F |
System |
Real Time |
Сообщения,
которые передаются не для отдельного MIDI-канала, а
для всего устройства или группы устройств |
|
|
|
Common |
|
|
|
|
Exclusive |
|
И, конечно, все эти сообщения имеют в
статус-байте букву — E, B, B и С
соответственно — и номер MIDI-канала (см. рис. 9 и
табл. 2).
|