Резюме: | Изложение принципов MIDI-технологии в наглядном виде. |
С О Д Е Р Ж А Н И Е |
Вступление Не учиться, не учиться и еще раз не учиться Назначение MIDI и подключение MIDI-устройств Какая информация передается с помощью MIDI Какие музыкальные устройства могут получать и принимать информацию по MIDI |
MIDI-сообщение Как записывается MIDI-сообщение Типы сообщений из группы Channel |
Появившаяся в начале восьмидесятых годов MIDI-технология вскоре получила новый импульс в связи с широким распространением персональных компьютеров. И хотя еще в 1991 году мне попалась какая-то статья, где почти со злорадством перечислялись ее недостатки и предсказывалась скорая кончина, до настоящего времени альтернативной идеи и альтернативной технологии создано не было. Основными недостатками MIDI считаются низкая скорость передачи информации, узкий диапазон изменения параметров и ограниченная сфера применения. |
В то время как одно из главных ее достоинств — небольшой объем файлов — в последнее время уже потеряло решающее значение: цены на пишущие CD-приводы и “болванки” для записи становятся все доступнее. А с появлением широких возможностей по использованию при создании музыки готовых, заранее записанных музыкальных фраз с CD-качеством (всякие “лупы”, “сэмплы” и т.п.) многие “артисты” вообще решили, что таких проблем, как обучение нотной грамоте, владению инструментом, MIDI-технология и пр. для них не существует. |
Следуя этой логике, запись музыки банальными нотами и диезами должна была уйти в небытие с появлением фонографа Эдисона. Вот когда настоящий прогресс пришел на смену устаревшей технологии и беспросветному консерватизму! Как подумаешь, что и Бах, и Шнитке пользовались одними и теми же пятью нотными линейками, то такие понятия, как “секвенсор” или “контроллер” уже не кажутся столь древними. |
Однако если принять во внимание, что MIDI-технология изначально предназначалась не для записи или воспроизведения музыки, а только лишь для управления на некоем расстоянии (в пространстве и времени) синтезаторами, звуковыми модулями и прочими “железными” ящиками, то многие претензии к ней будут сняты. Это все равно, что упрекать виолончель за плохое звучание во флейтовом регистре. |
Итак, чтобы закончить мысль о достоинствах и недостатках MIDI, сделаем несколько предварительных выводов. Во-первых, MIDI-технология остается ведущей в компьютерной и аппаратно-студийной области. Во-вторых, она совершенствуется, учитывает новые требования и новые технические возможности. Об этом говорит последовательное появление стандартов GM, GS и XG. В-третьих, идея оказалась настолько удачной, что MIDI-технология вовлекает в сферу своего влияния все новые и новые области, для которых она и не предназначалась, — управление магнитофонами, устройствами звуковой обработки, микшерскими пультами (не говоря уже о мультимедийных продуктах и компьютерных играх). |
Здесь же хочу затронуть еще одну близкую мне тему. В музыкальном обучении качество звучания уже не играет столь значительной роли, как в звукозаписи или концертной деятельности. Зато возможность воспроизводить изучаемый опус в любом темпе и (тут вокалисты и духовики должны затаить дыхание) в любой тональности делают MIDI-технологию незаменимой в музыкальных школах и училищах. Я думаю, недалеко то время, когда некий аппарат, с подобными характеристиками станет распространенней метронома. А вместо толстых нотных сборников люди будут покупать дискеты с этюдами Черни или Шопена. |
Когда ко мне приходит молодой человек с просьбой научить его работать с какой-нибудь программой, я предлагаю для начала пройти азы MIDI. Если до этого он уже записал пару треков на каком-нибудь секвенсоре, то его первая реакция: “Да это и так понятно”! Когда ему показываешь разницу между MIDI-файлом, “настуканным” (выражение грубое, но справедливое) одним пальцем в шаговом режиме, и аранжировкой, сделанной с учетом всех возможностей MIDI, он с энтузиазмом хватается за все доступные источники информации. |
Здесь его подстерегают первые неприятности. В течение многих лет разные наши авторы пишут о MIDI в различных журналах, а иногда и в книгах. Это по-настоящему хорошо, потому что никакого другого учебника или пособия нет. Трудно судить о зарубежных изданиях, которые усиленно рекламируются в американских и английских музыкальных журналах. Переводить их — сплошное мучение из-за горючей смеси компьютерных, музыкальных и “жаргонно-тусовочных” терминов. Вполне возможно, что такой переводчик еще не родился. |
О второй очереди неприятностей многие сразу и не догадываются. Дело в том, что эти пособия пишут не музыканты и преподаватели, а инженеры, программисты и дилеры. Не кажется странным, что учебник по теории музыки написан не Полом Маккартни или Владимиром Спиваковым, а скромным профессиональным педагогом. Я не думаю обижать или обвинять кого-нибудь из авторов. Спрос есть, и писать об этом надо. Но, к сожалению, и логика изложения, и форма, и прочие невинные педагогические приемы во всех материалах отсутствуют. |
Рано или поздно об этом догадывается любой читатель. Он прочитывает страницу за страницей один раз, потом второй, третий… И, наконец, приходит к одному из трех выводов. “Мне никогда этого не одолеть”, — решает он, и это порой справедливо. Сведения не систематизированы, изложены в произвольном порядке, отрывочны, и не все термины объяснены... “Ну и черт с ним, проживу без этих премудростей”, — может подумать уставший читатель. И здесь я соглашусь — о смертельных исходах от незнания MIDI что-то пока не слыхать! |
А если ему совсем не повезет, он решит, что нечего тратить время и деньги на книги и журналы, благо у всякой программы есть руководство и хэлп. И хотя я знаю книгу об одной популярной музыкальной программе, содержащую по пять-шесть ошибок на страницу в логике, фактах, в английском, а иногда и в русском языке — тут я с ним не соглашусь никогда. |
Во-первых, эти руководства и хэлпы создают те же программисты с их “особенным” видением мира. Если бы этих руководств было достаточно, компьютерные отделы книжных магазинов не сияли бы такой глянцевой пестротой. |
Во-вторых, ни в одном руководстве я не видел ничего похожего на фразу: “Здесь наша программа должна сделать то-то, но почему-то она этого не делает”. Столько полезного можно найти в журналах, что порой кажется, будто производители заранее договариваются с журналистами о том, какие они наделают “бяки” в программах, а уж писатели на радость читателям будут их на этом ловить. |
На основании всего вышесказанного хочу обратиться к любому человеку, будь он музыкант, звукорежиссер, разработчик мультимедийных программ или простой любитель покопаться в музыкальных программах: MIDI-технология не устарела, не так уж и сложна и не будет тормозом в вашем творчестве — смелее! В этом материале будут рассмотрены самые первые, и, пожалуй, самые главные темы — назначение MIDI и типы MIDI-сообщений. |
MIDI — Musical Instrument Digital Interface — компьютерный протокол (иногда говорят — язык), предназначенный для связи одного музыкального устройства с другим. Оба эти устройства должны обладать любого вида микропроцессором или программой, которые поддерживают MIDI-протокол. |
Цель MIDI — управлять работой музыкального устройства не с его панели или клавиатуры, а на расстоянии (по MIDI-кабелю) — с другого устройства. Для этого второе устройство передает первому последовательность управляющих команд, которые называются MIDI-сообщениями. |
Рис 1. Пример использования MIDI. На синтезаторе вы можете играть ноты, выбирать новый тембр инструмента, менять громкость, но сам он сейчас не звучит. Все перечисленные действия передаются по MIDI-кабелю (красного цвета) в виде команд на звуковой модуль. Последний выполняет все эти действия (звучат сыгранные ноты, меняется тембр и громкость) и выдает звук через обычные динамики. Красная стрелка показывает направление потока MIDI-сообщений |
Все, что вы делаете, управляя работой своего музыкального устройства (крутите ручки, нажимаете на кнопки, играете на клавиатуре), может передаваться в виде управляющих MIDI-сообщений на ваше устройство с другого MIDI-устройства. Примечание 1. MIDI-сообщение передает не сам звук (аудиоинформацию) или какие-то его характеристики, а только управляющие команды, которые выполняются устройством-получателем. |
Примечание 2. Сам процесс передачи MIDI-сообщения может осуществляться в реальном времени (во время исполнения или воспроизведения музыки), но может быть и разорванным во времени. В этом случае MIDI-сообщение записывается в виде файла на дискету или хард-диск компьютера, а потом считывается устройством-получателем. |
Технология MIDI с самого начала была предназначена для связи между самыми различными устройствами (синтезаторами, звуковыми модулями, компьютерами, устройствами цифровой обработки звука и многими другими). |
MIDI-устройство должно иметь: |
По MIDI-кабелю (в отличие, скажем, от телефонного) информация передается всегда в одном направлении. Поэтому каждый MIDI-разъем используется только для одной цели в зависимости от его вида. |
В качестве разъема для MIDI используется стандартный европейский 5-контактный разъем (рис. 2). |
Рис. 2. MIDI-разъем. Контакт 2 — земля, контакты 4 и 5 — сигнальные, контакты 1 и 3 — не используются. |
Таблица 1. Описание контактов в MIDI-разъеме.
MIDI Out | MIDI-выход. Через этот разъем устройство посылает MIDI сообщение на другое устройство |
MIDI In | MIDI-вход. Через этот разъем устройство получает MIDI сообщение от другого устройства |
MIDI Thru | Сквозной. Через этот разъем посылается точная копия любого MIDI-сообщения, которое поступило на разъем MIDI In |
Существует три вида MIDI-разъемов. Назначение каждого понятно из таблицы 1. |
MIDI-кабель соответственно должен иметь три провода, которые соединяют контакты 1, 4 и 5 на обоих его концах. |
Всегда одно устройство передает 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-сообщение (как и любое компьютерное сообщение) записывается в битах, то есть выглядит как последовательность цифр 1 или 0 — 10011010 00101110… Но так как такая запись выглядит очень громоздкой, то для чтения и редактирования MIDI-сообщений применяется шестнадцатеричный способ записи иединица измерения — байт. |
Таблица 2.Как записать число:
В байтах (в шестнадцатеричном виде) | В байтах (в двоичном виде) | В байтах (в десятичном виде) |
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-сообщений делятся на две большие группы (рис. 5). Системные MIDI-сообщения (System message) передают команды, которые воздействуют на общие параметры и режимы работы всех устройств-получателей. |
Примером системного сообщения может служить команда “Старт”, которая включает режим воспроизведения у любого секвенсора или магнитофона, находящегося в MIDI-связке. |
Рис. 5. Разделение всех типов MIDI-сообщений на две группы |
Примером системного сообщения может служить команда “Старт”, которая включает режим воспроизведения у любого секвенсора или магнитофона, находящегося в MIDI-связке. |
Канальные MIDI-сообщения (Channel message) включают в себя номер MIDI-канала и передают сообщения на каждый MIDI-канал индивидуально. Всего для одного (и каждого) устройства MIDI-технология предусматривает 16 MIDI-каналов. |
Представьте себе обычный многодорожечный магнитофон. На одну дорожку можно записать трубу, на другую — гитару и так далее. При воспроизведении мы слышим все записанные дорожки одновременно. MIDI-каналы предназначены для того, чтобы один синтезатор или звуковой модуль мог играть несколькими разными тембрами одновременно, причем каждый тембр (инструмент) исполняет свою независимую партию. |
Когда одно устройство передает канальные MIDI-сообщения на другое, внешне это выглядит так, как если бы они были соединены шестнадцатью кабелями (и по каждому следуют указания о том, какие ноты каким тембром играть). На самом деле MIDI-технология использует один кабель, но в каждое канальное MIDI-сообщение вписывается номер MIDI-канала, для которого оно предназначено. Устройство-получатель, пользуясь этим номером, направляет каждое канальное MIDI-сообщение на свой канал (рис. 6). |
Рис. 6. Разделение MIDI-сообщений на MIDI-каналы |
Канальные MIDI-сообщения можно разделить по типам их структуры и по их целям. В последнем случае имеются две группы MIDI-сообщений: голосовые (Voice message) и режимные (Mode message). Голосовые сообщения несут информацию о нотах, тембре и других характеристиках, которые должно учитывать устройство-получатель для конкретного MIDI-канала. |
Режимные сообщения тоже делятся на две группы. Первая режимная группа воздействует на конкретный MIDI-канал (эти сообщения устанавливают канал в состояние по умолчанию — сбрасывают все ноты, настраивают канал на стандартную высоту звука и пр.). Сообщения второй режимной группы воздействуют на все MIDI-устройство в целом, другими словами, устанавливают режим его работы. |
Рис. 7. MIDI-сообщения из группы Channel. Все режимные сообщения по типу (а не по функциям, как они разделены на этом рисунке) являются MIDI-сообщениями типа Control Change, поэтому изображены одним цветом и обведены пунктиром |
В отличие от канальных сообщений все 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-сообщение (кроме 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). |
А MIDI-сообщения типа System Real time содержат только Status byte. |
Рис. 10. Возможные виды MIDI-сообщений типа System message. |
Как уже отмечалось, тип MIDI-сообщения определяется по его статус-байту. В табл. 3 показаны различные значения статус-байта и соответствующие типы сообщений. Итак, MIDI-информация, которую одно устройство передает другому, может быть в форме какого-либо из этих восьми типов. Некоторые из них понятны без комментариев (нажатие и снятие ноты), другие нуждаются в небольших пояснениях. |
Любое MIDI-устройство не обязано посылать или отрабатывать обязательно все типы сообщений. Каждая фирма-производитель исходит из соображений целесообразности. Из этого следует, что различные MIDI-устройства, например синтезаторы, в одинаковых условиях могут вести себя по-разному (хотя с этим идет борьба). Самые простые домашние синтезаторы (с уменьшенными клавишами) не воспринимают, например, силу удара по клавише — громкость можно менять только ручкой и для всего инструмента сразу. Это напоминает игру на аккордеоне, только у него громкость зависит от величины разведения мехов. |
Таблица 3. Определение типа 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 |
Для чего, кому, и в каком объеме нужно разбираться в MIDI-технологии? Если вы принесли из магазина синтезатор, включили его, и он заиграл — то, возможно, никаких знаний и не потребуется. Кстати, такова цель любого производителя. Знания нужны или потому, что что-то не работает (а может быть оно, кстати, и не должно работать), или для того, чтобы применить их в каком-то творческом процессе. Во втором случае вам придется подробней разобраться в тонкостях MIDI-технологии, но, конечно, в рамках необходимости. Абсолютно сведущих специалистов, возможно, вообще нет, так как процессом развития этой области занимаются многие фирмы в разных концах земного шара. |
Для иллюстрации же первого случая разберем простой пример. Посмотрите еще раз на рис. 1. Вы правильно соединили проверенным MIDI-кабелем два устройства (то есть MIDI Out синтезатора с MIDI In звукового модуля), а звука в колонках нет, хотя демонстрационные пьесы самого модуля играют. И сам по себе синтезатор тоже играет. Налицо факт отсутствия понимания между устройствами.
Проверяем у синтезатора: |
Некоторые MIDI-устройства и компьютерные программы имеют кнопку Reset или Panic, которая устанавливает все параметры в значения по умолчанию. Если она имеется, воспользуйтесь ею. Проверяем у звукового модуля: - включен ли режим приема MIDI-сообщений (по умолчанию должен быть включен); |
- какой режим приема включен (он может быть разным в зависимости от устройства: возможно, включен режим Mono, и тогда ваш звуковой модуль будет играть, но одним тембром независимо от MIDI-канала) — необходимо установить режим Poly; - какой MIDI-канал установлен для приема MIDI-сообщения (если установлен режим Poly, то сообщения будут приниматься по всем шестнадцати каналам одновременно); - есть ли фильтр для приема MIDI-сообщений (а вот приемный фильтр у всех уважающих себя устройств имеется), и что у него выставлено. |
Возможна еще одна причина непонимания. Поиграйте в середине клавиатуры. Возможно, какой-нибудь тембр звукового модуля и не должен звучать очень высоко или очень низко. Все это верно и при подключении синтезатора к компьютеру, только в роли звукового модуля будет выступать установленная на компьютере программа. |
И последнее. На стандартном синтезаторе колесико или рычажок слева от клавиатуры посылает MIDI-сообщения типа Pitch Bend (изменение высоты звука). Колесико или рычажок, называемый Modulation, посылает сообщение Control Change (см. рис. 9, первый байт данных равен единице, что и означает модуляцию, второй байт равен глубине модуляции). Ручка или движок громкости тоже посылает сообщение Control Change (первый байт данных равен семи, что означает громкость, второй байт сообщает о силе громкости). |
Кнопки или ручки, меняющие громкость, посылают MIDI-сообщение типа Program Change (оно имеет только первый байт данных — номер тембра). |
И, конечно, все эти сообщения имеют в статус-байте букву — E, B, B и С соответственно — и номер MIDI-канала (см. рис. 9 и табл. 3). |