Руководство пользователя

Синтаксис MIDI

OnSong использует текстовый синтаксис для выражения команд MIDI. Хотя вы можете использовать События MIDI в Редакторе метаданных, вы также можете выражать команды MIDI в текстовом формате.

Разделённые значения

Прежде всего, несколько команд MIDI можно разделить различными символами, включая: символ табуляции, запятую, точку с запятой, вертикальную черту или новую строку. Запятая — наиболее распространённый разделитель. Например:

1.2:0@0, PC1.2:3@0, N67@1, START, SS8

Канал

Каждая запись может содержать символ @. Числовое значение после символа — это канал, на который должна быть отправлена команда. Так как каналы в MIDI начинаются с нуля, первый канал будет нулевым (0), второй канал — единицей (1) и так далее.

Если символ @ не используется, команда отправляется или принимается на всех каналах.

Префиксы

Каждая запись в списке содержит префикс. Этот префикс определяет тип отправляемой команды MIDI. Они включают:

  • PC или без префикса — событие изменения программы.
  • N — событие ноты
  • CC — событие изменения управления.
  • SS — событие выбора песни.
  • START — команда запуска.
  • STOP — команда остановки.
  • CONTINUE — команда продолжения.
  • F0 — префикс сообщения SysEx.
  • WAIT — реализует задержку.

Значения

Значение команды появляется непосредственно перед символом @ или в конце записи, если @ не указан. Это значение изменения программы, изменения управления, ноты или выбора песни в зависимости от префикса. В случае записей SysEx после префикса F0 указывается шестнадцатеричное значение SysEx, которое используется как заголовок для всех команд SysEx.

Подзначения

В некоторых случаях дополнительная информация передаётся в команде MIDI в виде подзначений. Например, MSB и LSB, а также velocity значений управления можно отправить таким способом. Это выражается путём добавления двоеточия в часть значения. Подзначение имеет разный контекст в зависимости от типа отправляемой команды MIDI:

  • Изменение программы имеет подзначения, выравнивающиеся с MSB/LSB изменения программы. Эти значения разделены точкой, с MSB слева и LSB справа.
  • Изменение управления имеет значение управления, установленного с его использованием. Число может быть от 0 до 127. Если опущено, предполагается значение 127.
  • Событие ноты имеет подзначение, связанное с velocity, с которым должна быть сыграна нота. Это может быть установлено на числовое значение от 0 до 127.

Примеры

Начнём с простого изменения программы. В этом сценарии мы используем изменение программы 8, которое также отправляет MSB 4 и LSB 2 на канал 1. Пример начинается с наиболее сложного варианта и удаляет выбор банка и канал, чтобы стать более широким:

PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7

Изменения управления похожи, за исключением того, что левая сторона синтаксиса — это номер изменения управления, а правая сторона — необязательное значение. Если значение не указано, вместо него отправляется 127. Мы отправим изменение управления 106 со значением 64 на канал 3.

CC105:63@2, CC105:63. CC105@2, CC105

Теперь давайте посмотрим на события нот. Если мы хотим сыграть C4 на канале 8 с velocity 75%, мы введём следующее, потому что OnSong начинает отсчёт MIDI C0 с 0 на шкале нот MIDI:

N60:95@7, N60@7, N60:95, N60

Опять же, важно помнить, что по мере удаления значений из синтаксиса MIDI утверждение MIDI становится более широким и менее конкретным. Например, последняя версия события ноты будет воспроизводить C4 с velocity 100% на всех каналах.

Для реализации задержки между другими событиями MIDI используйте команду WAIT с номером. Номер может быть целым значением. Вы можете определить секунды ожидания как 1–10 или определить как миллисекунды. Следующий пример показывает, как ждать 2 секунды, 10 секунд и полсекунды.

WAIT2, WAIT10, WAIT500
OnSong 2026 — Последнее обновление January 17, 2018