Книги | Статьи | Начало

Интерфейс MIDI

Интерфейс MIDI, строго говоря, к созданию звуков непосредственного отношения не имеет. MIDI - это интерфейс для передачи музыкальных событий и язык их описания. Здесь приводятся принципы и основные понятия MIDI и его место в ПК.
Цифровой интерфейс музыкальных инструментов MIDI (Musical Instrument Digital Interface) является последовательным асинхронным интерфейсом с частотой передачи 31,25 Кбит/с. Этот интерфейс, разработанный в 1983 году, стал фактическим стандартом для сопряжения компьютеров, синтезаторов, записывающих и воспроизводящих устройств, микшеров, устройств специальных эффектов и другой электромузыкальной техники. В настоящее время интерфейс MIDI имеют и дорогие синтезаторы, и дешевые музыкальные клавиатуры, которые могут использоваться в качестве устройств ввода компьютера. Сообщения MIDI широко используются и для передачи музыкальных записей (на дисках и по сети), а также как выходной аудиоинтерфейс для игр и прочих "звучащих" приложений. Описание музыкальных фрагментов в формате MIDI очень компактно: минута MIDI (файлы .MID) может занимать менее 10 Кбайт, в то время как минута оцифрованного звука (файлы .WAV) с качеством аудио-CD занимает около 10 Мбайт. Однако формат MIDI позволяет воспроизводить лишь звуки, на которые способен синтезатор на исполняющей стороне, в то время как цифровое аудио воспроизводит любые звуки. В отличие от оцифрованного звука, при воспроизведении данных MIDI пользователь может независимо изменять тональность (транспонировать музыкальный текст) и темп исполнения, причем без искажения тембра и характера звучания инструментов. Правда, теперь существуют алгоритмы и их реализации, позволяющие изменять темп, сохраняя тональность, и для оцифрованного звука, но с существенными ограничениями, отсутствующими в MIDI.
Книги | Статьи | Начало

Физический и логический интерфейс

