Введение в MIDI
MIDI или Musical Instrument Digital Interface — это протокол, с помощью которого электронные инструменты обмениваются информацией с внутренними и внешними источниками. Проще говоря, это некий язык, которым мы посылаем команды нашим виртуальным инструментам с помощью секвенсора или MIDI-контроллера.
Вы нажимаете клавишу на MIDI-клавиатуре — информация о нажатой ноте, силе нажатия и прочих вводных передаются в секвенсор. Самая простая и понятная информация, которая может быть передана:
— Длина ноты
— Высота ноты
— Сила нажатия (Velocity)
— Нажатие педали (Sustain)
Но у MIDI-сигнала также присутствуют дополнительные параметры, так называемые Control Change (CC). По своей сути это просто параметры, которые могут иметь значение от 0 до 127. Их много, но обычно на MIDI-клавиатуру физически выводят только два из них: CC01 (колесо модуляции или Modwheel) и CC02 (Expression).
Другие CC-параметры тоже существуют (CC03, CC04, CC05 и так далее) и также могут быть использованы по желанию производителя инструментов. Просто далеко не всегда их выводят физически и их настройкой можно заниматься только внутри секвенсора.
Что такое программирование?
Под программированием понимается работа с MIDI-параметрами для придания звучанию VST-инструментов детализации, живости и реалистичности. Если вы настраиваете Velocity, крутите Modwheel, изучаете другие CC-параметры, то вы занимаетесь именно программированием.
Зачем это делать? Дело в том, что если вы загрузите какую-либо библиотеку и просто начнете играть ноты, скорее всего она будет звучать очень плохо и нереалистично. Это происходит потому, что по своей сути виртуальные библиотеки — это просто набор сэмплов, который загрузили в сэмплер (например Kontakt). Соответственно нажимая на ноты, вы просто запускаете разные сэмплы, привязанные к этой ноте.
Этого мало для того, чтобы реалистично имитировать какой-либо инструмент. Именно поэтому производитель инструмента также старается записать не просто ноты, но ноты на разной динамике, записать переходы между ними, записать несколько вариаций одной и той же ноты — а потом все это привязать к MIDI-параметрам. Таким образом с помощью MIDI-параметров мы можем не только запускать ноту, но еще и менять её динамику, добавлять вибрато, менять атаки звука или окончания, менять характер звука. Например:
- Во многих оркестровых и перкуссионных библиотеках параметр Velocity влияет на динамику коротких нот (сильнее нажимаете на клавишу — громче звук, слабее — тише)
- Также в оркестровых библиотеках параметр Modwheel влияет на динамику длинных нот (крутите колесо вверх — звучит громче, вниз — тише)
- Очень часто параметр Expression влияет на громкость инструмента в целом
- Иногда бывают ситуации, когда Velocity влияет на атаку звука (мягче или острее)
- У струнных и духовых инструментов некоторые производители привязывают возможность менять скорость или степень вибрато — это может быть как уже знакомые нам CC01 и CC02, так и отдельный параметр (например CC03 или CC11)
Список можно продолжать бесконечно, потому что каких-то жестких стандартов нет. Каждый производитель VST-инструментов сам решает, какой параметр к чему привязать. Первые три в вышеуказанном списке — достаточно частые случаи, остальное же — уже специфические примеры. Поэтому важно изучать каждую конкретную библиотеку на предмет того, какой MIDI-параметр за что отвечает конкретно в ней.
Динамика
Работа с динамикой является одной из главных задач программирования. У этой работы есть две условных направленности — макродинамика и микродинамика.
Макродинамика — это проработка динамических оттенков произведения в целом. Например, у вас композиция начинается в нюансе piano и потом происходит крещендо до нюанса fortissimo. Соответственно с помощью MIDI-параметров вы должны сделать ноты в начале произведения тише, а ноты в конце — громче. Здесь все достаточно просто.
Пример макродинамики без программирования:
Пример макродинамики с программированием:
Микродинамика — это детализация. Например у вас тянется длинная нота у скрипок и вам нужно, чтобы исполнитель прибавлял и убавлял громкость внутри этой ноты. Например громко вступал, затем отходил назад, а ближе к концу ноты начинал наращивать громкость, делая крещендо. Соответственно вы берете Modwheel и прописываете этой длинной ноте всю вышеперечисленную динамику.
Пример без программирования:
Пример с программированием:
Или другой пример — у вас перкуссия играет какой-то быстрый ритм и естественно он не может играть каждый удар на единой громкости — это нереалистично. Вы с помощью Velocity меняете громкость каждого отдельного удара, чтобы сделать звучание более схожим с реальным исполнителем.
Пример без программирования:
Пример с программированием:
Очень важно следить ушами за тем, чтобы ваш виртуальный инструмент вел себя реалистично при проработке динамики. Важно помнить, что MIDI-параметры — это просто набор цифр. Насколько хорошо или плохо автор инструмента запрограммировал под эти цифры переходы между динамическими слоями — требует проверки. Даже самые известные производители инструментов зачастую не справляются со всеми деталями и часто можно получить странные переходы на какой-то одной конкретной ноте, недостаточно громкую/тихую динамику у инструмента в целом, или еще какие-нибудь проблемы.
Атаки и переходы
Программирование также включает в себя работу с атаками звука и переходами между ними — и это не про MIDI-параметры, а про ритмическую сетку.
Каждый сэмпл любого виртуального инструмента начинает звучать с определенной скоростью. У сэмпла есть небольшое время «разгона» до полноценной атаки звука. Зачастую речь о маленьких значениях — 20, 30, 40, 100, 150 миллисекунд. Это значит, что инструмент будет вступать не сразу, как только получит MIDI-сигнал, а через маленький промежуток времени. Соответственно можно сделать вывод, что далеко не всегда нота инструмента будет попадать ровно в сетку вашего секвенсора, даже если ноты идеально квантизировать.
Более того, живой музыкант в принципе далеко не всегда играет идеально под клик — он не робот. И у него тоже есть задержка перед атакой. Разница лишь в том, что он делает это осознанно и контролируемо, а секвенсор лишь воспроизводит то, что ему написали. Музыкант чувствует грув, ритмику, темп, он чувствует музыкантов в ансамбле и старается подстраиваться под них. Секвенсор — нет.
А значит для реалистичности звучания с атакой звука приходится работать вручную — двигать ноты вне сетки для того, чтобы они попадали под клик, или наоборот — чтобы иногда выпадали из четкой ритмической сетки, имитируя живое эмоциональное исполнение. Также важно следить за ансамблем — чтобы ваша группа инструментов звучала вместе, а не так, как будто каждый из них не слышит другого.
Особенно важно понимать, что разные библиотеки имеют разную задержку перед атакой, поэтому если вы поменяете условно одну библиотеку струнных инструментов на другую, весь ансамбль может развалиться, потому что в другой библиотеке могут быть другие задержки.
Помимо ручной расстановки нот вне сетки есть также решение в виде установки негативной задержки для инструмента внутри секвенсора. Об этом в нашей энциклопедии есть отдельная статья.
Второй важный пункт, связанный с атаками — переходы между нотами. Программирование подразумевает под собой проработку того, чтобы движение от ноты к ноте напоминало живого музыканта. А живой музыкант не всегда одинаково ровно может двигаться между нотами.
Самый простой пример — духовые инструменты. Музыкант, играя на духовом инструменте, должен иногда брать дыхание — иначе ему не хватит воздуха для следующей ноты. Обычное написание нот в секвенсоре такой особенности не предполагает. Соответственно нужно вручную менять окончание какой-либо из нот перед предполагаемым взятием дыхания — тогда это будет звучать реалистичнее.
Отдельно в данном случае стоит сказать про штрих «легато» — для производителей библиотек этот штрих является серьезной головной болью, потому что сделать с помощью сэмплов реалистичный переход от ноты к ноте, не разрывая звучание между ними — достаточно тяжелая задача и разные производители справляются с этим очень по-разному. Важно четко понимать, как именно ваш музыкант переходит с ноты на ноту — например на струнных вы можете это сделать целыми тремя способами (переход с глиссандо, резкий переход с одной позиции на другую или переход на другую струну) — и соответственно искать библиотеку, которая работает именно так, как нужно вам в вашей композиции.
Пример атак и переходов без программирования:
Пример атак и переходов с программированием:
Штрихи (артикуляции)
Третьим блоком программирования является проработка штрихов. Почти всегда виртуальный инструмент сопровождается набором различных штрихов или артикуляций, как их также принято называть. Например почти у каждой струнной библиотеки можно найти штрихи легато и нон-легато, стаккато, спиккато, трели и тремоло. Также туда могут внедряться и другое множество штрихов — мартеле, портато и много чего еще.
И если у живого музыканта границы между штрихами иногда могуть быть очень условными, то у виртуальной библиотеки они строго фиксированы и мы не можем изменить из звучание в какую-либо сторону. Их уже записали так, как записали. Все, что остается композитору — переключаться между ними.
Смена штрихов — часть программирования. Вы можете просто сыграть ноту на громкой динамике, а можете сменить штрих на условный сфорцандо — и это может звучать более реалистично. Можете выбрать штрих стаккато и при повышении темпа переключиться на спиккато. Хорошая композиция не всегда предполагает постоянную смену штрихов, но игнорировать данную опцию вообще, пытаясь использовать один и тот же штрих на протяжении всей композиции — путь к нереалистичному звучанию.
Артикуляции в разных библиотеках могут переключаться по-разному (или не переключаться вообще), но самый распространенный способ смены артикуляций — keyswitches. Это когда клавиши на клавиатуре, которые обычно находятся вне диапазона инструмента (например у скрипки они будут в районе контроктавы) назначаются на переключение разных штрихов. Обычно эти клавиши выделяются отдельным цветом.


