MIDI: аппаратная составляющая. Подключение MIDI-клавиатуры к звуковой карте. Что такое MIDI

MIDI: аппаратная составляющая. Подключение MIDI-клавиатуры к звуковой карте. Что такое MIDI

Что такое MIDI, и чем такие файлы отличаются от Wave-файлов

Что такое MIDI

Стандарт MIDI (акроним от Musical Instruments Digital Interface, в буквальном переводе - цифровой интерфейс музыкальных инструментов) представляет собой «язык», на котором «общаются» MIDI-совместимые устройства. Иными словами, этот стандарт описывает определённые сообщения (двоичные команды), которыми могут обмениваться различные MIDI-устройства.

Ключевой особенностью интерфейса MIDI является то, что с его помощью устройства обмениваются именно логическими командами, и никакого отношения к передаче звука как такового MIDI не имеет .

Пример Рассмотрим взаимодействие двух устройств: MIDI-клавиатуры и синтезатора звуков. При нажатии на MIDI-клавиатуре клавиши, соответствующей, к примеру, ноте ЛЯ третьей октавы, MIDI-клавиатура даст синтезатору команду «начать воспроизведение ноты ЛЯ третьей октавы». Когда клавиша будет отпущена, клавиатура, послав другое сообщение, прикажет синтезатору прекратить воспроизведение ноты ЛЯ третьей октавы. При этом звук, издаваемый синтезатором, будет различаться в зависимости от конкретной последнего и его настроек. По MIDI же, подчеркну, передаются только команды и никакого звука.

Следует заметить, что потенциальная сфера применения MIDI не ограничивается только музыкальными инструментами. С таким же успехом можно управлять, например, светомузыкальным оборудованием, а при большом желании - даже промышленными роботами. :)

Очевидно, любая последовательность MIDI-сообщений может быть сохранена в виде обычного файла. Один из форматов хранения последовательностей MIDI-сообщений (SMF - Standard MIDI File) также регламентируется стандартом.

Модификации MIDI

Существует ряд модификаций стандарта MIDI:

  • GM (General MIDI),
  • GS (General Standard),
  • XG (eXtended General).

Каждая из них, помимо основных MIDI-сообщений (одно из которых рассмотрено в примере чуть выше), описывает количество и конкретный набор инструментов (тембров), которые обязательно должны поддерживаться устройством, совместимым соответственно с GM, GS или XG. Фактически эта характеристика имеет смысл только применительно к синтезаторам звуков и означает, что синтезатор с поддержкой, например, GM должен уметь воспроизводить звук любого из 128 предусмотренных спецификацией инструментов. Каждому инструменту соответствует строго определённый номер. Кроме того, MIDI-устройства должны обладать строго определённым количеством независимых MIDI-каналов, каждому из которых может быть назначен свой тебмр и соответствовать собственная последовательность MIDI-событий. Смена тембра, аналогично началу и окончанию воспроизведения ноты, производится также после получения MIDI-синтезатором уникального MIDI-сообщения. Таким образом, обеспечивается схожее звучание одного и того же MIDI-файла на разных MIDI-синтезаторах с поддержкой одного и того же стандарта.

Например, любой синтезатор с поддержкой GM обладает следующими возможностями: 16 каналов, каждому из которых может быть назначен собственный тембр (инструмент). Выбрать тембр можно произвольным образом по его номеру из совокупности определённых стандартом GM тембров, включающих 128 как живых, так и синтезированных инструментов, куда входят фортепиано, гитара, струнные, флейта и др. Кроме того, можно использовать как минимум один набор ударных звуков.

Предусмотрен также ряд так называемых MIDI-контроллеров, позволяющих влиять на характер звучания воспроизводимой синтезатором музыки: например, при помощи серии событий контроллера Pitch можно плавно или резко (зависит от вашего желания и целей) изменять высоту звука, при помощи контроллера Expression - изменять громкость звучания на каждом из 16-ти каналов в отдельности, с помощью контроллера Pan устанавливать любой сдвиг MIDI-канала в стереопанораме и т. д. Существуют также контроллеры, не оговорённые стандартом и являющиеся специфичными для отдельных моделей синтезаторов, однако их использование чревато несовместимостью с другими MIDI-устройствами, которые попросту «не поймут» незнакомые команды.

Бытует мнение, что GS является расширением GM, а XG является расширением GS. Это не вполне соответветствует действительности, поскольку стандарты эти различаются не только количеством инструментов и контроллеров, но и форматом некоторых MIDI-сообщений. Это приводит к тому, что MIDI-файлы, созданные с использованием набора команд XG, могут некорректно вопроизводиться на GS- или GM-устройстве. В частности, может случиться так, что барабанные партии будут воспроизводиться тембром фортепиано, что превратит музыку в какофонию. Наиболее универсальным и совместимым является GM, т. е. MIDI-файл, созданный с использованием GM, будет воспроизводиться корректно и на GS- и на XG-синтезаторах.

Отличия формата MIDI от формата Wave

В свете вышесказанного нетрудно догадаться, что MIDI-формат принципиальным образом отличается от формата Wave, поскольку предназначен для хранения данных совершенно иного типа и не предназначен для хранения звука, являясь по сути лишь способом представления нотных партитур в цифровом (двоичном) виде. Таким образом, и прямое преобразование файлов в формате MIDI в файлы формата Wave и ему подобных (включая MP3) невозможно .

Проблемы качества звучания MIDI-файлов

Характер звучания результата синтеза может различаться весьма существенно при использовании различных синтезаторов. В этой связи полезно будет рассмотреть основные из существующих типов синтеза звука, к каковым можно отнести:

  • собственно синтез по неким математическим зависимостям;
  • Wave-синтез (сэмплирование), т. е. синтез звука на основе заранее оцифрованных звуковых фрагментов (сэмплов).

Эпоха звука на персональных компьютерах началась с синтезаторов, основанных на первом типе синтеза. Его особенностью является необходимость в вычислительном устройстве с весьма высокой производительностью, поскольку синтез качественных звуков происходит по довольно сложным формулам. Очевидно, поэтому в то время (хотя было это всего несколько лет назад) для синтеза звука использовались простейшие математические зависимости с минимальным количеством дополнительных гармоник, обогащающих звучание, что, в свою очередь, исключительно пагубно сказывалось на качестве звучания и реализме синтезируемых звуков в целом и MIDI-музыке на компьютере в частности.

Несколько позднее был разработан новый, гораздо более эффективный метод - Wave-синтез, который и используется в подавляющем большинстве современных синтезаторов. Принцип, лежащий в его основе, достаточно прост: заранее оцифрованные звуковые фрагменты просто воспроизводятся на разной скорости, что и позволяет получать звуки разной высоты. Задача отвечающего за синтез процессора в этом случае несоизмеримо проще, нежели при синтезе звуковых волн по сложным зависимостям. Качество же результирующего звука при этом определяется, главным образом, качеством исходного звукового фрагмента, которое может быть сколь угодно высоким. Синтезаторы, работающие по описанному принципу, называют сэмплерами (от англ. sampler), а используемые в качестве основы для синтеза звуковые фрагменты - сэмплами (samples).

До относительно недавнего времени сэмплеры были доступны немногим в силу их дороговизны - отчасти из-за необходимости в большом количестве оперативной памяти для мгновенного доступа к сэмплам без ощутимых задержек при живом исполнении произведения музыкантом. Поэтому в компьютерах многих желающих заниматься музыкой (включая многих из нас с вами) поселились звуковые платы со встроенными сэмплерами, по возможностям, к сожалению, существенно уступающими профессиональным сэмплерам. Качество звуков, используемых в разных моделях звуковых плат от разных производителей, сильно различалось и при этом было довольно низким.

Улучшение качества звучания MIDI-файлов

Одной из попыток решить проблему низкого качества MIDI-музыки на компьютере стали программные синтезаторы, работающие по принципу Wave-синтеза. Однако реально использовать их можно было только при прослушивании заранее подготовленных MIDI-файлов, для чего они, собственно, и создавались. При попытках же живого исполнения музыки с использованием тембров такого синтезатора наблюдалась существенная задержка между моментом нажатия клавиши на MIDI-клавиатуре и появлением соответствующего звука. Кроме того, тембры нельзя было заменять. Поэтому желающие более-менее серьёзно заниматься музыкой на компьютере устанавливали довольно дорогостоящие звуковые платы, обладающие синтезатором с очень качественными (но, к сожалению, опять же «вшитыми») тебрами, либо платы с возможностью использования произвольных тембров путём их загрузки в собственную оперативную память звуковой карты, т. е. по сути сэмплеры. Это, разумеется, способствовало поднятию качества звучания MIDI-музыки на новый уровень.

