Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

MIDI-режимы и мультитембральность




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

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

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

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

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

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

В мультитембральном синтезаторе реакция на сообщение Program Change может отличаться, в зависимости от того, в каком режиме находится инструмент, и на каком канале сообщение пришло. В режиме перфоманса обычно меняется не программа, а целая комбинация (перфоманс).

Многие тон-генераторы при получении Program Change не выключают ноты, которые в этот момент звучат на канале. Например, если во время звучания подклада приходит сообщение о смене программы на трубу, то ноты подклада продолжают звучать (тембром подклада), а новые ноты будут звучать тембром трубы. Но полагаться на такую возможность не стоит — есть тон-генераторы, которые выключают звучащие ноты немедленно.

Сообщение Program Change имеет один байт данных, в котором содержится номер программы. Следовательно, можно выбрать одну из 128 программ. Например, как выглядит назначение программы номер 36 на четвертый MIDI-канал, показано на рис. 23.

Один из главных подводных камней, на который можно натолкнуться с этим сообщением, — нумерация программ в конкретном устройстве. В компьютерном мире все начинается с нуля, поэтому номера программ приходят в диапазоне от 0 до 127. И действительно, внутри устройства программы нумеруются с нуля. Но многие производители считают, что музыканты не в состоянии нормально воспринимать программу номер 0 (как, впрочем, и MIDI-канал номер 0), и поэтому нумеруют программы для пользователя, начиная с 1. Такие "адаптированные" номера могут указываться на передней панели или в руководстве к инструменту. Другие фирмы нуля не боятся, и первая программа у них, как и положено, имеет номер 0. Отсюда — гарантированная путаница при работе с разными инструментами. Хорошо, когда программы называются по имени, а если по номеру? В вышеприведенном примере программа номер 36 на "адаптированных" инструментах будет показана пользователю как 37.

Второй подводный камень — совместимость инструментов. На одном синтезаторе программе номер 5 может соответствовать гитара, на другом — флейта, на третьем — вообще набор ударных. Так что композиция, подготовленная на одном инструменте, на другом может звучать, мягко говоря, некорректно, что неприемлемо для обмена и распространения. С появлением в 1991 году спецификации General MIDI эта проблема была отчасти решена — каждому номеру программы сопоставили свой характерный тембр. Подробнее о проблемах совместимости поговорим в одной из следующих статей.

Некоторые старые инструменты имеют меньше 128 программ. Что произойдет, если в инструменте, скажем, только 64 программы, а в сообщении Program Change пришел номер 110? Скорее всего, сообщение будет проигнорировано. В некоторых случаях такой номер может быть преобразован в один из доступных.

Большинство же современных тон-генераторов содержат более 128 программ (в некоторых устройствах число программ превышает 1000). Понятно, что выбрать программу, скажем, 512 с помощью одного сообщения Program Change нельзя. Поэтому сложилась практика организовывать программы в банки. Один банк может содержать, например, 128 программ, и тогда программа с номером 512 будет первой программой в пятом банке (128 x 4 = 512).

Как ее выбрать? Очень просто — с передней панели инструмента. Сначала кнопкой выбирается нужный банк, а затем уже программа. А если то же самое нужно сделать посредством MIDI-сообщения? До 1990 года такого сообщения не было. Какие только способы не выдумывали производители! Все они больше напоминали ритуальные пляски.

Например, использовались карты переадресации. Синтезатор настраивался так, чтобы, скажем, при получении сообщения Program Change с номером 12 выбиралась внутренняя программа номер 344. Эта процедура выполнялась для всех тембров, используемых в композиции. Другой способ — скопировать нужные программы в пользовательский банк, выбрать его вручную с панели инструмента, после чего сообщение Program Change позволит использовать программы из этого банка. Некоторые производители применяли для переключения банков дополнительное MIDI-сообщение, какое именно — зависело от конкретного инструмента. Часто использовались сообщения SysEx.

Наконец в 1990 году организация MMA решила навести порядок и стандартизировать процесс выбора банка. Появилось сообщение высокого разрешения под названием Bank Select. Его поместили во второй уровень кодирования (первый был уже весь занят), к контроллерам, и разбили на два контроллера. Старшие 7 бит задаются контроллером СС#0, младшие — контроллером СС#32.