В физическом интерфейсе MIDI применяется токовая петля 5 мА (возможно до 10 мА) с гальванической (оптронной) развязкой входной цепи. Гальваническая развязка исключает связь "схемных земель" соединяемых устройств через интерфейсный кабель, что устраняет помехи (фон), крайне нежелательные для звуковой техники. Снижению интерференционных помех служит и выбор частоты передачи, которая совпадает с одним из значений частот квантования, принятых в цифровой звукозаписи.
Интерфейс определяет три типа портов: MIDI-In, MIDI-Out и MIDI-Thru. Устройство отслеживает информационный поток на входе MIDI-In и реагирует на адресованные ему команды и данные. На выход MIDI-Out подается информационный поток, генерируемый данным устройства. При специальной настройке устройства в этом потоке может содержаться и транслированный входной поток. Транзитный порт MIDI-Thru служит только для ретрансляции входного потока.
Поток данных MIDI исходит от MIDI-контроллера или от секвенсора. MIDI-контроллер представляет собой устройство, на котором играют, как на музыкальном инструменте (чаще всего это клавиатура). Контроллер формирует поток сообщений, отражающий события исполнения (нажатие и отпускание клавиш) в реальном времени. MIDI-секвенсор (sequencer) - устройство, позволяющее перехватывать, хранить и редактировать (включая комбинирование, наложение и создавание оригинального) поток MIDI-сообщений и воспроизводить его в заданном темпе.
Конечным приемником потока MIDI-сообщений является звуковой модуль (sound module) -синтезатор, формирующий аудиосигнал на основе приходящих к нему команд. Применительно к PC, синтезатор может входить в состав звуковой карты, а может быть и внешним.
Каждому звуковому модулю назначается свой номер логического канала (MIDI Channel) в диапазоне 1-16. Многотембровым синтезаторам назначается несколько каналов - по каналу на каждый тембр. Модули будут исполнять звуковые команды, адресованные только его каналу (каналам). Каждый контроллер обычно программируется на один из каналов, но в сети MIDI может одновременно работать и несколько контроллеров. Секвенсор способен генерировать (и записывать) многоканальный поток.
Наличие порта MIDI-Thru позволяет соединять устройства в цепочки и более сложные стуктуры. Возможные варианты топологии должны подчиняться главному правилу: вход MIDI-In одного устройства должен подключаться к выходу MIDI-Out или MIDI-Thru другого устройства. При планировании MIDI-сети необходимо руководствоваться знаниями информационных потоков и связей устройств. Управляющие устройства - клавиатуры, секвенсоры (в режиме воспроизведения), источники синхронизации - должны находиться, естественно, перед управляемыми. Возможно применение и специальных устройств-мультиплексоров, позволяющих логически коммутировать множество входных потоков в один выходной.
Формат посылки: старт-бит, 8 бит информации и 1 стоп-бит, контроль четности отсутствует. Старший бит посылки является признаком байта состояния (Status byte). При единичном значении признака биты [6:0] содержат код команды. За байтом состояния могут следовать байты данных, у которых старший бит всегда имеет нулевое значение. 14-битные данные передаются парой байт. Байт состояния с относящимися к нему байтами данных составляют сообщение (MIDI Message). Длина сообщения определяется кодом команды и может быть 1, 2 или 3 байта. Исключение составляет сообщение System Exclusive, у которого байт состояния сопровождается байтом идентификатора и цепочкой байт данных произвольной длины. Передача обычных трехбайтных сообщений занимает около 1 мс, что вполне приемлемо для контроллеров: аккорд из 10 нот будет передан за 10 мс, так что "разбежка" в исполнении нот будет незаметной. Однако секвенсор может "выстреливать" одновременно и большее количество нот, что может привести и к заметной неодновременности их исполнения из-за задержек при передаче.
Сообщения MIDI разделяются на канальные (Channel Messages) и системные (System Messages). Канальные сообщения адресуются к конкретному каналу, номер которого указывается в старших битах байта состояния. Номера каналов 1-16 кодируется числами 0-15 в двоичной форме. Системные сообщения являются безадресными.
Канальные сообщения подразделяются на голосовые (Channel Voice Messages) и управляющие (Channel Mode Messages). Голосовые сообщения несут основную исполнительную информацию. К этой категории относятся сообщения Note On, Note Off, Polyphonic Key Pressure, Channel Pressure, Pitch Bend Change, Program Change и ряд сообщений Control Change.
Исполнение ноты начинается по приему сообщения Note On, которое содержит номер ноты и скорость нажатия клавиши. Это сообщение инициирует фазы атаки, спада и удержания. Скорость нажатия задает уровень (громкость) исполнения: 1 - пианиссимо, 127 - фортиссимо. Качественные синтезаторы в зависимости от скорости могут корректировать и характер исполнения (спектр, форму огибающей, выбирать нужный образец). Нота снимается (отрабатывается фаза затухания) по приему с ее же номером сообщения Note Off, тот же эффект вызывает и Note On c нулевой скоростью. Скорость отпускания чаще всего контроллерами не определяется, а звуковыми модулями игнорируется. Для большей одновременности взятия нот в аккордах и снижения трафика вся игра может строиться только на сообщениях Note On с однократной передачей байта состояния (running status). Кроме датчиков скорости, клавиатура может иметь и датчик давления на нажатую клавишу (Aftertouch). Информация о давлении может использоваться для управления некоторыми характеристиками воспроизведения (например, вибрато).
Строй канала может смещаться относительно стандартного. Для этого синтезаторы имеют соответствующую ручку управления (pitch bend wheel). Изменение ее положения отражается сообщением Pitch Bend Change. Тип инструмента для канала задается сообщением Program Change. Сообщения Control Change служат для управления разнообразными функциями. Второй байт задает номер контроллера (управляемого параметра), третий байт - значение этого параметра. Управляющие сообщения определяют, как именно звуковой модуль должен отрабатывать голосовые сообщения.
Системные сообщения (System Messages) подразделяются на общесистемные (System Common Messages), сообщения реального времени (System Real Time Messages) и исключительные (System Exclusive Messages). Общесистемные сообщения включают сообщения для синхронизации с видеооборудованием и ленточными записывающими устройствами (MTC Quarter Frame), выбора произведения и позиции воспроизведения (Song Select, Song Position Pointer), настройки аналоговых синтезаторов (Tune Request).
Сообщения реального времени System Real Time Messages (SRT) образуют систему синхронизации MIDI Sync. Эта система используется секвенсорами, ритм-машинами и другими тактируемыми устройствами MIDI.
Исключительные собщения (System Exclusive Messages) используются для обмена различными данными, например, для загрузки патчей (образцов голосов инструментов).
Интерфейс MIDI довольно сильно ориентирован на клавишные музыкальные инструменты. Однако даже самая хорошая "взвешенная" клавиатура с датчиками скорости и давления не позволяет передать всех нюансов исполнения, например, духовых или струнных (щипковых или смычковых) инструментов. В настоящее время существуют контроллеры MIDI с интерфейсами, отличными от клавишных. Существуют контроллеры MIDI в виде гитар, где датчики определяют место прижима струн и силу удара (щипка). Есть и контроллеры с "духовым интерфейсом" - датчики устанавливаются на клапанах, а специальный мундштук измеряет расход проходящего воздуха. Существуют также и преобразователи аналогового сигнала в поток MIDI-инструкций. Они имеют АЦП, оцифровывающий входной сигнал, снятый микрофоном с реального инструмента, и внутренний сигнальный процессор. Для гитар выпускаются специальные звукосниматели, сопряженные с сигнальными процессорами. Задача разложения звука на голосовые (не спектральные!) составляющие достаточно сложна и легче решается для одноголосных инструментов. Если преобразователь использовать как устройство ввода для секвенсора, то ошибки преобразования можно исправлять средствами редактирования музыкального текста в секвенсоре.
Книги | Статьи | Начало