Послесловие
Вышеописанные три пункта — динамика, атаки и переходы и артикуляции — составляют костяк грамотного программирования VST-инструментов. Их проработка может увеличить реалистичность инструментов и абсолютно необходима для достижения профессионально звучащих композиций.
Несмотря на то, что термин «программирование» звучит очень технически, каких-то четких правил программирования нет, почти вся работа делается исключительно на слух и сильно зависит от вкуса и предпочтений конкретного композитора.
Пожалуй главное правило — всегда нужно продумать все до самых мелочей. Если делать работу широкими мазками и не вслушиваться в детали, то ваше звучание всегда будет недотягивать до реалистичного. Если же вы будете прорабатывать каждую мелочь, искать нужные артикуляции, следить за динамикой каждой отдельной ноты, следить за атаками звуков и переходами между нот — все это даст вам звучание, близкое к живому.
Главное помнить — виртуальные инструменты являются неидеальными инструментами, которые дают вам определенный набор опций для имитации живых музыкантов, но сильно ограниченны технически. Задача композитора — создать с помощью этого инструментария иллюзию живого исполнения. Программирование — это и есть та самая имитация с помощью технических параметров, превращающая резиновые сэмплы в реалистичный оркестр.
Напоследок хотелось бы оставить здесь видео невероятного Блейка Робинсона, который наглядно показывает, какого реализма можно достичь с помощью грамотного программирования:
Удачи!