С помощью Bank Select можно получить доступ к одному из 16384 банков, а конкретную программу в этом банке выбрать как обычно — с помощью сообщения Program Change. Таким образом, если в каждом банке будет по 128 программ, то "сладкая парочка" Bank Select / Program Change позволит адресовать одну из 2 097 152 программ (16384 x 128). Но не стоит впадать в эйфорию от этого числа. Во-первых, ни один производитель пока не выпустил инструмента с таким количеством звуков (да и зачем?) Во-вторых, есть замечательные инструменты, выпущенные до августа 1990 года, которые на сообщение Bank Select не реагируют. И выбор нужной программы для них по MIDI возможен только с помощью одного из вышеупомянутых "древних" способов.

Наконец, и это самое неприятное, спецификация MIDI не определяет точного механизма выбора звуков с помощью Bank Select. А именно: не определено количество доступных банков, число программ в каждом банке и принцип нумерации программ. Так что каждый производитель применяет собственные схемы, часто на основе сложившейся традиции.

Например, в некоторых инструментах банк содержит от 8 до 10 программ, в других — 16, 32, 64 или 128. Банки могут нумероваться буквами (A, B, C) или цифрами, арабскими или римскими. Нумерация программ в каждом банке может начинаться с 0 или с 1. В одном из старых вариантов номер программы состоял из двух цифр. Первая определяла банк, вторая — номер программы в банке. При этом в каждом банке было по восемь программ. Таким образом, первая программа первого банка имела номер 11, потом нумерация шла до 18, затем перепрыгивала на 21 (первая программа второго банка) и т. д. Буквенно-цифровая нумерация может выглядеть как B054, что означает программу номер 54 из банка B.

Некоторые производители предложили собственные стандарты, определяющие минимальные характеристики совместимых устройств. Частью этих стандартов является и схема организации программ в банках. Наиболее известные — GS (Roland) и XG (Yamaha), но о них поговорим подробнее в статье, посвященной совместимости.

При получении сообщения Bank Select тон-генератор не должен выполнять каких-либо действий. Полученный номер банка должен сохраняться на будущее. А затем, как только поступит сообщение Program Change, устройство выберет программу из банка с сохраненным номером. Некоторые устройства все же реагируют на Bank Select дополнительными действиями. Так, в семплерах это сообщение может служить командой для загрузки набора семплов с диска в оперативную память. В некоторых инструментах посредством сообщений Bank Select переключаются наборы ударных, что, вообще говоря, — нарушение спецификации.

Если нужно переключиться на другую программу внутри текущего банка на том же MIDI-канале, то достаточно одного сообщения Program Change, посылать Bank Select не надо. Если нужно выбрать программу из другого банка, то сначала посылается Bank Select, затем Program Change.

Большинство устройств содержат менее 128 банков. Некоторые из них в этой связи реагируют в сообщении Bank Select только на контроллер СС#0, используя его не как MSB, а напрямую как номер банка. Другие требуют адресацию с использованием обоих контроллеров (CC#0 и CC#32). Спецификация требует, чтобы независимо от числа доступных банков использовалась полная схема адресации.

Вернемся к нашему примеру с программой 512. Пусть инструмент хранит в каждом банке по 128 программ. Тогда программа 512 будет, как говорилось ранее, первой программой в пятом банке. Предположим, что мы работаем на восьмом MIDI-канале, где текущий банк — третий. Следовательно, для выбора программы 512 на шестнадцатый MIDI-канал нужно посылать оба сообщения: Bank Select и Program Change (рис. 24).

Выбор программ возможен также посредством сообщений SysEx, но этот метод не является стандартным и зависит от конкретной модели тон-генератора.

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

Извлечение звуков


MIDI является выраженным клавишно-ориентированным протоколом, поэтому процесс извлечения звуков кодируется двумя простыми сообщениями — взять ноту (Note On) и снять ноту (Note Off). Исполнитель при нажатии клавиши задает сразу три параметра: момент начала звучания, динамику и высоту тона. Длительность звука определяется по моменту отпускания клавиши.