В последнее время широкое распространение получили программные сэмплеры с исключительно небольшим (что достигнуто использованием передовых алгоритмов и интерфейсов вроде ASIO) временем задержки, предоставляющие практически все возможности аппаратных сэмплеров и обладающие, кроме того, гораздо большей гибкостью и удобством в использовании по сравнению с последними за счёт возможности обновления и тесной интеграции с программными MIDI-секвенсорами, используемыми для работы с музыкой посредством MIDI (записи, редактирования MIDI-партий и проч.). Будущее в области создания музыки на компьютере, несомненно, именно за программными сэмплерами.

Примечательно, что понятие банка звуков (т. е. набора сэмплов, представляющих собой тембры для одного из рассмотренных стандартов MIDI), к которому мы все так привыкли, практически неактуально в отношении серьёзных сэмплеров - будь то аппаратные или программные. Более того, в этом плане и воспроизведение MIDI-файлов также несколько теряет смысл. Ведь загрузить можно абсолютно произвольный сэмпл, и совершенно незачем ограничиваться рамками жёсткого перечня GM-тембров. Но именно жёсткий перечень лежит в основе MIDI-стандартов GM, GS, XG.

Вероятно, здесь и находится грань, разделяющая слушателя и музыканта - у них просто разные цели. И если для слушателя на одном из первых мест универсальность, присущая конкретным стандартам, то для музыканта целью является результат, максимально качественный, максимально соответствующий его творческим замыслам. Последнее невозможно без точного подбора уникального сочетания инструментов, что недостижимо в рамках, к примеру, GM хотя бы потому, что звуки разных GM-совместимых синтезаторов различаются. В руках же музыканта MIDI - исключительно мощное орудие существенно большего масштаба, фундамент для реализации самых разнообразных творческий идей, язык для плодотворного общения его инструментов.

Для музыканта, решившего писать музыку с помощью компьютера обязательно нужно познакомиться с таким понятием, как MIDI. Для того, чтобы лучше разбираться в сути происходящих событий при работе в midi-редакторе, знание того, что такое midi просто необходимо.

Итак, классическое определение: MIDI - (Musical Instrument Digital Interface) - это цифровой интерфейс музыкальных инструментов. Другими словами - это протокол взаимодействия музыкальных инструментов. Да... сама по себе эта фраза мало что говорит и нуждается в пояснении...

Для того, чтобы было более понятно, давайте сравним данные миди и данные аудиофайлов. Они существенно отличаются. Если вы запишите с помощью компьютера аналоговый звук, например звук гитары или микрофона, звуковая карта оцифрует его и представит его в виде цифровых данных. Аналоговый звук преобразуется в цифровой. При этом минута записи в формате Wav будет занимать 10 мб. MIDI данные минутного файла будут весить всего несколько кб. Почему такая разница?

Дело в том, что MIDI данные не содержат никакого звука вообще. Это только информация о том, как должен воспроизводиться звук на MIDI инструменте (драм машине или синтезаторе) MIDI данные - это всё равно, что своеобразный текст для midi устройств. Это - своего рода команды, посылаемые в синтезатор и говорящие о том, какая и когда играется нота, какой общий характер воспроизведения звуков и т.д. Другими словами, если файл цифрового звука хранит в себе запись звука, то файл MIDI хранит в себе запись действий музыканта.

Теперь становится понятно, почему между звуковым файлом и MIDI такая разница в размерах. Если Wav или mp3 - это преобразованный аналоговый звук, то midi - это только сообщения для воспроизведения аппаратного устройства по заданным параметрам, это записанный алгоритм воспроизведения и не более.

В таком случае, что же такое протокол MIDI? Это "общий язык" для инструментов, благодаря которому можно их синхронизировать, объединить в одну систему для обмена информацией между ними. В случае написания музыке на компьютере такими MIDI инструментами будут: сам секвенсор программы (например Cubase), миди клавиатура или синтезатор, vst-инструменты, синтезатор звуковой карты, микшерный пульт...

При этом мозгом MIDI студии будет генератор звуков: ритм машина, синтезатор, звуковые платы, сэмплеры, программные синтезаторы. Сам миди редактор будет исполнять роль секвенсора, в котором вы сможете управлять миди сообщениями, визуально их отслеживая, регулируя, записывая и редактируя.

Объединённые в одно целое с помощью протокола MIDI на программном уровне и с помощью миди портов и кабелей на физическом, все такие устройства представляют одну систему, которую и можно назвать студией звукозаписи. Понять все нюансы MIDI интерфейса достаточно сложно без того, чтобы с головой не погрузиться в изучение этого предмета, но чтобы эффективно использовать его, для этого не нужно знать абсолютно всё о нём. Достаточно понимать саму его суть.

MIDI был разработан примерно в 1980 году и своим появлением открыл новую эпоху на рынке музыкальных инструментов, а также повлиял на дальнейшее развитие музыки в целом. MIDI-технология изначально предназначалась не для записи или воспроизведения музыки, а только лишь для управления на некоем расстоянии (в пространстве и времени) синтезаторами, звуковыми модулями и прочими “железными” ящиками.

Современные форматы стандартных midi-файлов это *.mid *.midi *.rmi *.kar

Что хочется сказать в заключение. Любой секвенсор, миди редактор, синтезатор или звуковой модуль не могут обойтись в своей работе без протокола MIDI.

Хотите знать больше о Создании Музыки и Фонограмм На Компьютере, познакомьтесь с обучающим видеокурсом Василия Кашеварова

В курсе подробно освещены вопросы работы с современными музыкальными программами, рассмотрены типичные ошибки новичков.

Задача курса: показать технологии и секреты профессиональной студии звукозаписи, чтобы вы могли уже сразу после обучения писать музыку, понимая суть всего этого процесса.

На диске есть обзор работы с виртуальными инструментами, необходимые основы записи и сведения музыки, даны основы построения аранжировки в различных стилях.

Глава 4 Интерфейс MIDI

MIDI расшифровывается как Musical Instruments Digital Interface (Цифровой интерфейс музыкальных инструментов). Это стандартный цифровой интерфейс обмена данными между электронными музыкальными инструментами. По MIDI передается не сам звуковой сигнал, а различные управляющие сигналы: нажатие и отпускание клавиши, сила удара по клавише, громкость, вибрато, плавное изменение высоты звука, а также – для обеспечения синхронизации – информация о времени (тайм-коды, коды времени) и даже цифровая звуковая информация (семплы) и т. п. Простейший случай использования MIDI – генерация главным устройством (MIDI-секвенсором) управляющих команд и передача их в управляемое устройство (чаще всего синтезатор). Сигналы передаются как цифровая последовательность, разбитая на байты. В отличие от цифровой записи звуковой информации запись MIDI-последовательности чзанимает небольшой объем памяти. Отдельное MlDl-сообщение обычно состоит из одного, двух или трех байтов (кроме исключительных системных сообщений). Когда вы берете на клавиатуре или слушаете записанный в секвенсор аккорд, все ноты аккорда передаются и воспроизводятся по очереди. Однако мы слышим цельный аккорд, так как достаточно высока скорость передачи команд. На слух запаздывание звуков незаметно, и MIDI-интерфейс способен передать подавляющее большинство нюансов игры музыканта.

Для одновременного управления мультитембровыми музыкальными инструментами и другими устройствами, поддерживающими связь по MIDI-протоколу, используется система MlDl-каналов. Считается, что каждое MIDI-сообщение передается по одному из шестнадцати MIDI-каналов и каждому каналу может быть задан свой инструмент или тембр. Информация о MIDI-канале содержится в младших четырех битах первого байта MIDI-сообщения.

Среди всего многообразия MIDI-сообщений можно выделить те, которые передаются только по своему MIDI-каналу. Это Channel Messages (Сообщения канала): команды Note On (Взять ноту) и Note Off (Отпустить), различные MIDI-контроллеры, команды переключения звуков и смены режимов Program Change (Смена программы). Помимо этого, существуют сообщения, которые передаются без привязки к конкретным каналам – System Messages (Системные сообщения). Это System Real Time Messages (Сообщения реального времени): Timing Clock (MIDI-системная тактовая частота), ряд других команд, служащих для поддержания стабильной работы системы, и System Exclusive Messages (Исключительные системные сообщения) – обособленная от всех остальных группа MIDI-сообщений.

