Seri(ál)ová MIDI komunikace VIII - orientace v MIDI specifikaci
Specifikace (anglicky specifications – ač se to v češtině nedá poznat, jedná se o množné číslo) není narozdíl od MIDI impementace, kterou jsme se zabývali v minulém díle seriálu, tak přísně definovaná. Proto ale také není tak snadné se v ní orientovat. Zjednodušeně řečeno, mělo by jít o vysvětlení naprosto všech příkazů, které je možné na zařízení používat, tedy jak vysílat tak přijímat. Vzhledem k tomu, že i s používáním tabulky MIDI implementace to jde z kopce a málokterý výrobce ji uživatelům dodává, je asi zřejmé, že se složitější specifikací je to ještě horší. Pokud se vám ji ale podaří najít, získáte naprosto veškeré informace o nástroji.
Jak v tom číst ?
Specifikaci je dobré vnímat jako například strom adresářové struktury v počítači. Specifikace obsahuje řadu témat a podtémat, a ta zase další podpodtémata, podpodpod... Proto je dobré číst specifikaci vždy od začátku nebo alespoň od hlavního tématu. Není možné pochopit pouze část System Exclusive příkazu (například změnu frekvence ekvalizéru), pokud nevíme, jak vypadá začátek systémové zprávy pro ekvalizér.
Součástí specifikace bývají také technické údaje o nástroji (zejména pokud je hardwarový), jako jsou například jeho rozměry, hmotnost, počet fyzických vstupů a výstupů, ale i typ napájení, které je nutné používat (stejnosměrné/střídavé, napětí a proud), ale i typ syntézy, údaj o maximální polyfonii, počet efektů, velikost vnitřní paměti, počet a typ fyzických ovladačů, počet řádků a znaků zobrazujících se na displeji atd.
Nejrozsáhlejší a zároveň nejkomplikovanější bývají tabulky popisující formát MIDI dat. Například pokud chci na nástroji YAMAHA VL1-m změnit pomocí SysEx události délku dozvuku, nakouknu do specifikace a pod bodem Table 5.1.3 Reverbation najdu toto:
no. 88
c 1
p 00 58
v 0-95
REV Time
Nezbývá než se vrátit v tabulce dopředu a zjistit, co jednotlivé značky znamenají. Nemusím chodit moc daleko. V kapitole 5 Parameter Change Table se dozvím, že „no.“ znamená číslo parametru a je zapsáno v d esítkové soustavě; „c“ popisuje počet dat (opět desítkově); „p” je offsetová, tedy běžná střední hodnota v pořadí MSB a LSB, tentokrát v šestnáctkové soustavě a „v“ je hodnota (desítkově). Dobrá, jsme o něco moudřejší. Víme, co jednotlivá čísla znamenají, ale stále není jasné, jak zapsat celou zprávu.
Abychom byli schopni celou zprávu zapsat, musíme se vrátit ještě více k začátku celé specifikace, kde pod bodem 4.5.2 najdeme kapitolu Parameter Change. Ano, to je konečně přesně to, co potřebujeme – změnit parametr efektu reverb. Zde jsou 4 sloupce. První popisuje číslo jednotlivých bajtů, druhý popisuje hodnotu ve dvojkové soustavě, následuje hodnota v šestnáctkové soustavě (která nás bude zajímat nejvíc) a poslední sloupec je popis k jednotlivým údajům. Sloupec s hodnotami v šestnáctkové soustavě vypadá následovně: F0 43 n 34 0B u p p v v F7. Jednotlivé proměnné jsou v poznámce popsány následovně:
n = číslo zařízení
u = číslo paměti 0:I-1, 1:I-2
p (1) = MSB čslo parametru
p (2) = LSB číslo parametru
v (1) = hodnota parametru
v (2) = hodnota parametru
Pokud si ani s tímto nevíme rady, nakoukneme ještě blíže k začátku specifikace a měli bychom se dozvědět, co přesně znamenají ostatní čísla. A tak se dozvíme, že F0 je počáteční bajt, který oznamuje začátek zvláštní systémové zprávy (SysEx); 43 je firemní identifikační číslo přiřazené firmě YAMAHA; 34 0B jsou dva bajty popisující právě to, že půjde o změnu parametru a F7 je závěrečný stavový bajt.
Nyní již tedy můžeme napsat celou zprávu, která bude vypadat například následovně (zapsáno v šestnáctkové soustavě): F0 43 01 34 0B 00 00 58 00 5F F7.
F0 = první stavový bajt
43 = firemní ID YAMAHA
01 = číslo zařízení (pokud máte více stejných zařízení v jednom MIDI okruhu, dají se tato zařízení odlišit právě tímto číslem, a tak je možné vysílat každému zařízení jiné události)
34 0B = změna parametru
00 58 = parametr REV Time
00 5F = nastavená hodnota 95 (desítkově), tedy maximální možná délka dozvuku
Podobným způsobem je možné vyhledat jakoukoliv MIDI událost a následně ji do zařízení vyslat. Pomocí zvláštních systémových dat je možné dělat obrovská kouzla. Naštěstí již dnes existují různé aplikace, kde je možné parametry navolit v grafickém prostředí a aplikace systémové zprávy napíše, díky přesnému popisu ve specifikaci, sama. Obvykle je možné výsledná data pouze vyexportovat do souboru typu MID nebo SYX a tato data pak do zařízení jednoduše vyslat.n