Такая модель хорошо подходит и для ударных инструментов. Здесь, правда, основным выразительным средством является динамика, так как высотой тона ударных в процессе исполнения чаще всего управлять нельзя, как и длительностью звука.

К инструментам с другим принципом звукоизвлечения (струнным, духовым) такая модель не подходит. Например, на скрипке музыкант может управлять тремя указанными параметрами по отдельности: левой рукой он задает высоту звука (путем прижатия струны в нужной позиции), правой — момент начала и окончания звучания, а также динамику (ведением смычка по струне). Эти параметры музыкант может изменять независимо друг от друга, причем в процессе звучания. Например, момент появления звука никак не укладывается в схему "нажать клавишу с нужной громкостью". Здесь это очень тонкий процесс: звук может постепенно возникать из тишины, набирая громкость, и так же уходить в тишину, то есть музыкант способен изменять динамику в процессе звукоизвлечения.

MIDI все упрощает и требует однозначного решения — в какой момент и с какой динамикой должна звучать нота. После получения сообщения Note On динамика передается в генератор огибающей синтезатора, и ее изменение в процессе звучания происходит не по воле музыканта, а автоматически на основе параметров огибающей. Конечно, в MIDI есть способы имитации "неклавишной" техники звукоизвлечения, но это требует дополнительных усилий и хорошего знания возможностей конкретного тон-генератора.

В MIDI используется равномерно-темперированный строй и 128 нот различной высоты (с номерами от 0 до 127). Частота нот задается с помощью номера. Нота с номером 60 — всегда До первой октавы (частота 261 Гц), рис. 25.

Полный частотный диапазон, покрываемый таким образом, превышает 10 октав (от 8 Гц до 12543 Гц), что более чем достаточно. Для перевода номера ноты в частоту можно использовать формулу на рис. 26.

С номерами нот работать неудобно, но и музыкальный способ наименования (вроде d3 — Ре третьей октавы или Cis1 — До диез контроктавы) не подходит; еще и потому, что в разных странах применяются разные обозначения. Спецификация MIDI по этому поводу молчит, а большинство производителей используют такую систему: октава указывается после буквенного обозначения ноты, но первая октава (с музыкальной точки зрения) считается третьей. Например, До первой октавы называется C3. Производные ступени всегда обозначаются диезами. Так, Ре бемоль второй октавы будет называться С#4 (До диез в темперированном строе равно Ре бемоль), Соль контроктавы — G1. Нота Си обозначается по англо-американской нотации, то есть как B, а не как H. Соответственно, Си бемоль будет называться A#. Замечу, что в некоторых инструментах и секвенсорах (в основном, старых) До первой октавы обозначается как C4, что может привести к путанице. Некоторые устройства в этой связи предлагают выбрать, что считать нотой До первой октавы: C3 или C4.

Правильная нотация в MIDI не учитывается. Так, если в нотном тексте есть нота Ми диез первой октавы, то на языке MIDI она будет называться F3, Ля дубль бемоль третьей октавы — G5. Правда, секвенсоры могут показывать MIDI-события в виде привычного нотного текста, с правильной нотацией (которая зависит от тональности и от других факторов). Многие секвенсоры позволяют пользователю самому выбрать знак альтерации для конкретной ноты. Но все это сделано лишь для удобства восприятия. В тон-генератор посылается только номер ноты, на основании которого он и воспроизводит звук с нужной частотой, а как правильно записывается этот звук, с диезом или бемолем, тон-генератору все равно.

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

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

Для наборов ударных частота ноты и строй не имеют смысла: в зависимости от номера ноты тон-генератор просто запускает сопоставленный с этим номером звук. Как правило, звук ударного инструмента обозначается в секвенсоре осмысленным именем, а не просто MIDI-номером ноты. Имя берется из так называемой карты ударных (Drum Map).

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

В спецификации MIDI также используется термин "скорость нажатия", Velocity (от англ. "velocity" — "скорость"). Но для удобства (в ущерб корректности) я буду называть "скорость нажатия" одним словом — "динамика".

