PC Help

 Към заглавната страница на PC HelpТърсене


Уроци

 

Цикъл лекции за MIDI

3. Системни съобщения

Както изяснихме във втората лекция, системните MIDI-съобщения не съдържат информация за канал, а се приемат от всички устройства в системата. Те се делят на общи системни и системни в реално време. Някои автори отделят системните специални съобшения (вж. по-долу) в отделен тип системни съобщения.

Обшите системни съобщения служат най-често за настройка и управление, а тези в реално време - за синхронизация на системата на базата на музикални трайности (напр. четвъртинка нота).

3.1. Общи системни съобщения (System Common)

Дефинираните до момента общи системни съобщения включват Специално системно съобщение, Четвърткадрово съобщение на MIDI-кода за време, Избор на песен, Указател за позицията в песента, Заявка за настройка и Край на системното специално съобщение. Всяко от тях има различен брой даннови байтове.

Специалните системни съобщения ще разгледаме в края на лекцията.

Четвърткадровото съобщение (Quarter Frame) е част от стандарта за MIDI-код за време, използван за синхронизация на MIDI- и друго оборудване, напр. магнетофони, видеомагнетофони и кинотехника. Тази спецификация е един от стандартите за Универсални специални системни съобщения (вж. по-долу).

Съобщението за избор на песен (Song Select) се използва в MIDI-оборудване, напр. секуенсери или ритъм-машини, които могат да съхраняват и извикват известен брой различни песни. С него може да се избере 1 от максимум 128 песни.

Указателят за позиция в песента (Song Position Pointer) се използва да се нагласи секуенсерът да започне възпроизвеждането на избраната песен не от началото, а от друга позиция в песента. Този указател е свързан с броя на MIDI-квантите от време, които биха изтекли от началото до желания момент в песента. Това съобщение може да се използва само от оборудване, което различава MIDI-съобщенията в Реално време (т. нар. MIDI-синхронизация). За да започне възпроизвеждането от така зададената позиция, се изпраща съобщение "Продължение", а не "Старт", което би върнало песента в началото (вж. по-долу).

Съобщението "Заявка за настройка" (Tune Request) се използва от аналоговите синтезатори за настройка на вътрешния им задаващ тонгенератор. Цифровите синтезатори не се нуждаят от него.

Съобщението "Край на специалното системното съобщение" (EOX) се използва за указване на края на Специално системно съобщение. Както ще видим по-долу, специалното системно съобщение има променлив брой байтове, чийто брой е предварително неизвестен на приемащото устройство. Това съобщение служи като индикатор за завършването му.

3.2. Системни съобщения в реално време (Real Time)

Използват се за синхронизация на цялото оборудване, основана на MIDI-кванти от време, напр. секуенсери и ритъм-машини. Повечето от тези съообщения нормално се игнорират от клавишните инструменти и синтезаторите. За да се осигури точно задаване на времето, системните съобщенията в реално време имат приоритет пред другите съобщения. Тези еднобайтови съобщения могат да се появят навсякъде в потока от MIDI-данни, дори между статус-байта и данновия байт или между два даннови байта на някое друго MIDI-съобщение! Това не променя текущия статус. Приемащото устройство трябва да продължи приемането на прекъснатото съобщение, независимо дали е игнорирало или изпълнило системното съобщение в реално време.

Системните съобщения в реално време са "Времеви квант", "10 ms", Старт, Стоп, Продължение, Сензор за активност и Начално установяване.

Съобщението за времеви квант (Timing Clock) е главният тактов източник, който установява темпото за възпроизвеждане на песента. Това съобщение се изпраща 24 пъти за четвъртинка нота. Колкото по-често идва то, толкова е по-бързо темпото на песента, и обратно. Например при темпо 120 удара в минута това съобщение се изпраща 48 пъти в секунда (120 / 60 x 24).

Съобщението "10 ms" (Timing Tick) е въведено отскоро и дори в таблиците на MMA го няма още! То се изпраща на всеки 10 ms (100 пъти в секунда) и се използва за абсолютна синхронизация по време (за разлика от относителната по времеви кванти, периодът на които се мени при промяна на темпото).

Съобшенията Старт, Стоп и Продължение (Continue) се използват за управление на възпроизвеждането на песента. При приемане на "Старт" то винаги започва от началото, а при "Продължение" - от момента, в който е спряно с предишното съобщение "Стоп", или от момента, зададен с Указател на позицията в песента (вж. по-горе).

Сигналното съобщение "Сензор за активност" (Active Sense) се използва за елиминиране на "залепналите ноти" (ноти с начало, но без край), които могат да възникнат, ако MIDI-кабелът прекъсне или бъде изключен по време на възпроизвеждане на MIDI-песен. Без това съобщение, ако връзката прекъсне по време на възпроизвеждането, някои ноти могат да останат да свирят до безкрайност, защото са били активирани със съобщение "Включване на нота", но съответното съобщение "Изключване на нота" никога няма да дойде. Но ако приемащият синтезатор приеме дори веднъж такова съобщение, в него се запуска специален таймер (т. нар. "стражево куче" - на англ. "Watchdog"). При изтичането на 300 ms от момента на активацията, ако все още не са постъпила никаква нова MIDI-информация, възпроизвеждането на всички ноти се спира аварийно. Ако е постъпил нов байт по MIDI обаче, таймерът се запуска отново. Нормално тези съобщения се предават на интервал от 250 ms, или 4 пъти в секунда, в моменти на пауза (липса на MIDI-съобщения). Това е незадължителна възможност, която не всички устройства поддържат.