Первоначальным назначением MIDI была возможность управления сразу несколькими инструментами с клавиатуры одного инструмента. Сейчас большое распространение получили MlDl-секвенсоры, или просто секвенсоры – устройства или программы, позволяющие записывать музыкальную пьесу как последовательность MIDI-сообщений. Воспроизводя ее впоследствии с применением тех же самых устройств, с которых велась запись, мы получим идентичный звуковой результат.

MIDI-каналы и каналы секвенсора – это не одно и то же. Обычно секвенсорные каналы называют треками. MIDI-каналов всего 16, а виртуальных секвенсорных, как правило, значительно больше, поэтому несколько секвенсорных треков можно направить по одному MIDI-каналу. Это может быть полезно, например, для переключения с одной записанной партии на другую или для «забивки» барабанов, когда необходимо каждый ударный инструмент пустить по своему треку и при этом не занимать дефицитные MIDI-каналы.

В последнее время получил распространение также стандарт General MIDI. Он предполагает, что в музыкальных устройствах различных производителей сходные по звучанию тембры имеют одинаковые номера. Например, обычный рояль – тембр № 1, литавры – тембр № 49, и т. д. Таким образом, если имеется MIDI-последовательность, записанная на General MIDI-устройствах, ее можно воспроизводить на любых устройствах, поддерживающих этот стандарт. Звуковой результат при этом будет лишь незначительно отличаться от исходного материала.

Итак, чисто технически MIDI – это последовательный интерфейс. Но при работе с MIDI удобнее представлять эту систему в «параллельном» виде, то есть в виде одновременно существующих шестнадцати каналов.

Из книги Время - деньги. Создание команды разработчиков программного обеспечения автора Салливан Эд

Из книги Музыкальный центр на компьютере автора Леонтьев Виталий Петрович

MIDI-клавиатура Мы как-то редко задумываемся о том, что любой домашний компьютер, снабженный более-менее приличной звуковой платой, таит в себе возможности профессиональной музыкальной студии.И правда – в разделе, посвященном звуковым платам, мы уже писали об их умении

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

Глава 7. Графический интерфейс Хотя Linux представляет собой очень мощную и развитую операционную систему, но, если работать с ней только через интерфейс командной строки, она довольно трудна в обращении и "недружелюбна" к пользователю. Все необходимые операции выполняются

Из книги Sound Forge 9 автора Квинт Игорь

Синтез звука и формат MIDI До настоящего момента речь шла об оцифровке и обработке реального звука, получаемого и записываемого с различных источников. Существует и совершенно иная задача – создание (синтез) звука на компьютере. Синтезатор – это набор управляемых

Из книги ArchiCAD 11 автора Днепров Александр Г

Глава 2 Интерфейс Sound Forge 9.0 Устройство главного окна программыОкна рабочей областиПанели инструментовЭлементы управленияИспользование мыши и горячих клавишВеликое множество инструментов и функций, которыми располагает программа Sound Forge, требует удобного

Из книги 3ds Max 2008 автора Верстак Владимир Антонович

Работа с MIDI Как известно, Sound Forge предназначена для работы с цифровым звуком, однако программа содержит также некоторые дополнительные MIDI-функции, которые могут пригодиться в работе над звуком. Например, можно заставить приложение работать в качестве устройства

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Глава 2 Интерфейс ArchiCAD 11 Меню Панели инструментов Палитры Настройка рабочей среды Система помощиЛюбая программа, какие бы мощные и замечательные «внутренние» функции она ни имела, не будет оценена по достоинству, если в ней отсутствуют удобные средства

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

Глава 1 Интерфейс программы Элементы интерфейса Подключаемые модули Настройка программыЗнакомство с такой сложной и объемной программой, как 3ds Max 2008, логично начать с изучения ее интерфейса и возможностей. Глубокое знание приложения существенно облегчают

Из книги 3ds Max 2008 на 100 % автора Верстак Владимир Антонович

Глава 6 Установка и интерфейс программы Прежде всего, для работы с программой Adobe InDesign нам потребуется сама программа Adobe InDesign. Тем из наших читателей, у которых на компьютере программа уже установлена, повезло, и они могут с чистой совестью пропустить эту главу.Вместе с

Из книги Компьютерная обработка звука автора Загуменнов Александр Петрович