Сколько уровней динамики достаточно для точной передачи игры исполнителя? Однозначно ответить сложно. Разработчики MIDI решили кодировать динамику одним байтом данных, и поэтому в MIDI есть 128 уровней Velocity. Замечу, что уровней громкости целой партии (или громкости канала) может быть гораздо больше (см. далее), сейчас речь идет только о количестве уровней динамики отдельно взятой ноты.

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

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

Где LdB — максимальный уровень на выходе осциллятора при заданной огибающей сигнала; обычно точка максимального уровня совпадает с моментом завершения стадии атаки. Зависимость амплитуды сигнала (в процентах) от значения динамики можно найти по формуле на рис. 29.  

    При максимальной динамике (Velocity = 127) этот уровень равен 0 дБ (100%), при динамике 1 — -84,15 дБ (0,000062%). Значение динамики 0 используется для служебных целей (см. далее) и в формуле неприменимо. Таким образом, MIDI рекомендует использовать для отдельного звука динамический диапазон в 84 дБ. Многие тон-генераторы не следуют этой рекомендации буквально, ведь для большинства звуков такой огромный диапазон просто не нужен. Но все же зависимость, близкая к логарифмической, обычно выдерживается на каком-либо отрезке динамики. MIDI также рекомендует шкалу соответствия музыкальных динамических оттенков и Velocity, показанную на рис. 30.

 

Обращает на себя внимание большой промежуток между forte (f, Velocity = 88) и fortissimo (ff, Velocity = 118). На следующих графиках (рис. 31) показана рекомендуемая логарифмическая зависимость: уровень в децибелах от динамики (левый график) и относительный уровень (в процентах) от динамики (правый график). Для удобства на графиках отмечены музыкальные динамические оттенки.

Нажатие клавиши
Сообщение Note On дает команду тон-генератору сыграть ноту заданной высоты с заданной динамикой. Первый байт данных содержит MIDI-номер ноты, второй — динамику взятия. Например, при нажатии До первой октавы (MIDI-номер 60) на первом MIDI-канале с динамикой 110 сообщение будет представлено тремя последовательными байтами (рис. 32).

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

Значение динамики посылается тон-генератору только в момент взятия ноты, и в зависимости от него формируется громкость звучания на всех стадиях огибающей. Отсюда вывод: пока нота звучит, управлять ее громкостью с помощью параметра Velocity нельзя. А такая потребность возникает довольно часто. Например, в партии подклада или струнного ансамбля, когда один аккорд звучит несколько тактов подряд, а, скажем, во втором такте нужно увеличить громкость. На помощь приходят другие способы, например, послекасание или контроллер экспрессии (см. далее).

Нулевая динамика Ситуация, когда параметр Velocity равен нулю, должна отрабатываться тон-генератором так, как будто поступило сообщение о снятии ноты. Такое поведение необходимо для эффективной работы в режиме Running Status. Этот режим позволяет уменьшить количество передаваемых по кабелю байт и повысить пропускную способность MIDI. Более подробно Running Status и процесс передачи сообщений рассмотрим в следующей статье. Многие устройства генерируют для снятия ноты нормальное сообщение Note Off, но есть и такие, которые всегда генерируют Note On с нулевой динамикой.

Нединамические устройства (например, простейшие MIDI-клавиатуры) должны передавать в сообщении Note On постоянное значение динамики, равное 64.

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

А что произойдет, если во время звучания какой-либо ноты придет сообщение о взятии той же ноты на том же MIDI-канале? Здесь все зависит от инструмента: под новую ноту может быть отведен свободный голос полифонии, и она будет звучать в унисон с уже звучащей, либо ранее взятая нота будет "срезана", а новая зазвучит в одиночестве. Во втором случае говорят о взаимоисключающем поведении одинаковых нот на одном канале (Note Exclusivity on a MIDI channel basis).

