Проще говоря, MIDI – это язык. Сам по себе он ничего не сделает: если вы решите послушать необработанный MIDI-поток, то он будет звучать просто как шум. Но соедините два устройства, которые разговаривают на одном языке, и произойдет чудо.
MIDI – как компьютерный язык, который просто позволяет одному устройству сообщать другому, что необходимо делать. В зависимости от того, какое устройство получает сообщение и как сообщение составлено, это может означать: «воспроизвести этот звук» или, к примеру, «начни воспроизведение новой песни и заглуши вокал».
Иногда можно услышать о «плохом качестве MIDI-музыки». Например, все мои друзья, знакомые с аудио и музыкой в компьютере на уровне WinAMP, искренне убеждены в этом мифе. Но на самом деле MIDI-файл – это не музыка, это набор команд по управлению электронными музыкальными инструментами и ничего более. Вспомним классический духовой орган: здесь исполнитель посредством сложнейшей механики управляет подачей воздуха в звучащие трубы. MIDI – это электронный аналог такой механики, инструмент, при помощи которого исполнитель реализует свои замыслы. Поэтому совершенно бессмысленно говорить о «плохом качестве MIDI», важно лишь определение возможностей управления, предоставляемого этим цифровым интерфейсом. Разговор о качестве уместен лишь тогда, когда дело касается используемых сэмплов.
Если вы играли на клавиатуре и записали данные MIDI в секвенсор (программу, которая записывает и воспроизводит эти данные), то программа в действительности сохранит серию сообщений о том, какие клавиши нажимали, как сильно вы их нажимали и когда отпускали (и именно поэтому проекты секвенсоров, содержащие чистые MIDI-данные, занимают крохотное место на диске). Проиграйте последовательность снова – и звуковой модуль в секвенсоре воспроизведет ваше исполнение. Можно изменить номер банка данных: вместо рояля поставить, скажем, трубу. Результат будет необычен, но для секвенсора – никакой разницы.
В этом сила MIDI: можно менять все. Измените ноту или тональность, смените банк звуков, растяните или сожмите дорожку по времени – все это и многое другое можно сделать с помощью этого замечательного интерфейса.
Более того: даже в вашем мобильном телефоне полифония осуществляется при помощи MIDI.
Возможности соединения
Устройства MIDI передают информацию с помощью специальных портов данных. Поскольку MIDI реализует одностороннюю передачу данных, вы обычно видите три разъема MIDI, обозначенных словами «in», «out» и «thru» (рис. 2.1). Будучи двоичным языком, MIDI хорошо подходит как для USB, так и для FireWire, поэтому все больше и больше устройств поддерживают эти интерфейсы. MIDI использует пятиконтактные DIN-разъемы, но при этом разводка разъема не такая, как в стандартных DIN-кабелях, используемых в советской радиоэлектронике. Поэтому убедитесь, что покупаете кабели, разработанные для MIDI, потому что, если вы решите подключить обычный советский кабель от папиного стереоусилителя, вы в лучшем случае не получите ничего. Старайтесь, чтобы кабель был как можно короче: при длине 5 м происходит ухудшение сигнала, а дешевые MIDI-кабели превращаются в замечательные радиоантенны, то есть создают помехи.
В протоколе обмена информацией для MIDI-соединений нет ничего сложного: данные покидают устройство через порт «out» и входят через порт «in». А для двусторонней связи соответственно нужны два кабеля – так обычно и осуществляется обмен информацией между устройствами. Порты «MIDI thru» просто передают любое сообщение, полученное в порт «in», без прибавления новых данных.
Зачем нужно это делать? Одна из возможных причин – использование последовательного подключения нескольких звуковых модулей. Настроив все устройства так, чтобы они отвечали различным каналам, вы создадите многоэлементную цепочку модулей (рис. 2.2).
Поток данных MIDI легко передается в компьютер и из него. Хотя вы до сих пор можете найти старые системы, использующие последовательные и параллельные порты (если сильно постараетесь), большинство интерфейсов MIDI сейчас применяют или USB, или FireWire.
Многие аудиоинтерфейсы, включая большинство внешних аудиоплат на FireWire и USB, также содержат MIDI-порты. Да и большинство клавишей (то есть MIDI-клавиатур и синтезаторов – так они называются в среде музыкантов) сейчас имеют возможность подключения к USB или FireWire, а некоторые даже содержат аудиоинтерфейсы.
Довольно распространенным до сих пор способом создания на компьютере MIDI-интерфейса остается вариант с подключением специального кабеля с оптронной развязкой к игровому порту звуковой платы (рис. 2.3). Такой вариант, пожалуй, наименее затратен – учитывая неизменную на протяжении многих лет стоимость такого кабеля в 10–15 долларов. Но это, конечно, не самый лучший вариант: вы представляете, что можете получить за такие гроши?
Хорошенько подумайте о смысле жизни перед покупкой аудио/MIDI-интерфейса. Если у вас большая система или вы собираетесь подключать несколько синтезаторов (звуковых модулей) или любых других устройств с синхронизацией по MIDI – возможно, стоит подумать о покупке мультипортового интерфейса (то есть специализированного внешнего MIDI-интерфейса с двумя или более парами портов). Стоимость варианта вида 2?2 (два входных порта MIDI и два выходных) составляет около 1500 рублей. Больше портов – соответственно и дороже. Наиболее объемные по количеству портов варианты по цене превышают 9000 рублей.
Как все это работает
Далее я расскажу вам немного про то, как все это происходит внутри. Если эта часть вам не интересна, ее легко можно пропустить.
Сообщение MIDI состоит из трех 8-битовых «слов». По сути своей сообщения MIDI можно условно разделить на сообщения каналам и сообщения системе. Можно догадаться, что вторые обращены к целой системе, а первые относятся к одному из 16 MIDI-каналов. В дальнейшем сообщения каналам делятся на «голосовые», которые содержат большинство информации о музыкальном исполнении, такой как ноты, скорость исполнения и т. п., и «режимные», влияющие на то, как устройство-получатель будет отвечать на входящее сообщение. Сообщения системе делятся на «системное общее», «системное в режиме реального времени» и «системное эксклюзивное».
Сообщения банков
Здесь поток данных больше всего. Сообщения банков передают каналам самые важные данные исполнения – какие ноты и когда вы сыграли и как быстро нажимали клавиши.
Нажатие/отпускание клавиши
В действительности клавиатура электронного музыкального инструмента – это ряд переключателей. Коснитесь клавиши, и вы отошлете MIDI-сообщение вроде этого: «В канале XX была включена нота YY». Уберите палец, и будет переслано сообщение «Нота отключена».
Velocity
Оно относится к тому, насколько резко вы нажимаете клавишу и сыграете ноту. Чем сильнее нажатие, тем громче нота – как на фортепиано. Интересно, что при отключении ноты также регистрируется значение velocity, но большинство программного обеспечения это сообщение игнорирует.
Послекасание (Aftertouch)
Многие клавиатуры имеют под клавишами чувствительную к давлению мембрану, для того чтобы зафиксировать давление на клавишу после нажатия. Эту информацию принято использовать для добавления эффекта вибрато или других типов модуляции к звуку. Команда полифонического послекасания воздействует на каждую ноту индивидуально, а сообщение канального послекасания присваивает одно значение всем клавишам.
Амплитудное вибрато
С его помощью гитаристы и музыканты, играющие на духовых инструментах, прибавляют выразительности своему исполнению. Благодаря данной команде миллионы клавишников могут представить, что играют соло.
Смена банка
Эти сообщения выбирают звуки (сэмплы), которые будет воспроизводить инструмент-получатель. Так как у любого производителя (а на самом деле у каждой отдельной модели) есть собственная система нумерации сэмплов, в свое время для стандартизации был разработан специализированный протокол General MIDI. Звуки обычно хранят в банках данных по 128 сэмплов (см. далее).
Смена контроллера
Спецификация MIDI содержит большое количество управляющих сообщений, которые называются контроллерами. Некоторые из них, такие как, например, № 7 (громкость), № 33 (модуляция) и № 64 (нажатие педали), влияют на то, каким образом модулируется звук. Контроллер № 0 (выбор банка данных) расширяет количество выбираемых сэмплов выбором встроенных звуковых банков. Некоторые контроллеры зарезервированы.
Контроллеры MIDI работают в режиме реального времени. Некоторые из них имеют только два состояния: «включено» и «отключено», но большинство позволяет устанавливать значения в пределах от 0 до 127 (или, если хотите, от 1 до 128). Управляющую информацию можно записывать, редактировать и воспроизводить так же, как и обычные данные.
Всего существует 128 инструментов MIDI в спецификации GM. Не все они определены точно, поэтому производители по-разному реализуют возможности MIDI-устройств. Так, некоторые контроллеры могут иметь модификации для грубой и для точной настройки. Например, контроллер № 2, амплитудное вибрато, предполагает установку 128 возможных значений, а контроллер № 33, функционально тот же самый, предлагает гораздо больший диапазон выбора значений. Зачем нужны два контроллера? Для большинства случаев грубой настройки вполне хватает, и при этом меньше требования к производительности процессора. Но для некоторых из них, например более точной настройки громкости и панорамирования (паннинга), вам действительно потребуются дополнительные параметры.
Режимные сообщения
Так же как и голосовые, режимные сообщения определяют номер канала, на который должны влиять. Сообщение № 122 устанавливает режим работы клавишного пульта – например, можно отключить воспроизведение звука.
Другие четыре сообщения определяют, будет ли посылаемая информация монофонической (одна нота) или полифонической (более одной ноты).
? Omni on/poly on. По всем каналам принимается полифоническая информация.
? Omni on/poly off. Информация принимается по всем каналам, но в каждый момент времени будет звучать только одна нота на канал. Это имеет смысл, если вы хотите воспроизвести, например, звук духового инструмента.
? Omni off/poly on. Полифоническая информация принимается только по выбранному каналу. Это основной режим при последовательном подключении нескольких устройств через порт thru, когда необходимо, чтобы каждое устройство исполняло отдельную партию.
? Omni off/poly off. Информация принимается по отдельному (отдельным) MIDI-каналу, причем в определенный момент времени на определенном канале будет звучать только одна нота. Поскольку за раз может быть воспроизведена только одна нота, данный режим используется для таких монофонических инструментов, как духовые синтезаторы. Данный режим также обеспечивает возможность использования гитарных MIDI-контроллеров.
Общие системные сообщения
Общие системные сообщения используются для связи с каждым устройством в цепочке. Например, это может быть указание секвенсору относительно выбора записанного в памяти трека или его воспроизведения с произвольного места.
Системные сообщения в режиме реального времени
Интерфейс MIDI удобно использовать для синхронизации нескольких устройств при совместном воспроизведении, например синтезатора и программы-секвенсора. Синхрослово MIDI посылает 24 импульса на каждую четвертную ноту, основываясь на темпе воспроизведения.
Тайм-код SMPTE основан на частоте смены кадров фильма. Он был разработан для синхронизации звука и видео, чтобы саундтреки и диалоги в фильмах воспроизводились корректно. В процессе синхронизации дорожек аналоговый аудиосигнал, содержащий временной код, записывается из SMPTE-генератора прямо на ленту. Временной код MIDI (MTC) – это фактически SMPTE, переведенный на язык, который могут понимать цифровые устройства. В обоих временных кодах (и SMPTE, и MTC) время измеряется в часах, минутах, секундах и кадрах, например: 00:09:11:03. В приведенном примере определена точка в положении 0 часов, 9 минут, 11 секунд и третий кадр.
Зачем нужно знать номер кадра? Например, это помогает вставлять эффекты в нужную точку фильма. При работе с музыкальными композициями это дает большую степень точности хронометража, чем при использовании только минут и секунд. В мире существует несколько стандартов, и до сих пор не достигнуто соглашения о том, сколько кадров нужно воспроизводить за секунду.
Существуют четыре стандарта скорости, и вы сталкивались с ним даже на бытовом уровне: например, если вы хотели посмотреть какой-то фильм с субтитрами и сами субтитры «убегали» вперед при просмотре – это просто значит, что титры были записаны при одной скорости, а фильм – при другой. Короче говоря, основные значения – 24 кадра в секунду (movie-формат), 25 (в европейском видеостандарте) и 29,97 (в американском). Также может быть и 30 кадров, и 23,978, и 24,999, и еще много разных вариантов.
Другие сообщения в режиме реального времени – начало, продолжение и остановка. Их удобно использовать для контроля перемещения по дорожке.
Эксклюзивные системные сообщения
Sysx, или эксклюзивные системные сообщения, – это команды, которые работают только на одной конкретной модели MIDI-устройства, и с их помощью пользователь получает доступ к некоторым специфическим параметрам управления.