Стандарты General MIDI, GS, XG и форматы файлов

Интерфейс MIDI определяет физический уровень и форматы сообщений. Для обеспечения совместимости различных звуковых модулей был принят стандарт General MIDI (GM). Он определяет минимальные требования к модулям и оставляет место для расширений, среди которых широко распространены стандарты GS и XG. Для унификации методов хранения и передачи информации MIDI были приняты и стандарты на форматы файлов.
Стандарт General MIDI Level 1 определяет минимальный набор из 128 голосовых инструментов и карту их назначений (Instrument Patch Map). Для инструментов, назначаемых по этой таблице, отводятся каналы 1-9. Для ударных инструментов (percussion) определяется минимальный набор из 47 звуков, для них выделяется канал 10. В этом канале номером ноты определяется не высота тона, а инструмент.
Согласно GM, звуковой модуль должен отвечать на все 16 каналов, тембры которых определяются независимо. Набор тембров (MIDI-программ) - не менее 128. Модуль должен иметь возможность динамического распределения голосов. Минимальные требования - 24 голоса, распределяемых по всем (мелодическим и ударным) каналам. Альтернативный вариант распределения - 16 мелодических и 8 ударных гололосов. Качество синтеза стандартом не оговаривается. Звуковой модуль GM должен отрабатывать параметры скорости, давления после нажатия (aftertouch) - по каждой клавише и общее для канала, педали sustain и expression, управление уровнем, панорамой, обеспечивать снятие всех нот, смещение строя и сброс всех контроллеров. Включить и отключить режим GM позволяет специальное сообщение SysEx.
Стандарт GS, введенный фирмой Roland, является расширением General MIDI. Он определяет большее количество инструментов и 12 контроллеров, что позволяет обогатить исполнение дополнительными нюансами. При этом сохраняется совместимость с GM: звуковой модуль в станданрте GS будет нормально исполнять поток инструкций GM. Для GS обязательный минимум мелодических инструментов - 226, максимальное число патчей - 16.384. Ударные инструменты выбираются из 128 наборов, в каждом из которых может быть до 61 звука. Синтезаторы GS могут иметь эффекты хоруса и реверберации; имеется возможность редактирования патчей.
Стандарт XG является расширением GM от фирмы Yamaha. Здесь минимальное количество мелодических инструментов - 480, максимальное - 2 М. Минимальное число наборов ударных звуков - 9, в каждом до 72 звуков. Определено также два набора эффектов. Наличие эффектов хорус и реверберация обязательно, они применяются глобально (ко всем каналам). Кроме того, имеется эффект "Variation" (минимум 35 типов), который применим глобально или к одному каналу. Эффекты независимы, могут применяться одновременно и управляемы в реальном времени. Инструмент XG может иметь внешний стереофонический вход (цифровой или аналоговый с АЦП), сигнал с которого заводится на внутренний процессор эффектов.
Хранение и передача данных MIDI имеют свою специфику. Когда источником сообщений MIDI является контроллер и генерируемый им поток исполняется сразу в реальном времени, никакой маркировки сообщений обычно не требуется. Для хранения данных MIDI в виде файлов требуются специальные меры для отметки времени, поскольку длительность нот в сообщениях MIDI не фигурирует.
Секвенсоры оперируют треками - строками нот, исполняемыми параллельно. Трек примерно соответствует партии (или ее части) одного инструмента. Такое представление естественно для композиторов и обеспечивает богатые возможности по редактированию. Программный секвенсор может сохранять партитуры как в своем собственном (ни с кем не совместимым), так и в стандартизованом формате. Стандарт на файлы MIDI определяет три формата представления:
  • Формат 0 - вся последовательность данных представлена в виде одного трека. Самый экономичный по расходу памяти.
  • Формат 1 - данные представлены в виде набора треков. Наиболее пригодный для непосредственного редактирования программными секвенсорами.
  • Формат 2 - хранение нескольких независимых фрагментов.