На фигурата е показана блокова схема на алгоритъм за реализация на сензора за активност. Той приема, че устройството има таймер, който генерира прекъсване на всяка 1 ms. Променливата "Timeout" се използва за брояч на изминалите милисекунди. Друга променлива на име "Flag" се установява в 1, ако устройството приеме съобщение "Сензор за активност" от друго устройство, и следователно очаква да приеме и следващи такива съобщения. 

Съобщението "Начално установяване" (Reset), както се вижда от името му, се използва за инициализация на приемащото оборудване. То не се изпраща автоматично от предаващото устройство, а ръчно - чрез натискане на специален бутон. Спецификацията препоръчва да се използва пестеливо. В резултат то почти не се използва...

3.3. Специални системни съобщения (System Exclusive, съкр. "SysEx")

Специалните системни съобщения могат да се използват за предаване на данни като параметри на звуците или на самите дискретизирани звуци. На всеки производител на MIDI-оборудване се присвоява уникален идентификационен номер от MMA или AMEI. Този номер задължително се предава непосредствено след статус-байта на специалното системно съобщение. След него има произволен брой даннови байтове, а предаването завършва със съобщението EOX (вж. по-горе). Производителите трябва да публикуват описания на формата на своите Специални системни съобщения, а останалите производители могат свободно да използват този формат, без да го променят или използват по начин, който противоречи на спецификацията на оригиналния производител.

Номерата са групирани по континенти - от 1 до 1Fh са за [северо]американски (САЩ/Канада), от 20 до 3Fh - за [западно]европейски, а от 40 до 7Ch - за [източно]азиатски (японски, разбира се) фирми (без фирмите от бившата британска колония Хонг Конг, които ползват европейски номера). Понеже регистърът на номерата се запълни много бързо, за по-късно регистриралите се производители се въведоха трибайтови номера с първи байт, равен на нула. Тук е и "всеобщият любимец" Micro$oft с номер 00 00 41h (верни на себе си, те отново изплагиатстваха - този път номера на известната фирма Roland 41h!).

Някои от идентификационните номера са запазени за специални цели. Номерът 7Dh е резервиран специално за образователни и изследователски цели и не е позволено да се използва в комерсиални продукти. Номерата 7Eh и 7Fh са запазени за така наречените

3.4. Универсални системни специални съобщения

Тези съобщения са предназначени за всички производители и са начин за дефиниция на множество MIDI-стандарти. Техният общ формат е:

<SysEx> <Id> <Ch> <Sub-Id1> [<Sub-Id2>] <data> [...] <EOX>

където

  • SysEx е статус-байтът на системните специални съобщения (F0h)
  • Id е 7Fh за Универсални специални системни съобщения в реално време или 7Eh за такива в нереално време
  • Ch е "каналът" (позволява да се предават данни само за устройството, на което е присвоен този канал - да не се бърка с канала на каналните съобщения!)
  • Sub-Id1 е под-идентификаторът на стандарта, който задава целта на съобщението
  • Sub-Id2 определя кое е съобщението в рамките на зададения със Sub-Id1 стандарт
  • data са данните, броят и форматът на които се определя от съответния стандарт
  • EOX (F7h) е съобщението за край на Специалното системно съобщение.

Дефинирани са следните стандарти, задавани със Sub-Id1:

  • В реално време:

    • MIDI-код за време (MIDI Time Code, MTC)
    • MIDI-управление на лентотранспортни механизми (MIDI Machine Control, MMC)
    • MIDI-управление на сценична техника (MIDI Show Control, MSC)
    • Общо усилване (Master Volume)
    • Общ баланс (Master Ballance)
    • Тактова черта (Bar Marker)
    • Метричен размер (Time Signature)
  • В нереално време:

    • Стандарт за предаване на дискретизирани звуци (Sample Dump Standard, SDS)
    • Някои от репликите (cueing) на MIDI-кода за време
    • Предаване на MIDI-файлове (MIDI File Dump)
    • Стандарт за настройка (MIDI Tuning Standard, MTS)
    • Заявка за идентификация (Inquiry Request)
    • Включване на режим "General MIDI" (GM On)

Повече информация за тези стандарти ще намерите в електронната книга "MIDI Xplained" на Ернст Натхорст-Бьос, посочена в списъка ползваните източници в края на лекция 5.

Ето и една справочна таблица за системните MIDI-съобщения (на английски език по причини, обяснени в предишната лекция).

В следващата лекция ще разгледаме формата за съхранение на MIDI-информация - стандартите GM / GS / XG / GM2. Благодаря за вниманието.


Лекция 1 - Въведение. Апаратна част

Лекция 2 - Протокол. Канални съобщения

Лекция 3 - Системни съобщения

Лекция 4 - Стандарти GM / GS / XG / GM2

Лекция 5 - MIDI - преговор и Стандартни MIDI-файлове

Назад


Webmaster