Другой вариант взаимоисключающего поведения возникает в том случае, если в тон-генераторе заданы так называемые группы исключения (exclusive key group). Ноты, входящие в такую группу, не могут звучать одновременно. Если приходит сообщение о взятии ноты, тон-генератор проверяет: нет ли на том же MIDI-канале уже звучащей ноты, относящейся к той же группе, и если есть — выключает ее. Группа исключения может быть создана из любого набора нот, одновременное звучание которых нежелательно. Чаще всего такие группы применяются в наборах ударных для достижения большего реализма звучания. Например, группа хета может включать звуки открытого, закрытого и педального хай-хета, то есть звуки, которые в реальной жизни извлечь одновременно нельзя. Другие примеры: открытый/заглушенный треугольник, бубен (удар/отдача), различные варианты guiro, cuica и прочая перкуссия.

Отпускание клавиши


Сообщение Note Off дает команду снять ноту заданной высоты. Первый байт данных содержит MIDI-номер ноты, второй — динамику ее снятия. Снятие ноты заставляет тон-генератор перейти к стадии затухания (Release) огибающей. Таким образом, после снятия пальца с клавиши нота звучит еще ровно столько, сколько длится этот участок. Правда, если отпустить клавишу при нажатой педали сустейна (контроллер CC#64, Hold Pedal, см. далее), то звуковой генератор, хотя и получит сообщение Note Off, но участок Release не включит. Нота продолжит звучание на участке поддержки (Sustain) до тех пор, пока педаль не будет отпущена. При отпускании педали генератор, помня о том, что сообщение Note Off уже приходило, включит участок Release автоматически, и нота скоро прекратит звучание.

Note Off в программах ударных Большинство звуков ударных в тон-генераторах имеют фиксированный по времени участок поддержки (Sustain), и, следовательно, длительностью перкуссионного звука исполнитель управлять не может. Как и в реальной жизни. Обычно в программах ударных тон-генераторы не воспринимают сообщение Note Off как команду завершить звук (включить участок Release). Нота звучит столько, сколько задано в параметрах огибающей, а от момента прихода сообщения Note Off ее длительность не зависит. И, тем не менее, команда Note Off рано или поздно должна поступить, как того и требует спецификация. В противном случае нарушится внутренняя логика работы тон-генератора и пропадет один из голосов полифонии — появится типичная "зависшая" нота. Для некоторых звуков (открытые тарелки, свист и др.) управление длительностью весьма желательно, и многие тон-генераторы в этом случае реагируют на Note Off как и положено.

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

Теперь уже можно рассмотреть полноценный пример. Итак, мы нажимаем ноту До первой октавы на первом MIDI-канале с динамикой 110, а потом отпускаем ее. Наша клавиатура, нечувствительная к скорости снятия клавиш, выдает на выход MIDI Out последовательность из шести байт (рис. 33).

И ждет следующих прикосновений пальцев...

Послекасание


Послекасание (Aftertouch) — это давление, прикладываемое к клавише после ее нажатия. Послекасание позволяет имитировать приемы звукоизвлечения, несвойственные клавишному инструменту, например, вибрато или тремоло, причем довольно естественным и удобным способом — нажав клавишу, можно непрерывно изменять давление на нее.

Это давление измеряют сенсоры клавиатуры. Делать сенсор под каждую клавишу — дорогое удовольствие, поэтому большинство клавиатур имеют один сенсор, который измеряет общее давление. Исходя из этого, спецификация определяет два варианта послекасания: монофоническое (или послекасание канала, Channel Pressure) — это сообщение генерируют клавиатуры с одним-единственным сенсором, и полифоническое (Polyphonic Key Pressure) — для клавиатур с сенсором на каждую клавишу. Бывают клавиатуры, которые не генерируют послекасания вообще.

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

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

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

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

Первый байт данных сообщения полифонического послекасания содержит MIDI-номер ноты, второй — давление на клавишу после нажатия. Пример: если после взятия аккорда Ре-Фа-Ля первой октавы дожать клавиши так, чтобы давление на каждую стало разным (например, 92, 84, 90), то сообщение будет представлено девятью байтами (рис. 34, аккорд взят на втором MIDI-канале).

Стоит изменить давление, как тут же будет сгенерирована новая порция байт.

Сообщение послекасания канала состоит из одного байта данных, следующего за статус-байтом. Байт данных содержит давление канала. Сообщение Channel Pressure для аккорда из предыдущего примера (с усредненным давлением, равным 89), показано на рис. 35.

Звуковысотное колесо


Звуковысотное колесо (Pitch Wheel) используется для плавного изменения высоты тона звучащей ноты. Процесс изменения высоты называется питч-бендом (Pitch Bend), а соответствующее MIDI-сообщение — Pitch Wheel Change (его часто и называют Pitch Bend). Сообщение об изменении высоты относится сразу ко всему MIDI-каналу, поэтому нельзя, например, сыграть на одном канале аккорд, а сдвинуть высоту тона только у его басовой ноты. Именно по этой причине полноценная имитация эффекта "подтяжки" струнного инструмента возможна только в режиме канала 4, о чем говорилось ранее.

Pitch Wheel Change — сообщение высокого разрешения, то есть позволяет использовать 16384 значений изменения высоты, и относится к контроллерам непрерывного типа. При движении колеса высота ноты скачкообразно изменяется во времени, но благодаря маленьким шагам (равным 1/16384 диапазона изменения) эти скачки обычно незаметны, и создается ощущение плавного изменения высоты.

Первый байт данных сообщения содержит младшие семь бит 14-битной величины изменения, второй — старшие семь бит. За центральное положение колеса (сдвиг высоты тона отсутствует) принято значение 8192 (16384 / 2, шестнадцатеричное 0x2000). Значения больше 8192 означают повышение высоты тона, меньше — понижение. Пара MSB:LSB для центрального положения колеса имеет вид 64:0 (8192 / 128 = 64 без остатка), в шестнадцатеричном виде — 0x40:0x00.

Каков диапазон изменения высоты тона? Спецификация оставляет этот вопрос на совести производителя тон-генератора. MIDI-клавиатура (или другое средство ввода) всегда передает значения от 0 до 16383 (0x3FFF), получаемые с колеса, а тон-генератор интерпретирует их так, как считает нужным. Так что нет никакой гарантии, что, соединив два синтезатора по MIDI и вращая звуковысотное колесо на одном из них, мы получим на втором синтезаторе ту же самую величину изменения высоты нот. Обычно диапазон составляет +/-2 полутона от центрального значения, но его можно изменять с помощью PRN-параметра Pitch Bend Sensitivity, о чем поговорим далее. Большинство тон-генераторов позволяют устанавливать независимый диапазон для каждого канала, но есть и такие, в которых диапазон задается глобально, на все каналы, или фиксирован на значении +/-2 полутона. Попадаются инструменты, которые вообще не реагируют на сообщение Pitch Wheel Change.

Посмотрим, что посылает MIDI-клавиатура тон-генератору в момент, когда звуковысотное колесо находится на одной трети пути от центра к верхней точке. Очевидно, что положение колеса соответствует 4/6 (или двум третям) от всего диапазона значений: 16384 x 2/3 = 10923. Разобьем это значение на составляющие MSB и LSB: MSB = 10923 / 128 = 85, остаток — 43. Следовательно, пара MSB:LSB будет иметь вид 85:43. (0x55:0x2B). Если сообщение передается на пятом MIDI-канале, то оно будет выглядеть так, как показано на рис. 36.

Если нужно повысить или понизить ноту на определенное количество центов, то для расчета значений MSB и LSB, посылаемых в сообщении Pitch Wheel Change, можно использовать формулы, изображенные на рисунке 37

Модуляция


Сообщение Modulation (CC#1/CC#33) задает глубину частотной модуляции (вибрато) и управляет соответствующим LFO-блоком тон-генератора. В синтезаторах управление модуляцией происходит обычно с помощью колеса, либо рычага на передней панели.

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

Диапазон, в котором изменяется глубина модуляции, спецификация оставляет на усмотрение тон-генератора. MIDI-клавиатура (или другое средство ввода), как и в случае с питч-бендом, всегда передает значения от 0 до 16383 (0x3FFF), получаемые с колеса, а тон-генератор интерпретирует их так, как считает нужным. Единственное, о чем можно сказать совершенно точно — значение 0 отключает модуляцию. Для тонкого управления эффектом настройка диапазона глубины очень желательна — можно производить колесом более смелые движения без боязни выскочить за реалистичный диапазон. Однако способ настройки диапазона в спецификации MIDI не стандартизирован. Некоторые тон-генераторы позволяют это сделать посредством сообщений SysEx или с помощью NRPN. Спецификации Roland GS и General MIDI 2 предлагают дополнительные параметры для управления эффектом вибрато, но об этом — в другой статье.

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

Духовой контроллер


Сообщение Breath Controller (СС#2/CC#34) призвано имитировать нюансы звукоизвлечения на духовых инструментах (например, уровень или время атаки, вибрато, громкость во время звучания ноты), поэтому и применяется чаще всего на соответствующих пэтчах — деревянных или медных духовых. Для акустических звуков духовых это сообщение позволяет добиться большей убедительности звучания, для синтетических духовых — добавляет новые средства "оживления" пэтча. Можно сказать и так: сообщение Breath Controller — это своеобразная версия послекасания с точки зрения духовика. Наиболее убедительная имитация духового инструмента получается в MIDI-режиме 4.

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

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

Портаменто


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

Режим портаменто включается с помощью сообщения переключателя Portamento On/Off (СС#65), обычно назначаемого на педаль. При включенном режиме очередная нота начинает звучать на высоте, определяемой последним сообщением Note On на данном канале, затем высота плавно скользит к нормальной. Основной параметр, влияющий на выразительность эффекта — время портаменто, то есть время, за которое происходит скольжение. Временем портаменто управляет сообщение Portamento Time (СС#5/СС#37 — контроллер высокого разрешения). Стандартное значение для него не определено, как, впрочем, и соответствие значения конкретным единицам времени (секундам, миллисекундам). Значение 0 означает наименьшее время.

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

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

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

Возникает вопрос: а что будет, если играть аккордами? Здесь самое время вспомнить природу MIDI — никакие два сообщения не могут поступить по одному каналу одновременно. Так что аккорд будет состоять из нескольких последовательных сообщений Note On, и в данном случае все аналогично игре с наложением голосов. Только интервалы между сообщениями Note On будут минимальны, да и сказать точно, какая из нот аккорда будет передана первой, заранее нельзя — это уж от исполнителя зависит, ведь строго одновременно все ноты аккорда он не возьмет. Но тогда скольжение каждый раз (и для каждой ноты аккорда) будет случайным — в зависимости от очередности прихода сообщений Note On. Такой беспорядок, конечно, тоже может считаться выразительным эффектом, но хорошо бы как-то сообщить тон-генератору, от какой ноты начинать "подъезд", причем сообщить это для каждой из нот аккорда.

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

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

Мнимые ноты позволяют также обойтись без применения контроллера Portamento Time. Если нужно, чтобы высота ноты изменялась быстрее, то можно использовать мнимую ноту, более близкую по высоте к следующей. Скольжение, правда, начнется с меньшего интервала, но иногда это не так и важно.

В 1992 году в спецификацию было добавлено сообщение Portamento Control (второй уровень кодирования, СС#84), которое призвано заменить мнимые ноты. Это сообщение задает номер ноты, от которой выполняется скольжение. Оно может быть сгенерировано в реальном времени с помощью какого-либо органа управления инструмента, а это значит, что прямо в процессе исполнения можно задавать высоту начала скольжения.

Реакция тон-генераторов на Portamento Control имеет особенности. Так, если номер ноты, поступивший в этом сообщении, равен номеру ноты, которая уже звучит, то для подъезда будет использована текущая огибающая, без перезапуска генератора огибающей для новой ноты. Если инструмент находится в режиме Mono или он принял сообщение о включении педали легато, то звучащая нота должна немедленно сменить высоту на ту, что задана в сообщении Portamento Control, а затем уже скользить к высоте следующей ноты.

Настало время примера. Мы работаем на девятом MIDI-канале и выставляем время портаменто ровно в середину диапазона, затем выбираем стартовую ноту для подъезда, скажем, До первой октавы, и для включения эффекта нажимаем педаль портаменто. Последовательность байт показана на рис. 40.




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.