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


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

Сообщения режима канала




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

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

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

В монотембральном тон-генераторе существует так называемый основной канал (Basic Channel). Это тот канал, по которому ведется прием или передача сообщений. Так, если основной канал имеет номер 3, то сообщения для пятого канала, поступающие на вход устройства, будут проигнорированы. Обычно основной канал можно выбирать произвольно, но в некоторых устройствах он может быть жестко определен — "зашит". Такое устройство довольно сложно интегрировать в MIDI-систему. Например, если на первом инструменте зашитый основной канал имеет номер 1, а на втором — 2, то устройства просто бесполезно соединять MIDI-кабелем. Первое будет всегда передавать по каналу 1, а второе — ожидать сообщений по каналу 2. Разговор слепого с глухим...

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

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

Спецификация определяет восемь сообщений режима канала (CC#120-CС#127). Однако непосредственно MIDI-режимами управляют только четыре последних. Остальные заведуют функциями сброса и локальным управлением. С него и начнем.

Local Control


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

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

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

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

Подобное действие носит название Local Control Off (отключить локальное управление). Обычно это можно сделать, нажав кнопку на передней панели инструмента.

Включать и выключать локальное управление можно также посредством сообщения режима канала Local Control On/Off (СС#122). Предположим, что основной канал в нашем тон-генераторе имеет номер 5, и что мы хотим выключить локальное управление. Тогда последовательность байт, из которой должно состоять сообщение Local Control Off, выглядит так, как показано на рис. 12.

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

Команды сброса


Наличие в MIDI двух разных сообщений для взятия и снятия ноты часто приводит к так называемым зависшим нотам, о чем уже упоминалось в предыдущей статье. Если в тон-генератор пришло сообщение "взять ноту", а сообщение "снять ноту" не пришло, нота будет звучать неопределенно долго. Такое может случиться, например, во время живого выступления, если кто-то наступил на MIDI-кабель, соединяющий MIDI-клавиатуру и тон-генератор, и кабель отсоединился. Иногда ноты зависают из-за глюков в секвенсоре или в операционной системе тон-генератора. В любом случае нужно, чтобы звук прекратился как можно скорее. Для этого используется одно из двух сообщений: All Notes Off или All Sound Off.

Сообщение All Notes Off (CC#123) дает команду тон-генератору выключить все звучащие на канале ноты. Тон-генератор должен реагировать так, как будто для каждой звучащей ноты пришло сообщение Note Off. Таким образом, команда All Notes Off включает у каждой ноты участок затухания (Release) огибающей. Эта команда должна влиять только на те ноты, сообщение о взятии которых пришло через MIDI-вход устройства и не должна влиять на ноты, которые были взяты на локальной клавиатуре.

Спецификация не требует, чтобы устройство реагировало на команду All Notes Off, поскольку аналогичное действие можно выполнить, послав для каждой звучащей ноты сообщение Note Off в индивидуальном порядке, хотя это и более хлопотно. На некоторых устройствах есть так называемая "кнопка паники" (Panic Button). Она, как правило, посылает сообщение All Notes Off по всем MIDI-каналам, но может посылать также сообщения Note Off для всех номеров нот, и другие команды сброса.

Пример последовательности байт для выключения нот на первом MIDI-канале показан на рис. 13.

Сообщение All Sound Off (CC#120) добавлено в MIDI-спецификацию в 1991 году. Оно предназначено для немедленного отключения всех звуков на канале: нот, "хвостов" реверберации и прочих эффектов, если они используются. Таким образом, нотам не предоставляется возможность естественного затухания путем перехода в стадию Release огибающей. Как говорится в спецификации, "их огибающая должна быть установлена в ноль так быстро, насколько это возможно". Сообщение All Sound Off генерируется многими секвенсорами в тот момент, когда пользователь нажимает кнопку Stop.

Сообщение должно влиять только на ноты, полученные через MIDI-вход устройства, и не должно влиять на ноты, извлеченные с локальной клавиатуры.

Сообщение Reset All Controllers (CC#121) появилось в 1988 году. Оно дает команду сбросить все контроллеры на канале в начальное состояние (состояние по умолчанию, пресетное), за исключением тех, которые управляют текущим режимом канала.

Пресетные значения каждого контроллера спецификация жестко не определяет (тут производители имеют свободу выбора), но рекомендации дает следующие. Контроллеры-переключатели (типа Hold Pedal) переводятся в состояние Off (педали отпущены). Модуляция устанавливается в 0. Экспрессия — в максимум, громкость (MIDI Volume) — в 100, панорама — в центр, звуковысотное колесо — в среднее положение. Параметры RPN также сбрасываются, в частности, диапазон изменения высоты тона (Pitch Bend Sensitivity) устанавливается в +/-2 полутона. Если тон-генератор реагирует на послекасание, то оно сбрасывается в 0 для нот, звучащих в момент прихода команды.

Спецификация не требует, чтобы инструмент реагировал на команду Reset All Controllers. В этом случае устройство управления (обычно секвенсор) должно сбросить каждый контроллер по отдельности. При этом пресетные значения, естественно, будут выбраны производителем секвенсора. Для тех устройств, которые реагируют на сброс контроллеров, в документации обычно указано, какие пресетные значения используются.

Режимы MIDI


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

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

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

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

Начнем рассмотрение режимов применительно к монотембральному устройству.

Сообщения контроллеров из диапазона CC#124-CC#127 задают определенные правила работы устройства при приеме и передаче сообщений. Устройство должно реагировать на эти команды только в том случае, если они приходят по основному каналу. При получении любой из команд все звучащие ноты, поступившие ранее на MIDI-вход устройства, должны быть выключены. Фактически, при этом выполняется неявный вызов команды All Notes Off.

Слово Omni происходит от латинского "Omnis", означающего "все". Команда Omni Mode On (СС#125) заставляет тон-генератор принимать голосовые сообщения по всем MIDI-каналам, независимо от того, на какой основной канал он настроен. Команда Omni Mode Off (CC#124) возвращает к приему по основному каналу. Команда Poly Mode Off (СС#126) означает, что тон-генератор должен воспроизводить поступающие ноты монофонически. То есть, в каждый момент времени должна воспроизводиться только одна нота — последующая нота снимает предыдущую. В этой команде передается дополнительный параметр, который имеет смысл только в режиме 4 (см. далее). Команда Poly Mode On (CC#127) означает, что тон-генератор должен воспроизводить поступающие ноты полифонически — количество одновременно звучащих нот ограничивается только доступной полифонией.

MIDI-режимы образованы сочетанием этих команд (рис. 14а). Всего есть четыре режима, а наиболее распространенные из них имеют собственное имя (рис. 14b).

Текущий режим может быть выбран с помощью органов управления на передней панели устройства, либо посредством комбинации команд, приведенных ранее. Так, например, устройство переходит в режим 1 после получения комбинации команд Omni On / Poly On.

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

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

Режим 1 (Omni)


В этом режиме устройство реагирует на каждое поступившее голосовое сообщение, независимо от того, по какому каналу оно пришло. По сути, это отказ от системы MIDI-каналов как таковой — младшая половина статус-байта, содержащая номер канала, в режиме Omni просто игнорируется. При этом инструмент отвечает на сообщения полифонически (рис. 15).

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

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

Кому это нужно? Хороший вопрос. Разработчики подразумевали, что в этом режиме могут работать устройства, которым разделение по каналам не требуется. Например, когда есть несколько устройств, соединенных в цепь, и при нажатии клавиши на первом все остальные хором повторяют ту же ноту. Не правда ли, попахивает концом 70-х, когда такое наложение звуков за счет одновременной игры на двух инструментах было актуально? Кстати, первые MIDI-инструменты (Roland Jupiter 6, Sequential Circuits Prophet 600) не различали MIDI-каналов и реагировали на все, что придет. Возможно, просто потому, что разработчики торопились к зимней выставке NAMM 1983 года, когда нужно было показать MIDI-технологию в действии. Интересно, что следующие версии этих инструментов могли уже настраиваться на прием по одному из каналов.

Некоторые называют режим Omni режимом продавца (sales manager). Представьте ситуацию, когда покупатель в магазине музыкального оборудования "щупает" два MIDI-устройства и просит продавца включить и соединить их с друг с другом. Разработчики, похоже, волновались за тот случай, когда при включении питания передающее и приемное устройство будут настроены на разные основные каналы, и передача данных между ними станет невозможна. А это потенциальных покупателей может огорчить... Кстати, спецификация требует, чтобы при включении питания устройства находились именно в режиме Omni. Похоже, неспроста.

Однако большинство устройств это требование нарушают, и при включении питания переходят в тот режим, в которым они находились до выключения.

На рис. 16 показан пример последовательности байт, переводящей инструмент в режим Omni. Основной канал до перехода в этот режим был третий, поэтому пара сообщений Omni On и Poly On должна передаваться по третьему каналу.

Теперь вопрос — если прибор в режиме Omni начинает прием по всем каналам, какой канал будет являться основным? Ответ — тот же самый, что был до перехода в режим Omni. Переключить устройство в другой режим можно, только послав сообщения режима по основному каналу, либо с передней панели.

Режим 2


Этот режим настолько бесполезен, что даже не имеет собственного имени. Устройство переходит в него после получения комбинации сообщений Omni On / Poly Off. MIDI-спецификация описывает режим 2 так: "Голосовые сообщения принимаются по всем каналам, но в каждый момент времени звучит только одна нота". Вы можете представить, зачем это нужно? Я тоже с трудом. Единственный вариант, который приходит на ум, — это соединение в цепь нескольких монофонических синтезаторов. При этом не нужно заморачиваться с настройкой основного канала на каждом — они будут реагировать на сообщение по любому каналу. Рис. 17 отражает работу приемного устройства.

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

Режим 3 (Poly)


Этот режим является самым приемлемым для полифонического монотембрального устройства. Прием ведется только по одному каналу — тому, который является основным. Поступающие сообщения распределяются между доступными голосами, то есть инструмент отвечает на сообщения полифонически (рис. 18). Передающее устройство работает здесь так же, как и в режиме Omni.

В режиме Poly, и только в нем, система MIDI-каналов используется по своему прямому назначению. Устройства можно соединять в цепь, при этом каждое будет реагировать только на сообщение для одного канала и игнорировать другие. Несколько монотембральных тон-генераторов в этом режиме могут исполнять мультитембральную аранжировку, передаваемую секвенсором.

Режим 4 (Mono)


Устройство переходит в этот режим после получения комбинации сообщений Omni Off / Poly Off. Поведение устройства здесь зависит от параметра, переданного в сообщении Poly Off. Если параметр в сообщении имеет значение от 1 до 16, то он задает число каналов, на которые будет реагировать инструмент, начиная с основного канала. Если параметр равен 1, то это, по сути, означает монотембральный монофонический инструмент. Так, если основной канал у нас третий, то прием будет вестись только по нему; следовательно, доступен только один тембр, с одним голосом. Рисунок 19 иллюстрирует это.

Однако самое интересное начинается, когда параметр сообщения Poly Off больше 1. Если, например, он равен 6, а основной канал — третий, то инструмент будет принимать сообщения на каналах 3, 4, 5, 6, 7 и 8 мультитембрально и монофонически (рис. 20).

Теперь, если назначить на каждый из этих каналов один и тот же тембр, то мы получим систему, идеально подходящую для имитации гитары и других струнных инструментов. Каждая струна гитары будет звучать на своем MIDI-канале! Это позволит обойти две проблемы. Во-первых, гитара позволяет делать подтяжку на одной струне, не смещая высоты тона на других струнах. Если поместить всю партию гитары на один MIDI-канал, то мы не сможем делать подтяжку выборочно, на каких-либо нотах, — сообщение звуковысотного колеса, как и все сообщения контроллеров, действует сразу на все ноты канала. Это касается и других приемов игры, таких как глиссандо и легато.

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

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

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

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

Типичным передатчиком, работающим в режиме 4, является MIDI-гитара. Она должна передавать голосовые сообщения каждой струны по отдельному MIDI-каналу, начиная от основного, в каждый момент времени по одной ноте на канал.

 




Поиск по сайту:

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