Создание таблицы событий midi

Раздел: KMid

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

Он состоит из четырёх секций: PATCHMAP, KEYMAP, CHANNELMAP и OPTIONS.

Каждая секция должна встречаться только однажды, исключая секцию KEYMAP, которая может вставляться столько раз, сколько необходимо - каждая из них использует разные текстовые идентификаторы - имена (детали см. далее).

Общая структура таблицы событий midi:

DEFINE PATCHMAP
...
END

DEFINE KEYMAP "Название таблицы клавиш"
...
END

DEFINE KEYMAP "Название другой таблицы клавиш"
...
END

DEFINE CHANNELMAP
...
END

OPTIONS
...
END

Вы можете видеть, что слово DEFINE используется, чтобы установить начало секции (исключая OPTIONS). В конце каждой секции ставится слово END.

Чтобы ввести комментарий, начните строку с символа #.

Пожалуйста, не забудьте выслать мне вашу таблицу событий midi по электронной почте, чтобы следующие версии KMid включали поддержку большего количества клавиатур, не являющихся General Midi - совместимыми.
Секция PATCHMAP

Эта секция используется, чтобы установить соответствие между патчами GM и вашей клавиатуры. Использование:

(Название патча GM)=(N) [AllKeysTo M]

Здесь N - номер, который ваша клавиатура должна получить, чтобы сменить патч на соответствующий стандарту GM.

Обратите внимание, что название патча (слева от знака равенства) игнорируется, так как предполагается, что патчи идут в порядке от 0 до 127. Поэтому вам не следует менять порядок строк, чтобы не пропустить какой-либо из 128 инструментов.

Секция AllKeysTo M используется, чтобы отнести все ноты, воспроизводимые этим инструментом, к клавише M. Пример: предположим, что ваша клавиатура не включает звук Выстрел (по стандарту GM - патч 127), и вы хотите отнести его к барабану (клавиша 60), звучание которого похоже на выстрел. Тогда в 127-й строке секции PATCHMAP вам следует ввести следующее:

Gunshot =100 AllKeysTo 60

Когда файл midi пытается воспроизвести звук с помощью патча 127 (выстрел), сигнал будет переназначен на патч 100 (патч ударных вашей клавиатуры), на котором будет воспроизведена нота 60 (вне зависимости от ноты, которая должна была быть воспроизведена).

Обратите внимание, что когда я использую выражение «Ударные», я имею в виду патч, в котором каждая клавиша соответствует отдельному инструменту - барабану, цимбалам и т. д., а не отдельному звуку барабана, отличающегося от других только тоном, как на некоторых клавиатурах.
Секция KEYMAP

Секция KEYMAP используется, чтобы обозначить соответствие клавиш какого-либо канала или инструмента. Использование:

DEFINE KEYMAP "Название таблицы клавиш"
C 0 =0
C#0 =1
D 0 =2
...
END

Как и в секции PATCHMAP, здесь очень важен порядок строк, и необходимо, чтобы все они (128 клавиш) были указаны.

Так как вы можете задать несколько таблиц клавиш для разных каналов и инструментов, вы должны присвоить всем различные имена (задаётся в первой строке).

В таблицы клавиш обычно вносятся клавиши канала ударных. Примеры - в таблицах событий midi, включённых в дистрибутив.
Секция CHANNELMAP

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

Однако эта секция наиболее полезна для клавиатур, для которых необходимо указать номер канала ударных (по стандарту GM это канал 10, но некоторые клавиатуры используют канал 16, а некоторые - канал 9).

Обратите внимание, что устройства midi используют 16 каналов, поэтому секция CHANNELMAP должна включать 16 строк, от 0 до 15. Использование:
(N) = (M) [Keymap "Name"] [ForcePatch x]

Здесь N - канал, который будет заменяться на канал M. Если используется опция Keymap, то на этом канале будет использоваться таблица клавиш с именем Name (эту таблицу необходимо внести перед этой секцией в файл map!). Если используется опция ForcePatch, все события, которые пытаются сменить патч на этом канале, будут игнорироваться, патч x будет использоваться постоянно.

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

Секция OPTIONS включает некоторые основные опции, которые могут быть очень полезными

OPTIONS

PitchBenderRatio = r

MapExpressionToVolumeEvents

END

:

Вы можете указывать обе опции, только одну, либо ни одной.

Значение, указанное в PitchBenderRatio r определяет, во сколько раз будет увеличена высота звука. Когда файл midi пытается установить высоту звука n, будет установлено значение n*(r/4096) (значение 4096 введено, чтобы вам не приходилось ставить десятичные значения в файле map).

Это используется, так как стандарт GM говорит, что когда клавиатура midi получает сигнал увеличения высоты со значением 4096, следует увеличить ноту на более высокую, но некоторые клавиатуры при получении 4096 повышают исходную ноту на 2 или больше (иногда даже на октаву!). Это можно легко исправить, перепробовав различные значения, чтобы вместо 4096 KMid посылала соответствующее значение.

Если в файле map установлена опция MapExpressionToVolumeEvents и файл midi пытается послать событие выражения, KMid посылает событие громкости - его понимает большее количество клавиатур, не соответствующих стандарту GM, и он производит похожий эффект. Многие файлы midi используют событие выражения в конце песни, что производит эффект затухания, так что если вы чувствуете, что музыка должна воспроизводиться всё мягче и мягче, вы можете включить эту опцию и поглядеть, это ли вам было нужно - ваш синтезатор midi может игнорировать события выражения, потому что не понимает их.

Нет коментариев

Trackback URI | Comments RSS

Оставить комментарий

Реклама: