![]() | |||
MIDI-технология. Урок второй.
| ![]()
Роман Мухачев, экс-клавишник групп "Мираж", "Лицей", "Тайм-аут", ныне - клавишник группы "Треф".
|
|
![]() |
В MIDI-технологии так же, как и в любой другой области науки или искусства существует множество "подводных камней". Знание их или даже представление о возможности их существования определяет степень компетенции того или иного специалиста. Конечно, было бы прекрасно, если бы каждый, занимающийся программированием MIDI-аппаратуры, был инженером-системотехником. Но большинство музыкантов - гуманитарии, а технический склад ума имеют люди, часто далекие от музыки. В идеале, каждый должен заниматься своим делом, но в жизни все сложнее.
| |
Если вам необходимо сделать, скажем, аранжировку и записать на студии какое-нибудь произведение в жанре "русского шансона" (попросту говоря, "блатную" песню), то знание основ MIDI и работы секвенсора будет достаточным. Но если вы собираетесь "вырулить" пару модных хитов - без "высшего MIDI-пилотажа" не обойтись. Наш рассказ о MIDI-технологии построен по принципу от простого к сложному. Поэтому если вы не найдете здесь ответы на все вопросы, надеюсь, что после прослушивания нашего краткого курса, вы в поисках решения будете двигаться в нужном направлении. На прошлом занятии мы выяснили, что MIDI - ни что иное, как последовательный интерфейс, служащий для связи между собой различных музыкальных и околомузыкальных приборов и работающий на частоте 31125 Гц. Вашему вниманию были представлены примеры некоторых способов подключения разных MIDI-устройств: MIDI-out соединяется только с MIDI-in, а MIDI-in еще иногда и с MIDI-thru. Сегодня мы поговорим о структуре MIDI-сообщений. MIDI - интерфейс цифровой. Это значит, что все происходящее в нем закодировано строго специальным, стандартным способом при помощи цифр. Цифр в двоичной системе счисления всего две - ноль и единица, которые передаются электрическими импульсами соответственно низкого и высокого уровней напряжения. С помощью последовательностей этих импульсов и летает по MIDI-шнурам многообразная музыкальная и вспомогательная служебная информация, необходимая нам для работы. Поскольку MIDI - это стандартный COM-порт (последовательный порт), уровень напряжения, соответствующий логической "1", лежит в пределах от +3 до +12 В, а логическому "0" соответствует напряжение от -3 до -12В. В целях лучшей помехозащищенности система не реагирует на колебания напряжения от -3 до +3 В. Не пугайтесь слова "закодировано". В данном случае оно означает "поставлено в соответствие". У разработчиков MIDI и мысли что-то скрывать не было. Другими словами, если для передачи команды нажатия конкретной ноты мы должны послать соответствующую этой ноте группу нолей и единиц, то это означает, что нам необходимо послать цифровой двоичный код этой ноты. На этом мы остановимся подробнее. Давайте разберемся, как же формируется последовательность нолей и единиц. MIDI-сообщение Note On (команда для взятия ноты) состоит из трех байтов. Первый байт несет в себе информацию о MIDI-канале, по которому передается сообщение, и о том, что это сообщение и является собственно нотой. Второй байт несет информацию о высоте ноты, а последний - о ее скорости (силе) нажатия - Velocity, ее название. В этой трехбайтовой последовательности есть еще несколько вспомогательных импульсов, которые располагаются по одному в начале и в конце каждого байта и называются соответственно старт-бит и стоп-бит. Они необходимы для того, чтобы MIDI-прибор мог разобраться в потоке информации, приходящей на MIDI-вход, и отделить один байт от другого. Итак, мы нажали клавишу нота звучит. Мы отпустили клавишу - нота перестает звучать. Это означает, что для выключения ноты была послана хитрая команда, которая также состоит из трех байтов. В большинстве случаев это та же команду Note On, только последний байт (скорость нажатия, Velocity) равен нулю. То есть отпуская клавишу, мы посылаем команду по взятию ноты с нулевой громкостью тем самым добиваемся прекращения ее звучания. Вот пример того, что происходит в MIDI-интерфейсе на самом низком, аппаратном уровне. В подавляющем большинстве случаев вам не придется вникать так глубоко. Чтобы профессионально работать, вполне достаточно понять, как это работает на более высоком, логическом уровне. Представим, что MIDI - это параллельный интерфейс. (Да простят меня профессионалы за подобное упрощение.) В MIDI-системе существуют так называемые каналы (MIDI channels). Всего их 16. Про поиски семнадцатого MIDI-канала рассказывают истории, леденящие кровь. Среди всего многообразия MIDI-сообщений можно выделить те, которые передаются только по своему MIDI-каналу. Это Channel Messages - "канальные" сообщения (от английского channel - канал): команды для взятия и отпускания нот (Note On и Note Off), различные MIDI-контроллеры, команды переключения звуков (Program Change) и смены режимов. Помимо этого, существуют сообщения, которые передаются без привязки к конкретным каналам - системные сообщения (System Messages). Это сообщения реального времени - System Real Time Messages: MIDI-системная тактовая частота (Timing Clock), ряд других команд, служащих для поддержания временной стабильности системы, и System Exclusive Messages - обособленно стоящая от всех остальных группа MIDI-сообщений, на которой мы остановимся подробнее. Главной отличительной чертой MIDI Exclusive от других MIDI-сообщений является то, что они существуют не в реальном времени, то есть их нельзя передавать во время проигрывания MIDI-произведения. Дело в том, что когда на MIDI-in инструмента начинают поступать MIDI Exclusive сообщения, инструмент перестает корректно реагировать на другие, одновременно поступающиеся команды. Это происходит потому, что прием MIDI Exclusive сообщений, как правило, приводит к коренной перестройке основных параметров MIDI-инструмента - вот одно из применений MIDI Exclusive. C помощью MIDI Exclusive сообщений можно сделать с MIDI-инструментом практически все, что угодно, иногда это бывает очень полезно. Основная сложность заключается в составлении нужных цепочек команд. "Эксклюзивными" эти сообщения называются потому, что стандартизован только формат их передачи. Размер собственно MIDI Exclusive сообщения [BODY] может меняться в очень широких пределах. Первые четыре байта MIDI Exclusive сообщений стандартны и обозначают следующее. Первый - F0h - является стартовым байтом всей последовательности MIDI Exclusive, второй (MAN) и третий (DEV) байты - коды соответственно фирмы-производителя аппарата и конкретной модели, четвертый байт - код команды. Следовательно, MIDI Exclusive от одной конкретной модели инструмента подойдет только к такой же модели и больше ни к какой другой. Body - собственно данные, их объем и определяет размер MIDI Exclusive последовательности. Следующий байт - контрольная сумма, т.е. сумма значений всех предыдущих байтов. Контрольная сумма - хитрое изобретение, необходимое для контроля безошибочной передачи сообщений. Она считается в передающем устройстве, затем передается и сравнивается с суммой всех байтов, посчитанной в приемном устройстве. Если эти значения совпадают, то информация считается переданной правильно и принимается к исполнению. Соответственно, если значения не совпадают, то выдается сообщение об ошибке. И, наконец, последний байт - F7h - код завершения передачи MIDI Exclusive. В некоторых случаях может потребоваться самостоятельно составить MIDI Exclusive последовательности. Но это достаточно обширная тема и мы в дальнейшем посвятим MIDI System Exclusive Messages отдельное занятие. Представим, что перед нами стоит MIDI-клавиатура, "мозг" - MIDI-инструмент в рэковом исполнении, и нам необходимо прослушать его звуки. Нажимая на клавишу, мы посылаем на MIDI-out нашей MIDI-клавиатуры сообщение по взятию ноты. При условии правильного соединения MIDI-шнуром это сообщение попадет на MIDI-вход "мозга". Надо знать, по какому MIDI-каналу передается наше MIDI-сообщение. Это несложно выяснить, "полазив" по соответствующим меню (нажимая на кнопки), в названии которых фигурируют слова "MIDI", "System" или "Global", и изменить соответствующий параметр, в общем случае называющийся MIDI Transmit Channel. Допустим, этот параметр равен единице, то есть клавиатура передает команды по первому MIDI-каналу. Далее необходимо убедиться в правильности подключения MIDI-кабеля. Если коммутация выполнена верно, на приемном MIDI-устройстве должен мигать светодиод (при наличии такового), индицирующий поступление MIDI-сообщений на MIDI-in. Затем проверяем аудио-часть. Наилучший способ - вытащить джек из аудио-выхода приемного MIDI-устройства (в данном случае "мозга") и с известной осторожностью дотронуться до его конца. Скорее всего, током вас не ударит, осторожность нужна, чтобы не перегрузить акустические системы. В случае правильного подключения вы услышите характерный звук. Теперь самое важное - необходимо "отловить" приходящий на MIDI-вход сигнал и заставить зазвучать наш экспандер. Мы знаем, что ноты передаются по первому MIDI-каналу - это мы выставили на клавиатуре. Если при данной конфигурации MIDI-системы мы хотим только помузицировать, то задачу можно решить проще. Достаточно перевести "мозг" в режим Omni: присвоить в окне MIDI, System или Global-параметров параметру Omni значение On - и вы тут же услышите чарующие звуки. Omni On означает, что приемное устройство принимает MIDI-команды одновременно по всем MIDI-каналам и воспроизводит их одним, текущим звуком. То есть, на какой бы MIDI-канал по приему экспандер не был настроен, мы все равно услышим звук. А если, к примеру, мы собираемся работать с внутренним секвенсором, расположенным на клавише, и брать с "мозга" несколько тембров одновременно, Omni должен быть всегда в состоянии Off, иначе мы услышим великолепную какофонию - все партии будут звучать одним тембром. Итак, если нужно просто "пощупать звуки" - включайте на приемном устройстве Omni в положение On и радуйтесь. При многоканальной работе все немного сложнее. Режим, в котором находится MIDI-инструмент во время одновременного воспроизведения различных партий, называется мультитембральным (Multi Timbral Mode, или просто Multi Mode). В некоторых синтезаторах этот режим может называться по-разному, но суть его одна: прием MIDI-информации идет раздельно по каждому из MIDI-каналов. Иногда для перевода инструмента в мульти-режим достаточно, "полазив" по меню, отключить Omni (установить Omni Off), иногда просто нажать на соответствующую кнопку на лицевой панели инструмента. Вот она, главная задача MIDI! В мульти-режиме мы слышим одновременно несколько разных тембров! Необходимо чувствовать разницу между MIDI-каналами и каналами секвенсора. Условимся называть секвенсерные каналы треками (sequencer track). MIDI-каналов всего 16, а виртуальных секвенсерных, как правило, значительно больше, поэтому несколько секвенсерных треков можно направить по одному MIDI-каналу. Это может пригодиться, например, для одновременного существования и моментального переключения с одной записанной партии на другую, для "забивки" барабанов, когда необходимо каждый барабанный инструмент пустить по своему треку, но не хочется занимать дефицитные MIDI-каналы, да мало ли для чего еще! Шире используйте эту возможность, и проблем у вас станет меньше. Как я упомянул в начале урока, MIDI - это последовательный интерфейс, то есть все MIDI-команды передаются по MIDI-шнуру друг за другом, последовательно, только временное расстояние между ними достаточно мало. Запомните эту главную MIDI-аксиому на всю жизнь. Для того чтобы лучше разобраться, что же творится в MIDI-шнурах, мы на некоторое время забыли об этом. Но подавляющее большинство людей во время работы с MIDI представляют эту систему в "параллельном" виде, то есть в виде одновременно существующих шестнадцати каналах. С таким представлением действительно легче всего работать. Вспоминать о том, что MIDI - последовательный интерфейс, стоит только при необходимости ответить на вопрос, почему при большой насыщенности аранжировки происходят заметные на слух запаздывания. Об этом мы поговорим позже, а пока вкратце расскажу, как с микрозапаздыванием можно бороться. Задача решается достаточно просто - надо разгрузить MIDI-систему. В качестве примера расскажу один случай. Около полутора лет назад я получил заказ сочинить музыку и сделать аранжировку рекламного аудиоролика компании "Мобил Телеком". Характер музыки должен был быть блюзово-рок-н-рольный. Вокальные партии спели Павел Молчанов ("Тайм-Аут") и Мария Кац (Юдифь). Музыка получилась веселой, вокалисты отпели на славу, все были довольны. Записывались на студии "Лига", где в то время стоял компьютер Atari с программой Cubase 2.0. Основные звуки брались с популярнейшего в то время синтезатора Ensoniq TS-10. Еще дома в процессе аранжировки, когда уже начали вырисовываться контуры этого произведения, у меня появился дискомфорт, вызванный микрозапаздываниями MIDI-системы: оттягиванием первых долей, несовпадением ритма, заметными на слух стыками между паттернами. Записать дикторский текст, гитарные и вокальные партии при таком звучании в принципе можно, но делать окончательный микс в таком варианте означало бы допустить брак. Конечно, подавляющее большинство слушателей этого бы не заметили, но чувство "чего-то не хватает" неприятным осадком осталось бы в памяти. Решение было найдено быстро - разгрузить MIDI-систему, скинув в многоканальный магнитофон основные ритмические партии. В данном случае это были: рояль, бас и большой с малым барабаны. Благо, свободных дорожек было достаточно и за потерю динамики на двух дюймах ленты можно было не переживать. Естественно, скидывание в рулон производилось по одному каналу, при отключенных в компьютере остальных партиях. Результат полностью оправдал ожидания - ощутимый на слух "неровняк" пропал, появилось утраченное чувство комфорта, да и сводить звукорежиссеру Алексею Дементьеву стало легче - появилась возможность отдельно поработать над этими каналами. Рассказ об остальных тонкостях MIDI-технологии мы продолжим на следующем уроке. Если у вас возникли неясности, если вы хотите подробнее узнать о том или ином аспекте предмета нашего разговора, пишите. Я обязательно отвечу на все ваши вопросы.
Продолжение курса лекций - Урок третий |