Спецификация Multimedia PC (MPC), опубликованная Microsoft еще в 1991 году, определила два уровня реализации синтезаторов:
  • Base Multitimbral Synthesizer: мелодические - 6 голосов, 3 тембра, используются каналы 13-15. Ударные - 2 голоса, 2 тембра, канал 16.
  • Extended Multitimbral Synthesizer: мелодические - 16 голосов, 9 тембров, каналы 1-9. Ударные: - 8 голосов, 8 тембров, канал 10.
Набор голосов синтезаторов соответствует списку General MIDI, но, по сравнению с GM, урезана полифония и многотембровость. Согласно спецификации Microsoft, MIDI-файл должен содержать аранжировки для обоих типов синтезаторов, тогда он будет исполним на любом из них. Однако при исполнении такого файла на GM-синтезаторе партия ударных будет исполняться и на канале 16, который определен как мелодический.
Для решения проблем совместимости применяется перенаправление каналов MIDI. В Windows 3.x для этих целей использовался MIDI Mapper, в Windows 95 перенаправление обеспечивается выбором "специальной конфигурации" выходного устройства MIDI (Панель управления - Мультимедиа - MIDI). Для каждого канала MIDI можно указать устройство, на которое оно будет выводиться (встроенный синтезатор звуковой карты или внешний порт MIDI).
MIDI Mapper позволяет изменять и номер канала - например, партию ударных с канала 16 передавать сообщениями, адресованными к каналу 10. Кроме того, имеется Patch Map - таблица соответствия номеров программ (тембров), указанных в файле, номерам программ, посылаемым в выходное устройство. Таблица Key Map используется для изменения номеров нот в сообщениях Note On и Note Off, что также может использоваться для трансляции GM-совместимой партии ударных на не-GM синтезатор, и наоборот. Например, для исполнения GM-файлов на внешнем синтезаторе Roland MT-32 или звуковой карте LAPC-1 используются таблицы MT-32.
Книги | Статьи | Начало

