Что такое midi файл
MIDI и OSC — основные протоколы взаимодействия музыкальных приложений
Часть 1. MIDI
1 Предпосылки
Необходимость в таком стандарте возникла примерно к концу 70-х годов. В то время синтезаторы управлялись напряжением с помощью интерфейса CV/Gate. Существовало несколько его видов, однако, наибольшую популярность получил вариант, предложенный фирмой Roland: в нем при увеличении напряжения на 1 В, частота генерируемого тона увеличивалась на одну октаву. Главным недостатком такого интерфейса является то, что с помощью него можно управлять только одним голосом полифонии. Для извлечения дополнительной ноты нужно добавлять еще один интерфейс CV/Gate. Кроме того, таким способом передается только сам факт нажатия клавиши и ее высота, чего однозначно мало для выразительной игры.
Другим недостатком синтезаторов того времени была сложность настройки. Для каждого нового звука музыкантам приходилось настраивать инструмент заново, что было очень не удобно на живых выступлениях. На концертах тех времен часто можно было увидеть целые стеллажи из синтезаторов — так музыканты выходили из ситуации. Со временем в инструменты были встроены мини-компьютеры, с помощью которых можно было сохранять положения ручек в пресеты.
Однако, есть еще один момент, который оказал большое влияние на разработку MIDI.
Несомненно, у каждого синтезатора свой характер звучания, каждый из них был силен в определенных типах звуков. Поэтому многие музыканты того времени практиковали игру сразу на двух инструментах, как бы используя лучшее из разных моделей. Наслоение звуков из различных синтезаторов стало исполнительским приемом, визитной карточкой многих музыкантов. [1]
2 История появления
К началу 80-х большинство производителей осознали необходимость создания единого интерфейса. Задача стояла такая: разработать стандарт передачи действий исполнителя в цифровой форме между всеми типами электромузыкальных инструментов. [1]
3 Основы
MIDI — это протокол последовательной передачи данных между главным и подчиненным устройством. Главное устройство генерирует сообщения и отправляет их подчиненному устройству, который выполняет полученные команды. Последовательный — значит информация передается по одному биту, бит за битом. Отсюда следует невозможность передачи нескольких сообщений одновременно.
Сам протокол состоит из трех частей [1]: спецификация формата данных, аппаратная спецификация интерфейса и спецификация хранения данных. В данной статье будет идти речь только о первой части.
MIDI сообщения делятся на два типа: сообщения канала (channel messages) и системные сообщения (system messages). Первые управляют звукообразованием, а вторые выполняют служебные функции, например, синхронизация.
Сообщение обычно состоит из двух или трех байт. Первый байт называется статус байтом. В нем задается тип сообщения и номер канала, к которому оно относится. Все последующие байты называются байтами данных. Статус-байт всегда начинается с единицы, а байт-данных с нуля — таким образом система их различает. Получается, что для MIDI информации остается только 7 бит, с помощью которых можно закодировать целые числа от 0 до 127, — вот откуда берется это «знаменитое» ограничение на количество нот и значения контроллеров.
Как видно из рисунка, информации о типе сообщений отводится всего 3 бита, в которых можно закодировать только 8 чисел. 7 из них отведены под наиболее часто используемые команды, а последнее используется для системных сообщений. Когда передается системное сообщение, последние 4 бита статус байта (в которых обычно передается номер канала) определяют тип системного сообщения.
Табл. 1. Сообщения канала.
Сообщение | Статус-байт | Байт данных 1 | Байт данных 2 |
Note Off | 1000nnnn | Номер ноты | Velocity |
Note On | 1001nnnn | Номер ноты | Velocity |
Polyphonic Key Pressue | 1010nnnn | Номер ноты | Давление |
Control Change | 1011nnnn | Номер контроллера | Значение |
Program Change | 1100nnnn | Номер программы | — |
Channel Pressure | 1101nnnn | Давление | — |
Pitch Wheel Change Change | 1110nnnn | Номер программы | — |
Системные сообщения | 1111nnnn | . | . |
Табл. 2. Системные сообщения
Сообщение | Статус-байт | Байт данных 1 | Байт данных 2 |
System Exclusive (SysEx) | |||
System Exclusive | 11110000 | ID | . |
System Common | |||
MTC Quater Frame | 11110001 | Тайм-код | — |
Song Position Pointer | 11110010 | LSB | MSB |
Song Select | 11110011 | Номер песни | — |
Tune Request | 11110110 | — | — |
End Of Exclusive (EOX) | 11110111 | — | — |
Real Time | |||
Timing Clock | 11111000 (248) | — | — |
Start | 11111010 (250) | — | — |
Continue | 11111011 (251) | — | — |
Stop | 11111100 (248) | — | — |
Active Sensing | 11111110 | — | — |
System Reset | 11111111 | — | — |
4 Недостатки
MIDI разрабатывался, как доступный и практичный стандарт для передачи жестов исполнителя между любыми MIDI-устройствами [2]. Не в последнюю очредь благодаря своей легковесности он и получил такое распространение. Что ни говори, со своим предназначением он справляется прекрасно, и это подтверждается временем.
Итак, наверное, самый известный недостаток — ограничение значений контроллеров на 128 значений. Конечно, есть возможность передавать их с помощью двух байтов данных (что дает 16 384 возможных значений), но для этого надо передать три сообщения Control Change, что очень сильно загрузит протокол, так как данные по нему передаются со скоростью 31 250 бит/с. Это очень мало. Для сравнения, 12-нотный аккорд передастся примерно за 10 мс. И это без других сообщений, например Clock и CC. В реальном перфомансе, когда одновременно передается много различных параметров, могут возникнуть проблемы с синхронизацией.
Часть 2. Open Sound Contol
«Open Sound Control — это новый, оптимизированный для современных сетевых технологий протокол для взаимодействия компьютеров, звуковых синтезаторов и других мультимедиа устройств» — так был представлен OSC на международной конференции по компьютерной музыке в 1997 году [3]. OSC не является протоколом в том виде, каким является MIDI, так как он не описывает требований к аппаратному обеспечиванию — спецификации описывают лишь формат передачи данных. В этом плане OSC больше схож с XML или JSON, нежели с MIDI [8].
Пока оставим технические подробности и начнем с самого начала, с истории.
1 История, области применения
Open Sound Control был создан в 1997 году Мэттью Райтом (Matthew Wright) и Эдрианом Фридом (Adrian Freed) в Университете Калифорнии в центре новой музыки и аудио технологий (CNMAT — Center of New Music and Audio Technologies). Разработчики хотели использовать высокоскоростные сетевые технологии в интерактивной компьютерной музыке [4]. OSC не важно, по какому протоколу передаваться, так как он представляет собой всего лишь формат данных (binary message format), хотя большинство реализаций используют TCP/IP или UDP. Другой причиной создания было то, что MIDI с его нотами, каналами и контроллерами логично не подходил к разрабатывающемуся в то время синтезатору CAST (CNMAT Additive Synthesis Tools), оно и понятно, ведь MIDI — это клавишно-ориентированный протокол, который разрабатывался для управления одним синтезатором с другого [1].
Слово «Open» в названии означает, что OSC не предопределяет, какие сообщения должны использоваться для определенных параметров — это решается разработчиком конкретного девайса. Кроме того, это слово имеет и другое значение: протокол открыт, его спецификации находятся на официальном сайте, где можно скачать исходники.
2 Особенности
3 Анатомия сообщений
Стоит отметить, что при использовании UDP, если сообщения передавались в разных пакетах, они не обязательно будут приходить в том порядке, в каком были переданы [6]. Допустим, были переданы сообщения:
/synth1/noteoff 54
/synth1/noteon 60
Фактически они могут прийти в обратном порядке:
/synth1/noteoff 60
/synth1/noteon 54
Это может привести к проблемам с управлением голосами в полифонии, например, в данном сообщении передается команда noteoff, которая выключает голос, а потом включает другую ноту. Если эти сообщения придут в обратном порядке, голос не освободится и новая нота не сможет запуститься.
Чтобы этого избежать, нужно передавать сообщения в одном пакете (bundle), либо использовать TCP/IP, он отличается от UDP тем, что гарантирует корректную доставку пакетов, передавая каждый из них до тех пор, пока он не передастся в изначальном виде. Нужно иметь ввиду, что ценой такому удобству будут большие в сравнении с UDP задержки, поэтому использование TCP/IP должно быть обосновано.
4 Pattern matching
дефис между двумя символами означает диапазон чисел в ASCII последовательности (дефис в конце строки не имеет специального значения);
Философия Звука или как создать свою студию звукозаписи с нуля
В настоящее время появилось много различных периферийных устройств, подключаемых по миди-интерфейсу. И естественно, что многие начинают интересоваться: а что это вообще за такой миди-интерфейс и с чем его кушать? Многие энциклопедии дают чисто техническое объяснение, но этого часто бывает мало для общего понимания сути процесса. Многие не до конца понимают, для чего он нужен, некоторые догадываются, но не до конца, и только немногие, видевшие рождение этого формата знают, что это такое. Так что же это за зверь такой — МИДИ?
MIDI — это аббревиатура от Music Instrument Digital Interface (он же МИДИ) — цифровой протокол передачи данных между электромузыкальными инструментами (ЭМИ). ЭМИ это инструмент, звучащий в результате электронного синтеза (в народе — синтезатор).
Впервые был реализован на инструменте с фортепианной клавиатурой. Позже на этой основе появились кнопочные инструменты (электро-баяны) и некоторые духовые (флейта, саксофон).
Суть формата.
Не все знают, что формат MIDI создавался вовсе не для звукового сопровождения в играх или как способ передачи музыки между компьютерами. Изначально он был придуман для того, чтобы электромузыкальные инструменты (синтезаторы) разных производителей могли управлять звуками друг друга. А синтезаторы это ведь те же компьютеры: есть клавиатура, есть куча кнопок, есть процессор, есть генератор звука и есть приборы вывода результата (на экран и на аудиовыход). И внутри этого компьютера постоянно передаётся определённая информация от клавиатуры и управляющих кнопок в процессор и потом передаётся генератору для последующей обработки. Не вся информация передаётся генератору: есть информация от клавиатуры и регуляторов, а есть некоторая информация только для визуального графического отображения на дисплее.
Задача клавиатуры — максимально честно и качественно передать все нюансы игры на клавиатуре. Т.е. какая клавиша была нажата, сколько времени она была нажатой, с каким характером (нюансом) нажалась и как именно отпустилась, каким инструментом это всё игралось… и т.д. и т.п.
Задача генератора — всю эту информацию оперативно принять и качественно выдать на выходе.
История формата.
MIDI как отдельный протокол (пока ещё не стандарт) был задуман фирмами Roland и Sequential Circuits для своих синтезаторов.
До момента создания стандарта MIDI каждая фирма-производитель синтезаторов имела свою систему хранения всех этих данных (секвенцеры). Тогда были в моде дискеты (да и щас они ещё есть). Их объёма в 1,5 Мб (а HDD = 2 Мб) с лихвой хватало как для сохранения всех параметров регуляторов и кнопок, так и для полноценного хранения информации о целых композициях, сыгранных на этом синтезаторе. В целом на одну дискету можно было поместить до 30 отдельных полномасштабных композиций.
Но вся проблема оказалась в том, что эта информация читалась только на том синтезаторе, на котором она и была создана. Даже в рамках одной фирмы её синтезаторы имели различные, несовместимые между собой, системы хранения данных.. Т.е. определённой системы как стандарта ещё не было, и каждый производитель придумывал свои фишки и особенности. И поэтому когда ломался синтезатор, или надо было срочно менять его на другой (например, на концерте), информация со старого не читалась в новом.
В 80-х годах эта проблема выросла достаточно сильно: многие музыканты были вынуждены покупать синтезаторы разных фирм только из-за пары фишек на их синтезаторе, возить всё это хозяйство становилось накладно, каждый синтезатор (а тогда они были ещё аналоговыми) были каждый размером с холодильник, а подключения перед концертами больше походили на фронтовые бои с выжившими и побеждёнными…
Тогда ведущие производители Roland, Sequential Circuits,Yamaha и Oberheim собрались и договорились о некоторых стандартах в плане формата сохранения данных. Так появился General MIDI первого поколения (GM1). Был создан типовой генератор и типовой протокол передачи данных для этого генератора. И теперь синтезатор с аббревиатурой GM мог уже более-менее сыграть то, что было сделано на другом GM-совместимом синтезаторе. В силу тогдашнего ограничения пропускной способности IBM PC компьютеров в данный стандарт вошло описание 2 банков звуков в 8 категориях по 8 инструментов в каждой (всего 128 стандартных звуков), и 127 контроллеров для каждого инструмента (громкость, панорама, эффект и т.д) со шкалой от 0 до 127. Но на деле этих контроллеров оказалось не более 20ти: остальные ячейки остались незанятыми (т.е. при передаче определённого сигнала в эти ячейки ничего не происходило).
Первая звуковая карта для PC компьютера была разработана фирмой Roland и называлась MPU-401 (MPU — Music Processing Unit). Этот интерфейс стал стандартом для подобного рода устройств на долгие годы и остается таковым и по сей день. В любой современной звуковой карте поддерживается режим эмуляции MPU-401. Если у вас Windows, то в «Информации о системе» в разделе «Звуковые, Видео и Игровые Контроллеры» вы наверняка найдете для своей звуковой карты эмуляцию MPU-401.
Для поддержания стандарта и его дальнейшего расширения была учреждена независимая организация — MIDI Manufacturer’s Association (MMA). Позже, с развитием компьютерных технологий, в 1998 году стандарт General MIDI был доработан до 2 поколения. В новом стандарте расширили полифонию и палитру доступных инструментов до 256, добавили ряд новых контроллеров. С тех пор, для совместимости синтезаторов и появившихся компьютеров, в звуковые карты последних стали ставить банки звуков стандарта GM1 и GM2. Так стало возможным без самого синтезатора прослушать на компьютере то, что было сочинено на синтезаторе. Качество звуков стандарта GM естественно было далеко (и сейчас уже очень далеко) от реального звука, но тогда это было лучше, чем совсем ничего.
Возможности этого стандарта всё-таки не совсем удовлетворяли запросам многих производителей: у многих были свои фишки и маркетинговые ходы для своих покупателей. Так у Yamaha появился XG (Xtended General, по сути добавленный к GM ряд фирменных ямаховских звуков и улучшенная их обработка) и такой же фирменный GS (General Synth) у Roland. Таким образом формат GM формально был соблюдён: во многих синтезаторах Yamaha игрались дискеты от Roland. И наоборот.
Но с родным форматом XG (GS) звук был лучше. Так фирмы привязывали своих покупателей к продукции только своей фирмы.
Технологии.
В 90-е годы некоторые производители поняли, что технология MIDI применима не только к ЭМИ:
во-первых, клавиатура может быть не только аналогичной музыкальному инструменту, но и любой другой (в том числе, компьютерной). Так появились многочисленные контроллеры, пады (как ручные, так и ножные), электронные ударные установки, семплеры, секвенсеры…
во-вторых, оказалось, что через MIDI можно передавать не только информацию от клавиатуры к генератору, но и любую другую техническую информацию для совершенно разных устройств. Так, вдобавок к разъёмам IN и OUT, добавился «транзитный» разъём THRU, через который можно было передать информацию с первого синтезатора третьему синтезатору через второй транзитом. Т.е. можно было к двум синтезаторам подключить третий, который реагировал только на команды, предназначенные именно для него. Первые два синтезатора на них не реагировали.
Технически MIDI представляет собой последовательный интерфейс передачи данных со скоростью 32,25 килобод. Используются 5-контактные DIN-разъемы и экранированный кабель с двумя проводниками. На большинстве современных синтезаторов существует три MIDI-порта — IN, OUT и THRU.
Назначение первых двух понятно из названия (вход и выход), на порт THRU (от английского through, через) в неизменном виде подается информация, приходящая на вход (IN) устройства. Это позволяет каскадировать приборы один за другим.
По одному физическому MIDI-соединению передается 16 «виртуальных» MIDI-каналов. На синтезаторе для каждого из MIDI-каналов устанавливается нужный тембр и инструмент может играть одновременно разные музыкальные партии (каждая на отдельном канале) несколькими звуками.
Для того чтобы некоторая нота зазвучала на определенном MIDI-канале, синтезатор должен получить сообщение «Note On». Оно состоит из трех байтов — в первом кодируется тип сообщения (Note On) и номер канала (0-15), во втором высота ноты (128 ступеней по полтона), а в третьем громкость взятой ноты (тоже 128 ступеней). Почти такое же сообщение (только с типом Note Off) необходимо для того, чтобы инструмент прекратил воспроизводить данную ноту. Такая простая организация позволяет довольно эффективно использовать не очень высокую пропускную способность MIDI, при этом иметь до 16 каналов в одном последовательном интерфейсе. Из-за «последовательности» в MIDI невозможно сделать так, чтобы две ноты звучали абсолютно одновременно. Однако задержки между одновременно взятыми нотами в аккорде минимальны (единицы миллисекунд) и становятся заметны только в очень насыщенных произведениях.
Кроме команд «Note On» и «Note Off» в MIDI предусмотрено множество других сообщений. Прежде всего это контроллеры, с их помощью можно в реальном времени изменять звучание тембра (если последний это поддерживает). Например, можно плавно менять высоту взятой ноты, создавать эффект вибрато и делать множество других вещей. Вообще живучесть MIDI (почти 30 лет) объясняется тем, что разработчики заложили в стандарт возможности к расширению. В MIDI существует множество не стандартизированных команд, которые каждый производитель может использовать по своему усмотрению (при этом не понимающий этих команд прибор их просто проигнорирует или передаст третьему через THRU), а кроме того до сих пор возможно расширение формата при помощи стандартизации новых команд по предложению производителей (этим и занимается MMA в настоящее время). Сейчас формат MIDI используется не только по своему прямому назначению (игра на синтезаторах), но и во многих смежных областях, таких как синхронизация аудио/видеоустройств и даже управление световыми эффектами (DMX технологии).
Бум подобного подключения синтезаторов между собой пришёлся на пик творчества Жана Мишеля Жарра: именно он впервые в мире смог подключить (и запрограммировать) более 10 синтезаторов в одну MIDI-цепь, где каждый из синтезаторов имел свою чётко написанную программу включения/выключения заданных параметров в заданное время (т.е. мог менять звук на синтезаторе в заданное время без вмешательства со стороны исполнителя: последний мог спокойно продолжать играть на инструменте, только уже другим звуком и с другими параметрами.
Тогда многие поняли, что за миди-технологией большое будущее: ведь только эта технология на зарождавшихся тогда свето-звуковых шоу могла точно, секунда в секунду, поменять звук на синтезаторе и сдетонировать залп фейерверка и ещё много чего сделать в эту секунду. Что практически невозможно сделать вживую, живым оператором.
Перспективы.
Настоящее.
Сегодня самое большое распространение технология MIDI получила в живых концертах, в виде отдельных семплеров. Например, активно использует семплеры группа Linkin Park. С помощью семплера многие барабанщики сейчас могут сыграть любым звуком, который можно заранее загрузить в семплер. Суть проста: к пластику каждого барабана крепится миди-триггер, который при ударе по пластику передаёт сигнал семплеру. В итоге получается два звука — звук самого пластика и звук из семплера. Смесь этих звуков может дать фантастические краски и драйв, чем многие барабанщики и пользуются повсеместно (и так же скрывают истинную природу звучания барабанов на концерте). Точно так же можно говорить и о гитаристах: миди-триггеры на гитаре уже не редкость. Да и педаль не нужно так часто нажимать для переключения звука: если смена этого звука запрограммирована заранее в тайм-коде звучащей композиции, то семплер может сам переключить нужный звук в нужное время в нужном месте. Именно благодаря технологии МИДИ сейчас стали возможны потрясающие и грандиозные свето-звуковые шоу многих исполнителей…
Сейчас при прямом подключении устройств к компьютеру наличие разъёмов именно MIDI абсолютно не обязательно: эти миди-сигналы спокойно можно передавать и через обычную шину USB, что ещё более удобно. Тем более что сейчас подобных миди-устройств с USB выпускается довольно много. Хотя при подключении двух независимых совместимых устройств, наличие родных миди-разъёмов пока обязательно.
Ошибки.
Самая распространённая ошибка многих пользователей — они пытаются подключить аудио-аппаратуру между собой через миди-разъёмы, не понимая, что звук (потоковое аудио) никаким образом не может передаваться по миди-каналу. По миди передаётся ТОЛЬКО ИНФОРМАЦИЯ о нажатом (повёрнутом) контроллере. Миди это не оцифрованный звук, это набор стандартизированных команд для генератора.
Точно так же бессмысленно говорить о «плохом или хорошем звучании миди-музыки». MIDI-файл — не музыка, это набор команд по управлению электронными музыкальными инструментами и ничего более. Вспомним классический духовой орган. Здесь исполнитель посредством сложнейшей механики управляет подачей воздуха в комбинации звучащих труб. MIDI — электронный аналог такой механики. Это просто инструмент, при помощи которого исполнитель реализует свои замыслы. Поэтому совершенно бессмысленно говорить о качестве MIDI в плане музыки, имеет место лишь разговор о возможностях управления, предоставляемого этим цифровым интерфейсом.
Сейчас для реализации всех возможностей технологии миди в домашней студии достаточно 4 вещей:
1) компьютер с установленным редактором (DAW) и VST-плагинами,
2) миди-интерфейс, который может быть в звуковой карте (PCI, USB, FireWire), либо реализован на шине USB (отдельный кабель),
3) миди-контроллер для управления DAW (чтобы многочисленные регуляторы не крутить мышкой) тоже бывает на USB-шине,
4) миди-клавиатура, обычно фортепианного типа, для наигрывания мелодий (рисовать мелодию мышкой не очень удобно).
Дополнительно можно подключить электронные ударные, либо драм-машину, либо отдельный звуковой модуль и управлять ими по миди.
Функционал и ценовой диапазон современных миди-устройств поражает воображение: от обычного кабеля E-MU XMIDI 1X1 USB до монстра Euphonix MC Media Application Controller…
Практические примеры и настройки будут в ближайших статьях
читать дальше
подписаться на обновления
(нет оценки)