Глава 3 Интерфейс пользователя 3.1. О чем эта глава? Наверное, нет такого пользователя компьютера, который бы не умел работать с Windows. Что ни говори, а Windows стала настоящим стандартом дефакто на пользовательских компьютерах (я говорю об обычных компьютерах, а не о

Из книги FictionBook Editor V 2.66 Руководство автора Izekbis

Глава 1 Интерфейс программы? Элементы интерфейса? Подключаемые модули? Настройка программыПочему важно изучение интерфейса программы? Интерфейс обеспечивает доступ к управлению всеми возможностями приложения. Многие пользователи, пренебрегая его изучением,

Из книги автора

Редактирование MIDI-партитуры в программе-секвенсоре В простейших программах возможности редактирования MIDI-партитуры сводятся к назначению инструментов на каждую записывающую дорожку и определению их относительной громкости, а также пространственной локализации. Если

Из книги автора

Стандарт General MIDI General MIDI (Обобщенный MIDI), или просто GM, – это результат соглашения между производителями MIDI-оборудования, в соответствии с которым любой совместимый с General MIDI инструмент должен отвечать неким минимальным требованиям, перечисленным ниже.Должна быть

Из книги автора

Глава 7 Объединение аудио и MIDI Итак, мы знаем, что MIDI-секвенции и аудиозапись реального звука – это два совершенно различных вида представления звука, за которые – что самое главное – отвечают разные устройства. Нельзя сделать запись в формате MIDI на магнитофон

Из книги автора

Исключительно MIDI http://www.midi.ru – содружество российских midi-сайтов MIDI.RU. Авторская MIDI-музыка, тексты популярных песен, все о караоке, христианская MIDI-музыка, клуб музыкальных MIDI-страниц, музыкальные компьютерные программы, музыка из фильмов, музыкальные

Что такое MIDI?

Musical Instrument Digital Interface - цифровой интерфейс музыкальных инструментов. Создан в 1982 году ведущими производителями электронных музыкальных инструментов - Yamaha, Roland, Korg, E-mu и др. Изначально был предназначен для замены принятого в то время управления музыкальными инструментами при помощи аналоговых сигналов управлением при помощи информационных сообщений, передаваемых по цифровому интерфейсу. Впоследствии стал стандартом де-факто в области электронных музыкальных инструментов и компьютерных модулей синтеза.

MIDI представляет собой так называемый событийно-ориентированный протокол связи между инструментами. Всякий раз, когда исполнитель производит какое-либо воздействие на органы управления (нажатие/отпускание клавиш, педалей, изменение положений регуляторов и т.п., инструмент формирует соответствующее MIDI-сообщение, в тот же момент посылаемое по интерфейсу. Другие инструменты, получая сообщения, отрабатывают их так же, как и при воздействии на их собственные органы управления. Таким образом, поток MIDI-сообщений представляет собой как бы слепок с действий исполнителя, сохраняя присущий ему стиль исполнения - динамику, технические приемы и т.п. При записи на устройства хранения информации MIDI-сообщения снабжаются временнЫми метками, образуя своеобразный способ представления партитуры. При воспроизведении по этим меткам полностью и однозначно восстанавливается исходный MIDI-поток.

Спецификация MIDI состоит из аппаратной спецификации самого интерфейса и спецификации формата данных - описания системы передаваемых сообщений. Соответственно, различается аппаратный MIDI-интерфейс и формат MIDI-данных (так называемая MIDI-партитура); интерфейс используется для физического соединения источника и приемника сообщений, формат данных - для создания, хранения и передачи MIDI-сообщений. В настоящее время эти понятия стали самостоятельными и обычно используются отдельно друг от друга - по MIDI-интерфейсу могут передаваться данные любого другого формата, а MIDI-формат может использоваться только для обработки партитур, без вывода на устройство синтеза.

Аппаратная спецификация MIDI

Интерфейс - старт-стопный последовательный "токовая петля" (активный передатчик, 5 мА, токовая посылка - 0, бестоковая - 1), скоростью передачи 31250 ±1% бит/с и протоколом 8-N-1 (один стартовый бит, 8 битов данных, один бит стопа, без четности). Передатчики и приемники должны обеспечивать длительность фронтов менее 2 мкс.

Каждый инструмент имеет три соединительных разъема: In (вход), Out (выход) и Thru (копия сигнала с In через буфер). Все разъемы - типа female DIN-5 (СГ-5), вид с наружной стороны (стороны соединения):

Контакты 4 и 5 - сигнальные, контакт 2 - экран. Полярность сигналов дается относительно источника тока: контакт 4 - плюс (ток вытекает из вывода), контакт 5 - минус (ток втекает в вывод). Таким образом, для разъемов Out и Thru назначение то же, для разъема In - обратное. Для соединения используется двужильный экранированный кабель длиной до 50 футов (около 15 м). Экран необходим только для защиты от излучаемых помех - кабель практически нечувствителен к наводкам извне. Соединение разъемов на двух концах кабеля - прямое (2-2, 4-4, 5-5).

Один MIDI-передатчик допускает подключение до четырех приемников.

Описанная схема позволяет создавать сеть MIDI-устройств, подключая их по цепочке и нескольким направлениям:

В этой схеме устройство 1 служит источником сообщений, которые получает устройство 2 и через его ретранслятор - устройство 3. Устройство 4 получает сообщения, посылаемые устройством 2 (они могут как включать, так и не включать получаемые самим устройством 2) и ретранслирует их на вход устройства 5.

Спецификация формата данных MIDI

MIDI-данные представляют собой сообщения, или события (events), каждое из которых является командой для музыкального инструмента. Стандарт предусматривает 16 независимых и равноправных логических каналов, внутри каждого из которых действуют свои режимы работы; изначально это было предназначено для однотембровых инструментов, способных в каждый момент времени воспроизводить звук только одного тембра - каждому инструменту присваивался свой номер канала, что давало возможность многотембрового исполнения. С появлением многотембровых (multi-timbral) инструментов они стали поддерживать несколько каналов (современные инструменты поддерживают все 16 каналов и могут иметь более одного MIDI-интерфейса), поэтому сейчас каждому каналу обычно назначается свой тембр, называемый по традиции инструментом, хотя возможна комбинация нескольких тембров в одном канале. Канал 10 по традиции используется для ударных инструментов - различные ноты в нем соответствуют различным ударным звукам фиксированной высоты; остальные каналы используются для мелодических инструментов, когда различные ноты, как обычно, соответствуют различной высоте тона одного и того же инструмента.

Поскольку MIDI-сообщения представляют собой поток данных в реальном времени, их кодировка разработана для облегчения синхронизации в случае потери соединения. Для этого первый байт каждого сообщения, называемый также байтом состояния (status byte), содержит "1" в старшем разряде, а все остальные байты содержат в нем "0" и называются байтами данных (data bytes). Если после получения всех байтов данных последнего сообщения на вход приемника поступает байт, не содержащий "1" в старшем разряде - это трактуется как повторение информационной части сообщения (подразумевается такой же первый байт). Такой метод передачи носит название "Running Status" и широко используется для уменьшения объема передаваемых данных - например, передается один байт команды "Controller Change" с нужным номером канала, а затем - серия байтов данных с номерами и значениями контроллеров для этого канала.

MIDI- сообщения делятся на канальные - относящиеся к конкретному каналу, и системные - относящиеся к системе в целом. Кодировка MIDI-сообщений (шестнадцатеричная, n в первом байте обозначает номер канала):

Канальные сообщения:

  • 8n nn vv - Note Off (выключение ноты)
  • 9n nn vv - Note On (включение ноты)
  • An nn pp - Key Pressure (Polyphonic Aftertouch, давление на клавишу)
  • Bn cc vv - Control Change (смена значения контроллера)
  • Cn pp - Program Change (смена программы (тембра, инструмента))
  • Dn pp - Channel Pressure (Channel Aftertouch, давление в канале)
  • En ll mm - Pitch Bend Change (смена значения Pitch Bend)

Системные сообщения:

  • F0 - System Exclusive (SysEx, системное исключительное сообщение)
  • F1 - резерв
  • F2 ll mm - Song Position Pointer (указатель позиции в партитуре)
  • F3 ss - Song Select (выбор партитуры)
  • F4 - резерв
  • F5 - резерв
  • F6 - Tune Request (запрос подстройки)
  • F7 - EOX (End Of SysEx, конец системного исключительного сообщения)
  • F8 - Timing Clock (синхронизация по времени)
  • F9 - резерв
  • FA - Start (запуск игры по партитуре)
  • FB - Continue (продолжение игры по партитуре)
  • FC - Stop (остановка игры по партитуре)
  • FD - резерв
  • FE - Active Sensing (проверка соединений MIDI-сети)
  • FF - System Reset (сброс всех устройств сети)

На основе MIDI позднее был разработан стандарт GM (General MIDI - единый MIDI), устанавливающий условия обязательной совместимости инструментов и интерпретации номеров программ и контроллеров, а затем и другие стандарты (GS, XG), расширяющие GM. Однако общность инструментов внутри каждого стандарта подразумевает только основные звуковые характеристики. "Одинаковые" тембры на различных инструментах почти всегда имеют различную окраску, динамику, яркость, громкость по умолчанию и другие особенности, а "синтетические" тембры могут совершенно отличаться друг от друга. Кроме этого, у разных инструментов различается зависимость характера звука от силы удара по клавише, динамика работы MIDI-контроллеров, положения контроллеров по умолчанию и прочие "тонкие" параметры. Поэтому MIDI-партитура, подготовленная для конкретного инструмента, на других инструментах (даже внутри стандарта) часто звучит совершенно по-другому, и это необходимо учитывать при переносе партитур с между инструментами различных моделей.

Инструменты, поддерживающие стандарты GM и GS, почти всегда имеют дополнительные средства управления синтезом и обработкой звука, расширяющие рамки стандарта. При этом используемые способы управления, как правило, сохраняются внутри одной линии инструментов и внутри инструментов одного производителя.

Описание работы контроллеров

Контроллеры Bank Select

Многие устройства могут работать с большим количеством встроенных и дополнительных тембров (инструментов) и звуковых эффектов, которые для удобства объединены в банки. В каждый момент времени в одном канале может использоваться только один банк; для переключения банков служат контроллеры:

  • 0 - Bank Select MSB (выбор банка, старший байт)
  • 32 - Bank Select LSB (выбор банка, младший байт)

Одни устройства требуют для переключения банков только один из этих контроллеров, другие требуют оба. Поведение некоторых устройств в этом отношении может изменяться в различных режимах работы.

По умолчанию устанавливается нулевой банк. После смены банка обязательна посылка сообщения Program Change для выбора тембра (инструмента).

Обработка устройством команды смены банка и инструмента может занять значительное время (десятки миллисекунд и более). Некоторые устройства при получении команд смены банков и инструментов гасят звучащие ноты в канале.

Контроллер Modulation

Задает глубину частотной модуляции в канале. Управление абсолютное. Значение 0 отключает модуляцию, значение 127 устанавливает максимальную глубину. Стандартное значение - 0. Действует на последующие и уже звучащие ноты.

Контроллер Portamento Time

Задает время плавного скольжения от частоты предыдущей ноты до частоты очередной ноты. Управление абсолютное. Значение 0 соответствует минимальному времени, 127 - максимальному. Стандартное значение не определено.

Контроллер Main Volume

Задает громкость звучания внутри канала. Управление абсолютное. Стандартное значение - обычно 100. Действует на последующие и уже звучащие ноты.

Контроллер Pan

Задает соотношение уровня стереоканалов (точку стереопанорамы) для канала. Управление абсолютное. Значение 0 - крайняя левая позиция, 64 - средняя, 127 - крайняя правая. Стандартное значение - 64. Действует на последующие и уже звучащие ноты.

Контроллер Expression

Задает степень выразительности звука. Управление абсолютное. На простых инструментах дублирует контроллер Main Volume и действует и на последующие, и на уже звучащие ноты. На инструментах с развитым синтезом управляет более тонкими параметрами выразительности, и действует только на последующие ноты. Стандартное значение - обычно 127.

Контроллер Harmonic Content

Задает добротность (глубину резонанса) фильтра канала, позволяющего подчеркнуть высокочастотные гармоники тембра. Увеличение добротности увеличивает крутизну характеристики фильтра в области среза, усиливая частоты, лежащие непосредственно ниже частоты среза. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Release Time

Задает время концевого затухания звучания нот с момента отработки Note Off (явного или автоматического) до полного исчезновения звука. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Attack Time

Задает время начальной атаки - нарастания громкости звучания нот с момента отработки Note On до максимального значения громкости. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Brightness

Задает частоту среза фильтра канала, управляющую ослаблением высоких частот звука. Управление относительное (0..64..127). Стандартное значение - 64.

Контроллер Portamento Control

Задает номер ноты, от которой выполняется плавная перестройка частоты в режиме Portamento, и позволяет установить исходную высоту, отличную от определяемой последним сообщением Note On.

Контроллер Reverb Level

Задает глубину выбранного эффекта типа реверберации (основанного на постоянной задержке сигнала) - Room, Hall, Delay, Echo и т.п. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер Chorus Level

Задает глубину эффекта типа хорового (основанного на переменной задержке сигнала) - Chorus, Flanger, Phaser и т.п. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер Variation Level

Задает глубину эффекта, выбранного в качестве Variation. Управление - абсолютное или относительное в зависимости от инструмента.

Контроллер-переключатель Sustain

Во включенном состоянии вызывает удержание звучания для всех клавиш, отпущенных во время действия контроллера - по аналогии с правой педалью фортепиано. Иными словами, в режиме Sustain канал задерживает отработку последнего поступившего для каждой ноты сообщения Note Off. В момент отключения одновременно отрабатываются все задержанные таким образом Note Off; на явно удерживаемые в этот момент клавиши (для которых последним поступившим сообщением является Note On) отключение режима не влияет.

Контроллер-переключатель Sostenuto

Действует подобно Sustain, но удерживает звучание только тех нот, которые были нажаты на момент включения контроллера. Последующие нажатия и отпускания отрабатываются в обычном порядке. Иначе говоря, откладывается отработка Note Off только для тех нот, Note On для которых поступили до включения режима.

Контроллер-переключатель Soft

По аналогии с левой педалью фортепиано, вызывает смягчение звучания для нот, нажатых во время действия режима. Способ реализации - простое уменьшение громкости или более тонкое управление - определяется инструментом.

Контроллер-переключатель Portamento

При выключенном режиме каждая нажатая нота начинает звучать на частоте, определяемой высотой ноты и установленными на данный момент значениями контроллеров управления высотой (Pitch Bend Change и Coarse/Fine Tune и т.п.). При включенном режиме очередная нота начинает звучать на частоте, определяемой последним сообщением Note On или контроллером Portamento Control, затем ее высота плавно изменяется до нужной со скоростью, определяемой контроллером Portamento Time. Вне зависимости от того, было ли скольжение выполнено до конца или прервано по отпусканию ноты, последнее сообщение Note On всегда фиксируется в качестве исходной высоты для последующих нот. Это означает, что если, например, после ноты C2 была нажата нота C7, а затем - нота C4, то высота второй ноты будет плавно повышаться от C2 до C7, а высота третьей в то же время - понижаться от C7 до 50, и в качестве исходной для последующих нот будет принята нота 50. В момент нажатия C7 эта нота зазвучит в унисон с C2 и начнет скользить в сторону C7, а в момент нажатия ноты C4 та зазвучит с высотой C7 и начнет скользить к C4. Все скольжения выполняются независимо.

Контроллеры RPN, NRPN и Data Entry

Дополнительно для расширенного управления синтезом введены зарегистрированные (Registered Parameter Number - RPN) и незарегистрированные (Non-Registered Parameter Number - NRPN) номера параметров, передаваемые при помощи контроллеров:

  • 98 - NRPN LSB (младший байт NRPN)
  • 99 - NRPN MSB (старший байт NRPN)
  • 100 - RPN LSB (младший байт RPN)
  • 101 - RPN MSB (старший байт RPN)

Устройство запоминает однажды переданные ему RPN или NRPN, после которых могут передаваться значения выбранного параметра при помощи контроллеров:

  • 6 - Data Entry MSB (ввод данных, старший байт)
  • 38 - Data Entry LSB (ввод данных, младший байт)
  • 96 - RPN Increment (увеличение RPN на 1, значение игнорируется)
  • 97 - RPN Decrement (уменьшение RPN на 1, значение игнорируется)

Таким образом, механизм представляет собой "контроллер в контроллере". Стандартом General MIDI определена интерпретация только трех RPN, значения которых задаются старшими байтами параметров Data Entry:

  • RPN 0 - Pitch Bend Sensitivity (чувствительность Pitch Bend)
  • RPN 1 - Fine Tuning (точная подстройка)
  • RPN 2 - Coarse Tuning (грубая подстройка)

Чувствительность Pitch Bend определяет количество полутонов, на которое смещается высота тона при получении сообщения Pitch Bend Change с предельным верхним или нижним значением параметра. По умолчанию принимается диапазон в два полутона в любую сторону.

RPN подстройки позволяют сместить строй инструмента в канале на заданное количество полутонов при грубой, или центов (сотых долей полутона) - при точной подстройке. За относительный нуль принимается значение 64.

Интерпретация остальных параметров стандартом GM не определена. В ряде инструментов для раздельной подстройки отдельных инструментов в различных банках используются также два дополнительных RPN:

  • RPN 3 - Tuning Program Select
  • RPN 4 - Tuning Bank Select

Стандартом GS введен набор NRPN для управления генераторами огибающих и резонансными фильтрами (номера NRPN даны в виде значений старшего и младшего байтов):

  • NRPN 1/8 - Vibrato Rate (частота вибрато)
  • NRPN 1/9 - Vibrato Depth (глубина вибрато)
  • NRPN 1/10 - Vibrato Delay (задержка до включения вибрато)
  • NRPN 1/32 - Filter Cutoff Frequency (частота среза фильтра)
  • NRPN 1/33 - Filter Resonance (глубина резонанса фильтра)
  • NRPN 1/99 - Attack Time (длительность атаки)
  • NRPN 1/100 - Decay Time (длительность первичного спада)
  • NRPN 1/102 - Release Time (длительность концевого затухания)

а также - для раздельной настройки параметров ударных инструментов (nn - номер ноты инструмента):

  • NRPN 24/nn - Drum Pitch Coarse Tune (грубая подстройка высоты)
  • NRPN 26/nn - Drum TVA Level (уровень громкости)
  • NRPN 28/nn - Drum Pan (панорамная позиция)
  • NRPN 29/nn - Drum Reverb Send Level (глубина эффекта reverb)
  • NRPN 30/nn - Drum Chorus Send Level (глубина эффекта chorus)
  • NRPN 31/nn - Drum Delay Send Level (глубина эффекта delay)

Значения параметров задаются старшими байтами Data Entry.

Стандартом XG введены дополнительные NRPN для ударных:

  • NRPN 20/nn - Drum Filter Cutoff (частота среза фильтра)
  • NRPN 21/nn - Drum Filter Resonance (глубина резонанса фильтра)
  • NRPN 22/nn - Drum Attack Time (длительность атаки)
  • NRPN 23/nn - Drum Decay Time (длительность первичного спада)
  • NRPN 25/nn - Drum Pitch Fine Tune (точная подстройка высоты)

Специальные канальные сообщения

Задаются контроллерами 120..127 и управляют обработкой сообщений в каналах:

  • 120 - All Sounds Off
  • 121 - Reset All Controllers
  • 122 vv - Local Control
  • 123 - All Notes Off
  • 124 - Omni Off
  • 125 - Omni On
  • 126 nn - Mono
  • 127 - Poly

Обязательными к реализации в General MIDI определены только контроллеры 121 и 123; реализация остальных перечисленных контроллеров определяется производителем. Кроме этого, многие устройства требуют, чтобы неиспользуемые значения контроллеров были нулевыми.

Сообщение All Notes Off имитирует выключение всех включенных нот и полностью эквивалентно посылке сообщения Note Off для каждой звучащей ноты; будет ли при этом прекращено звучание ноты - зависит от состояния режимов Sustain и Sostenuto. Сообщение All Sounds Off действует так же, но не зависит от режимов Sustain/Sostenuto; кроме того, оно немедленно прекращает звучание всех нот, находящихся в стадии концевого затухания (Release). Состояние самих режимов Sustain/Sostenuto эти сообщения не затрагивают.

Сообщение Reset All Controllers устанавливает все контроллеры в значения по умолчанию, и используется для начальной установки устройства перед проигрыванием партитуры.

Сообщение Local Control служит для запрета/разрешения управления устройством с локальной панели. Нулевое значение параметра запрещает управление с панели (устройство управляется только по MIDI), значение 127 разрешает его.

Сообщения Omni On/Off служат для включения/выключения режима Omni - реакции устройства на канальные сообщения. При включенном режиме Omni устройство обрабатывает сообщения для всех каналов, при отключенном - только сообщения для выбранного канала (Basic Channel). Это позволяет разделить устройства между каналами. Канал назначается устройству либо с его панели управления, либо при помощи сообщений SysEx. Режим Omni имеет смысл в основном для старых инструментов, имеющих один MIDI-канал и не поддерживающих разделение тембров.

Сообщения Mono/Poly служат для переключения одноголосного и многоголосного (полифонического) режимов. В одноголосном режиме в каждый момент времени может звучать только одна нота; включение новой ноты приводит к принудительному отключению предыдущей. В полифоническом режиме включение каждой новой ноты запускает очередной свободный генератор, а при исчерпании генераторов новые ноты либо игнорируются, либо приводят к принудительному выключению наиболее "старых" нот.

Значение nn в сообщении Mono воспринимается некоторыми устройствами, как количество MIDI-каналов, по которым, начиная с Basic Channel, распределяются ноты в одноголосном режиме при выключенном режиме Omni. Смысл этой группы каналов различен для передающих и принимающих устройств. Передающее устройство направляет первую ноту в Basic Channel, следующую за ней - в Basic Channel + 1, и так далее, затем очередная нота снова направляется в Basic Channel, и цикл повторяется. Приемное устройство воспринимает канальные сообщения только внутри заданной группы каналов, каждый из которых работает в одноголосном режиме. Такой прием позволяет реализовать многоголосное исполнение на синтезаторах, имеющих жесткую привязку голосов (генераторов) к MIDI-каналам.

Контроллеры Omni, Mono и Poly вызывают также отработку контроллера All Sounds Off.

От различных сочетаний режимов Omni, Poly и Mono происходят четыре основных режиме работы (mode) MIDI-устройств:

  • 1 - Omni On, Poly
  • 2 - Omni On, Mono
  • 3 - Omni Off, Poly
  • 4 - Omni Off, Mono

Большинство современных устройств работает в mode 3 - полифонический режим с независимой работой каналов.

Program Change (pp - номер тембра или инструмента)

Служит для смены инструмента в канале. Параметр задает номер инструмента (0–127) в текущем выбранном банке. Стандартом General MIDI определены 128 основных мелодических и 47 ударных инструментов, собранных в нулевом банке; устройства с расширенным набором инструментов имеют дополнительные банки, а также могут иметь частично измененный основной набор.

Стандартные мелодические инструменты General MIDI разделены на 16 групп по 8 инструментов в каждой группе:

Piano Chrom Percussion
0 Acoustic Grand Piano 8 Celesta
1 Bright Acoustic Piano 9 Glockenspiel
2 Electric Grand Piano 10 Music Box
3 Honky-tonk Piano 11 Vibraphone
4 Electric Piano 1 12 Marimba
5 Electric Piano 2 13 Xylophone
6 Harpsichord 14 Tubular Bells
7 Clavinet 15 Dulcimer
Organ Guitar
16 Drawbar Organ 24 Acoustic Guitar (nylon)
17 Percussive Organ 25 Acoustic Guitar (steel)
18 Rock Organ 26 Electric Guitar (jazz)
19 Church Organ 27 Electric Guitar (clean)
20 Reed Organ 28 Electric Guitar (muted)
21 Accordion 29 Overdriven Guitar
22 Harmonica 30 Distortion Guitar
23 Tango Accordion 31 Guitar Harmonics
Bass Strings
32 Acoustic Bass 40 Violin
33 Electric Bass (finger) 41 Viola
34 Electric Bass (pick) 42 Cello
35 Fretless Bass 43 Contrabass
36 Slap Bass 1 44 Tremolo Strings
37 Slap Bass 2 45 Pizzicato Strings
38 Synth Bass 1 46 Orchestral Harp
39 Synth Bass 2 47 Timpani
Ensemble Brass
48 String Ensemble 1 56 Trumpet
49 String Ensemble 2 57 Trombone
50 Synth Strings 1 58 Tuba
51 Synth Strings 2 59 Muted Trumpet
52 Choir Aahs 60 French Horn
53 Voice Oohs 61 Brass Section
54 Synth Voice 62 Synth Brass 1
55 Orchestra Hit 63 Synth Brass 2
Reed Pipe
64 Soprano Sax 72 Piccolo
65 Alto Sax 73 Flute
66 Tenor Sax 74 Recorder
67 Baritone Sax 75 Pan Flute
68 Oboe 76 Bottle Blow
69 English Horn 77 Shakuhachi
70 Bassoon 78 Whistle
71 Clarinet 79 Ocarina
Synth Lead Synth Pad
80 Lead 1 (square) 88 Pad 1 (new age)
81 Lead 2 (sawtooth) 89 Pad 2 (warm)
82 Lead 3 (calliope) 90 Pad 3 (polysynth)
83 Lead 4 (chiff) 91 Pad 4 (choir)
84 Lead 5 (charang) 92 Pad 5 (bowed)
85 Lead 6 (voice) 93 Pad 6 (metallic)
86 Lead 7 (fifths) 94 Pad 7 (halo)
87 Lead 8 (bass + lead) 95 Pad 8 (sweep)
Synth Effects Ethnic
96 FX 1 (rain) 104 Sitar
97 FX 2 (soundtrack) 105 Banjo
98 FX 3 (crystal) 106 Shamisen
99 FX 4 (atmosphere) 107 Koto
100 FX 5 (brightness) 108 Kalimba
101 FX 6 (goblins) 109 Bagpipe
102 FX 7 (echoes) 110 Fiddle
103 FX 8 (sci-fi) 111 Shanai
Percussive Sound Effects
112 Tinkle Bell 120 Guitar Fret Noise
113 Agogo 121 Breath Noise
114 Steel Drums 122 Seashore
115 Woodblock 123 Bird Tweet
116 Taiko Drum 124 Telephone Ring
117 Melodic Tom 125 Helicopter
118 Synth Drum 126 Applause
119 Reverse Cymbal 127 Gunshot

Стандартные ударные инструменты General MIDI доступны в канале 10:

35 Acoustic Bass Drum 59 Ride Cymbal 2
36 Bass Drum 1 60 High Bongo
37 Side Kick 61 Low Bongo
38 Acoustic Snare 62 Mute High Conga
39 Hand Clap 63 Open High Conga
40 Electric Snare 64 Low Conga
41 Low Floor Tom 65 High Timbale
42 Closed High-Hat 66 Low Timbale
43 High Floor Tom 67 High Agogo
44 Pedal High Hat 68 Low Agogo
45 Low Tom 69 Cabasa
46 Open High Hat 70 Maracas
47 Low-Mid Tom 71 Short Whistle
48 High-Mid Tom 72 Long Whistle
49 Crash Cymbal 1 73 Short Guiro
50 High Tom 74 Long Guiro
51 Ride Cymbal 1 75 Claves
52 Chinese Cymbal 76 High Wood Block
53 Ride Bell 77 Low Wood Block
54 Tambourine 78 Mute Cuica
55 Splash Cymbal 79 Open Cuica
56 Cowbell 80 Mute Triangle
57 Crash Cymbal 2 81 Open Triangle
58 Vibraslap

Pitch Bend Change (ll - младший, mm - старший байт значения)

Задает смещение высоты тона для всех нот в канале - как звучащих, так и последующих. Значение, образованное двумя 7-разрядными величинами, изменяется в диапазоне 0–16383; среднее значение - 8192 - принимается за относительный нуль, что дает условный диапазон изменения -8192–8191. Чувствительность Pitch Bend может изменяться при помощи RPN 0; по умолчанию принимается предельное смещение на два полутона в любую сторону.

Системные сообщения

System Exclusive (SysEx)

Служат для передачи специальной информации определенным устройствам. В сообщении SysEx может передаваться любое количество байтов. Признаком конца сообщения служит байт F7. Первые три байта SysEx обычно содержат идентификатор производителя устройства (присваивается Ассоциацией Производителей MIDI-устройств - MMA), номер устройства в сети (задается с пульта) и код модели устройства (присваивается производителем). В остальном формат сообщений определяется производителем - это могут быть команды, параметры, оцифрованные инструменты, партитуры и т.п.

Шестнадцатеричные идентификаторы наиболее известных производителей:

Sequential Circuits 01
Big Briar 02
Octave / Plateau 03
Moog 04
Passport Designs 05
Lexicon 06
PAIA 11
Simmons 12
Gentle Electric 13
Fairlight 14
Bon Tempi 20
S.I.E.L. 21
SyntheAxe 23
Kawai 40
Roland 41
Korg 42
Yamaha 43

SysEx "General MIDI On" (переключение в режим GM для устройств, поддерживающих дополнительные стандарты): F0 7E 7F 09 01 F7.

SysEx "General Synth On" (переключение в режим Roland GS для устройств, поддерживающих этот стандарт): F0 41 10 42 12 40 00 7F 00 41 F7.

SysEx "XG System On" (переключение в режим Yamaha XG для устройств, поддерживающих этот стандарт): F0 43 1n 4C 00 00 7E 00 F7, где n - номер устройства в сети (устанавливается по-разному для разных устройств, по умолчанию 0).

Ряд устройств требует, чтобы включение режимов GS и XG выполнялось из режима GM. Переключение между режимами обычно занимает несколько десятков миллисекунд и вызывает также полный сброс MIDI-системы устройства.

Tune Request

Предписывает выполнить автоматическую подстройку устройствам, нуждающимся в ней. Обычно это относится к аналоговым синтезаторам, строй которых может смещаться из-за нестабильности управляющих элементов.

Song Position Pointer (ll - младший, mm - старший байт)

Служит для установки позиции в партитуре для устройств, имеющих встроенный секвенсор, автоаккомпанемент или ритм-блок. Задается номером четвертной (quarter) ноты с начала партитуры.

Song Select (ss - условный номер партитуры)

Определяет, какая из существующих партитур будет проигрываться при получении сообщения Start.

Start

Запускает прогрывание или запись выбранной партитуры с начала.

Stop

Останавливает проигрывание или запись партитуры.

Continue

Запускает проигрывание или запись партитуры с прерванного места, либо с позиции, установленной с помощью Song Position Pointer.

Timing Clock

Служит для синхронизации устройств и передается с частотой 6 сообщений на четвертную ноту. Генерация этого сообщения не является обязательной для передающего устройства.

Active Sensing

Используется для проверки наличия связи внутри MIDI-сети. Генерация сообщения не является обязательной для передающих устройств. В случае получения этого сообщения каждое приемное устройство переходит в режим слежения за MIDI-потоком, и в случае отсутствия любых сообщений в течение 300 мс автоматически отрабатывает контроллеры All Notes Off, All Sounds Off и Reset All Controllers. Это позволяет прекратить работу в случае нарушения связи в сети. Однако до первого прохождения этого сообщения по сети устройства не следят за длительностью пауз между сообщениями.

Применения MIDI

Основное применение MIDI - хранение и передача музыкальной информации. Это может быть управление электронными музыкальными инструментами в реальном времени, запись MIDI-потока, формируемого при игре исполнителя, на носитель данных с последующим редактированием и воспроизведением (так называемый MIDI-секвенсор), синхронизация различной аппаратуры (синтезаторы, ритм-машины, магнитофоны, блоки обработки звука, световая аппаратура, дымогенераторы и т.п.).

Устройства, предназначенные только для создания звука по MIDI-командам, не имеющие собственных исполнительских органов, называются тон-генераторами. Многие тон-генераторы имеют панель управления и индикации для установки основных режимов работы и наблюдения за ними, однако создание звука идет под управлением поступающих MIDI-команд.

Устройства, предназначенные только для формирования MIDI-сообщений, не содержащие средств синтеза звука, называются MIDI-контроллерами. Это может быть клавиатура, педаль, рукоятка с несколькими степенями свободы, ударная установка с датчиками способа и силы удара, а также - струнный или духовой инструмент с датчиками и анализаторами способов воздействия и приемов игры. Тон-генератор с достаточными возможностями по управлению может весьма точно воспроизвести оттенки звучания инструмента по сформированному контроллером MIDI-потоку.

Для хранения MIDI-партитур на носителях данных разработаны форматы SMF (Standard MIDI File - стандартный MIDI-файл) трех типов:

  • 0 - непосредственно MIDI-поток в том виде, в каком он передается по интерфейсу.
  • 1 - совокупность параллельных "дорожек", каждая из которых обыч- но представляет собой отдельную партию произведения, исполняемую на одном MIDI-канале.
  • 2 - совокупность нескольких произведений, каждое из которых сос- тоит из нескольких дорожек.

В основном применяется формат 1, позволяющий хранить одно произведение в файле.

Кроме MIDI-событий, файл содержит также "фиктивные события" (Meta Events), используемые только для оформления файла и не передаваемые по интерфейсу - информация о метрике и темпе, описание произведения, названия партий, слова песни и т.п.

MIDI (от англ. Musical Instrument Digital Interface) - стандарт цифровой звукозаписи. В основе стандарта - обмен информацией между электронными музыкальными инструментами и компьютерами. MIDI появился в 1983 году, навсегда изменив музыкальную индустрию: технология позволила отделить игру музыканта от воспроизводимых инструментом звуков. Музыканты получили возможность использовать любые звуки, вне зависимости от используемого оборудования.

Для использования стандарта не требуется наличие технических знаний. Достаточно соединить между собой устройства с поддержкой MIDI, чтобы извлекать любые звуки. MIDI всегда остается дружелюбным к пользователю, позволяя в любой момент изменять воспроизводимый звук.

Создание виртуальных инструментов и смелые эксперименты со звуком требуют знаний о MIDI-событиях (англ. MIDI messages) . События разделены на семь видов, в зависимости от предназначения.

Что такое MIDI-события?

Структурная схема MIDI-событий.

MIDI-событие - это инструкция, управляющая аспектом работы принимающего устройства. События состоят из комбинаций байтов, в которых на устройство поступают определенные параметры. В качестве приемников служат любые студийные и музыкальные инструменты с поддержкой MIDI: синтезаторы, MIDI-клавиатуры, электропианино, электророяли, электронные ударные, диджейские консоли.

MIDI-события делятся на два вида:

  • Канальные (Channel). Такие события отправляют информацию на определенный канал устройства-приемника. Услышать канальное событие можно только при прослушивании канала, на который они отправлены. В случае, если эти каналы деактивированы, событие не услышать. Канальные события бывают двух видов: голосовые (Voice) и режимные (Mode);
  • Системные (System). Эти события влияют на работу всех компонентов приемника и передаются на все MIDI-каналы одновременно. Системные события бывают трех видов: общие (Common), реального времени (Real-Time) и эксклюзивные (Exclusive).

Каждое MIDI-событие состоит из трех байт информации. Первый байт (Status Byte) содержит специальный идентификатор события, передающий основные данные о воспроизведении звука. Второй байт (Data Byte 1) сообщает информацию о воспроизводимой ноте, ее высоте и положении в октаве. Третий байт (Data Byte 2) передает параметр Note Velocity - силу извлечения звука.

Что такое Note Velocity и зачем это нужно?

Note Velocity - аналог атаки при игре на реальном инструменте, то есть информация о том, с какой силой или скоростью извлекается звук при работе с MIDI-инструментами.Чем сильнее нажатие на клавишу MIDI-клавиатуры или удар по электронному пэду барабанов, тем выше параметр Note Velocity.

Параметр принимает значения от 0 до 127, где 0 - извлечения ноты не было, а 127 - звук извлечен с максимальной силой. Представление этой информации виртуальным инструментом или синтезатором зависит только от задумок разработчиков. Тем не менее, в 99% случаев виртуальный инструмент реагирует на параметр Note Velocity так же, как и реальный инструмент. Благодаря этому, MIDI может передавать особенности игры и звукоизвлечения.

Удобство в том, что у музыканта сохраняется возможность исправить огрехи слишком слабой или сильной игры во время записи и устранить недочеты хорошо записанной партии.

MIDI-события System Common

Общие системные MIDI-события активно применяются в синтезаторах для передачи общей информации о воспроизводимых MIDI-файлах.

Среди информации, передаваемой общими системными событиями, выделяют:

  • Информацию о тональности (Tune Request). Когда музыкант изменяет тональность демо или MIDI-файла, на устройство передаются данные Tune Request;
  • Информацию о выбранной песне (Song Request). Выбрав файл для воспроизведения, на MIDI-устройство отправляется специальный набор байтов, указывающий на этот файл;
  • Информацию о позиции для воспроизведения (Song Pointer Position). Если пользователь хочет начать воспроизведение с определенной отметки, переход по файлу осуществляется при помощи этого подсобытия.
  • Информацию о длительности файла (MIDI Time Code). MIDI Time Code кодирует и передает данные о длительности проигрываемого файла.

MIDI-события System Real-Time

Системные MIDI-события реального времени помогают управлять воспроизведением MIDI-файлов. Такие события отвечают за запуск и остановку проигрывания файлов. Дополнительно к этой категории относятся события, отвечающие за полный сброс настроек устройства.

MIDI-события System Exclusive

Системные эксклюзивные события отведены под передачу информации об используемом MIDI-устройстве. При помощи этих событий MIDI-инструменты выводят данные о производителе и модели устройства, его серийном номере и другой системной информации.

MIDI-события Channel Mode

Канальные режимные изменяют параметры работы MIDI-устройства во время игры. Так, здесь передаются данные о включении моно- и полифонии, отключении звуков и нот, а также активации приема MIDI-данных на всех каналах устройства (Omni Mode).

MIDI-события Channel Voice

Большая часть информации, генерируемой музыкантом при игре, относятся к канальным голосовым событиям (Channel Voice). События Channel Voice делятся на два типа: связанные со звуками и непрерывные. Группа Channel Voice состоит из 7 подсобытий:

  1. Note On - активация ноты, начало звука;
  2. Note Off - деактивация ноты, окончание звука;
  3. Monophonic (Channel) Pressure/Aftertouch - параметры силы нажатия клавиши или силы извлечения монофонического звука (эффект послекасания);
  4. Polyphonic (Key) Pressure/Aftertouch - параметры силы извлечения полифонического звука (эффект послекасания);
  5. Pitch Bend - изменение высоты звука;
  6. Program Change - изменение программы;
  7. Control Change/Continuous Controller - события потокового управления (127 штук), участвующие в управлении извлеченным звуком и обозначаемые при помощи сокращения CC.

Обычно разработчики стараются расположить активацию этих параметров на неиспользуемых клавишах. Если речь идет о виртуальной гитаре, чей диапазон меньше, чем у фортепиано, активацию MIDI-событий обычно присваивают на те клавиши, которые находятся за пределами используемого диапазона.

Состав передаваемой на MIDI-устройство информации на примере канальных голосовых событий

MIDI-событие Первый байт (Status Byte) Второй байт (Data Byte 1) Третий байт (Data Byte 2)
Note On Начало воспроизведения ноты Какая нота будет извлечена Сила нажатия
Note Off Окончание воспроизведения ноты Какая нота будет извлечена Сила нажатия
Monophonic (Channel) Pressure Сила давления на клавишу -
Polyphonic (Key) Pressure Активация функции послекасания Какая нота будет извлечена Сила давления на клавишу
Pitch Bend Активация функции изменения высоты звука Значение, на которое повышается или понижается звук Исходное значение звука
Program Change Активация изменения программы Номер программы -
Control Change Активация потокового управления Вызов подсобытия CC Значение CC#

MIDI-события, связанные с нотами и звуками

С точки зрения MIDI, любая нота имеет начальную и конечную позицию, в рамках которой воспроизводится звук. Когда на приемник MIDI-информации поступает событие Note On, устройство или редактор воспроизводит звук. Чтобы воспроизведение ноты прекратилось, на приемник поступает событие Note Off - сами по себе MIDI-устройства не знают, как долго должен издаваться звук.

Обычно событие Note On привязано к зажатию клавиши MIDI-клавиатуры, а Note Off - к отпусканию клавиши. Тем не менее, иногда для большей правдоподобности звучания инструментов разработчики сдвигают событие Note Off, чтобы оно появлялось через некоторое время после отпускания клавиши.


Первое описание стандарта MIDI (скан документа).

Непрерывные MIDI-события

К непрерывным относятся подсобытия Pitch Bend, Control Change и два вида Aftertouch. Непрерывные сообщения объединяют информацию о том, как было сгенерировано MIDI-событие.

Эта информация поступает на MIDI-приемник постоянно, а значения параметров Pitch Bend, Control Change и Aftertouch изменяются постепенно во время генерации звука. В потоке информации непрерывных событий передаются сведения о громкости, высоте, тембре, резкости, ясности и других особенностях извлеченного звука.

Имитация эффекта вибрато на гитаре, звучание звука с определенным количеством сустейна, нарастание громкости звука и другие подобные сложные эффекты создаются при помощи Pitch Bend, Control Change и Aftertouch.

Aftertouch или эффект послекасания

Два параметра Aftertouch генерируются в зависимости от силы нажатия клавиши и длительности зажатия. Благодаря событиям Aftertouch современные MIDI-клавиатуры и электронные пианино имитируют эффект послекасания, который передает ощущения от игры на реальном инструменте.

События Aftertouch работают в связке со специальными датчиками, реагирующими на силу нажатия. Датчики устанавливаются под клавишами и непрерывно генерируют события послекасания, передавая сведения о давлении, с которым производится извлечение ноты. Эффект послекасания добавляет извлекаемым звукам экспрессии.

Если Aftertouch-событие относится к типу Channel (Monophonic) Aftertouch, то на всю клавиатуру приходится один датчик давления, а параметры послекасания применяются сразу ко всем нотам. События Channel (Polyphonic) Aftertouch применяются к каждой клавише по отдельности.

Несмотря на то, что стандарту MIDI уже более 20 лет, клавиатуры с полифоническими независимыми датчиками давления не стали популярными из-за дороговизны производства. Вместо этого производители используют сложные алгоритмы работы одного датчика, которые имитируют работу в полифоническом режиме.

Pitch Bend

Генерацию сведений об изменении высоты звука выполняют специальные колеса модуляции и питча. Это событие полностью игнорирует длительность звука, а влияние параметра Pitch Bend на высоту звука зависит только от разработчиков софта или настроек, заданных музыкантом. Самым распространенным вариантом изменения является повышение или понижение звука на целый тон, хотя никто не запрещает запрограммировать изменение на октаву или две.

У параметров Pitch Bend отсутствует нулевое значение: 0 не заглушает звук, а указывает на отсутствие изменения его высоты.

MIDI-события изменения программы

События Program Change отвечают за смену наборов инструментов, звуков и патчей. Несмотря на то, что подобные события официально не признаны устаревшими, разработчики используют их очень редко.


MIDI-события в окне Piano Roll в Logic Pro X.

MIDI-события потокового управления

Сообщения потокового управления (CC) - обширная категория из 127 разных типов событий. Все CC-события непрерывны и постепенно изменяют собственные значения для управления динамикой извлеченного звука.

Несмотря на большое количество CC-событий, активно используются далеко не все. Одни подсобытия заранее определяются разработчиками, другие доступны пользователям для свободного использования, третьи - не используются никогда. Среди самых популярных обычно выделяют пять подсобытий - CC#1, CC#7, CC#10, CC#11 и CC#64 (см. полный список событий потокового управления на сайте midi.org).

СС#1 привязано к колесу модуляции, хотя в теории привязать к нему можно любую функцию изменения звука. Чаще всего на это подсобытие назначают добавление автоматического эффекта вибрато. В более редких случаях за ним закрепляют функции управления тембром инструмента.

CC#7 и CC#10 отвечают за параметры громкости и панорамы. MIDI-устройства с поворотными регуляторами могут изменять громкость и значение панорамы в окне DAW через эти события. Во всех остальных случаях CC#7 и CC#10 не нужны.

Подсобытие CC#11 обозначается «Expression» и контролирует громкость исполнения. Самыми распространенными устройствами, поддерживающими это подсобытие, являются педали экспрессии (громкости) синтезаторов, MIDI-контроллеров, электропианино и электроорганов.

MIDI-событие CC#64 отведено под педаль демпинга MIDI-клавиатуры или синтезатора. Подсобытие реагирует на положение педали, присваивая ноте значение в пределах 0-63, если педаль поднята, и 64-127, если педаль опущена (зажата). Некоторые продвинутые MIDI-контроллеры, педали и виртуальные инструменты расширяют возможности подсобытия CC#64, позволяя применять техники игры с полуоткрытой педалью.