MIDI и персональный компьютер

Персональный компьютер, оснащенный звуковой картой, может стать полноправным членом и даже центральной фигурой в MIDI-сети. Синтезатор звуковой карты совместно с програмными драйверами превращают ПК в звуковой модуль MIDI. Качество звучания этого модуля определяется типом синтезатора (о синтезаторах мы говорили в предыдущей статье). Современные звуковые карты для шины PCI привлекают к процессу синтеза все ресурсы компьютера, превращая его в мощный инструмент профессионального качества при сравнительно невысокой цене (новая звуковая карта Live от Creative Labs с богатейшими возможностями стоит менее $100). Звуковой модуль получает данные от программных проигрывателей MIDI-файлов, включая мощные секвенсоры, игровых (или других "звучащих" приложений) или с внешнего интерфейса. Современные программы (CakeWalk Pro) позволяют синхронизировать исполнение MIDI-последовательностей с воспроизведением фрагментов оцифрованного звука. Из-за принципиальной неоднородности такой смеси задача сведения довольно сложна, но решаема современными компьютерами среднего уровня.
Для того, чтобы компьютер мог взаимодействовать с внешними MIDI-устройствами, он должен иметь порты MIDI. Это взаимодействие позволяет использовать компьютер как секвенсор, способный в реальном времени как записывать приходящий поток сообщений, так и выводить его со множества записанных треков. Средства ввода, редактирования, вывода (печати партитур) и хранения данных, которыми обладает компьютер, превращает его в мощнейшего помощника композитора.
Первой картой расширения PC с интерфейсом MIDI, получившей широкое распространения, был контроллер MPU-401 фирмы Roland. Этот контроллер кроме асинхронного последовательного порта (UART), реализующего физический интерфейс MIDI, имел развитые аппаратные средства для использования PC в качестве секвенсора (компьютеры тогда были маломощными). MPU-401 имел и простой режим работы - UART mode - в котором использовался только двунаправленный асинхронный порт. Большинство современных звуковых карт имеют приемопередатчик интерфейса MIDI, программно совместимый с MPU-401 в UART mode. Функции интеллектуального режима MPU-401 обычно не поддерживаются. На некоторых системных платах применяются БИС контроллеров интерфейсов, в которых UART, используемый для COM-порта, конфигурированием через BIOS SETUP может быть переведен в режим MIDI-порта. Сигналы приемопередатчика MIDI-интерфейса, установленного на большинстве звуковых карт, выводятся на разъем игрового адаптера (Game-порт). Здесь они присутствуют в уровнях ТТЛ (контакт 12 - выход, контакт 15 - вход). Для их преобразования в "токовую петлю" используются кабели-адаптеры, в которых смонтирован оптрон развязки и формирующие цепи.
В последнее время в аудиотехнике намечается тенденция к использованию шины USB, которая пригодна как для обмена данными в традиционном виде, так и для изохронной передачи (с равномерной скоростью поступления данных) аудиоданных в цифровом виде. Интерфейс MIDI имеет ограничение на число каналов (16) и его невысокая скорость передачи ограничивает полифонические возможности (большое число нот в аккорде не может звучать строго одновременно). В то же время поизводительности современных PC хватает на то, чтобы справляться и с более мощными потоками данных. Для подключения устройств MIDI к компьютеру через USB фирма Roland выпускает 64-канальный процессорный блок S-MPU64, который кроме шины USB имеет 4 входных и 4 выходных порта MIDI. Программное обеспечение допускает объединение до 4 блоков на одной шине USB, что увеличивает число каналов до 256.

Михаил Гук (Mgook@stu.neva.ru)
Опубликовано в газете "КомпьютерИнфо" (СПб.) 29-38, 1998 г.
Публикация в печатных изданиях только с разрешения автора, ссылка обязательна.
Книги | Статьи | Начало | Продолжение
 
Copyright (c) М. Гук, 1999. Дизайн (с) О. Гук, 1999.