Seri(ál)ová MIDI komunikace XXII - Práce se SysEx daty v XG - úvod

Seri(ál)ová MIDI komunikace XXII - Práce se SysEx daty v XG - úvod
Seri(ál)ová MIDI komunikace XXII - Práce se SysEx daty v XG - úvod

V minulém díle seriálu jsem slíbil, že se dnes podíváme na práci se System Exclusive (SysEx) daty ve standardu XG. Nezbývá, než slib splnit, takže jde do tuhého. Určitě se u SysEx zastavíme na několik dílů.

 

Se zvláštními systémovými daty (SysEx) lze samozřejmě pracovat i ve standardech GM a GS. Ale XG nabízí mnohem rozsáhlejší systém práce s těmito daty. Proto jsem si téma nechával až sem.

 

Zvláštní systémová data se do sekvencerů zapisují v šestnáctkové soustavě (hex). Jednotlivými znaky soustavy jsou: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Čísla budu v šestnáctkové soustavě označovat jako Daniel Forró ve svých publikacích, tedy znakem $ před číslicí, tedy například $A (hex) = 10 (dec). Nadále se budu držet toho, že pokud nebude uvedeno jinak, číslice bez znaku budou uváděna v desítkové soustavě(dec).

 

$A = 10

$B = 11

$C = 12

$D = 13

$E = 14

$F = 15

$10 = 16

$11 = 17 atd.

 

Kompletní tabulka je k nalezení třeba zde: http://slovnikmidi.info/vyklad/643/.

 

Nejvyšší používané číslo je 255, takže se používá dvojmístné zobrazování znaků, například $00 = 0; $2F = 47; $FF = 255.

 

Pro zadávání SysEx dat bývají v sekvencerech speciální editory, ve kterých je možné zapisovat přímo SysEx povely (obvykle bez znaku $, tedy zapisuje se rovnou třeba F0 43 10 4C atd.).

 

Jak zjistit, jaká data zapsat?

Možností je několik - někdy není třeba vůbec data takto „nelidsky“ zapisovat a může je vygenerovat přímo nějaký editor, jak bylo řečeno v minulém dílu. Pokud takový editor ale nemáme, je třeba se zahloubat do návodu. Každý slušný návod slušného výrobce bude obsahovat tabulky s formátem MIDI událostí. Na CD jsem přiložil manuál dceřiné zvukové karty Yamaha DB50XG (bohužel byl na internetu ke stažení jen ve francouzštině). Na straně 21 začínají informace o vysílání potřebných dat. Dozvíme se, že všechny SysEx události budou začínat počátečním stavovým bytem $F0 (je to něco jako velké písmeno na začátku každé věty). Ten oznamuje, že bude následovat nějaká zpráva. Následuje vždy informace o výrobci zařízení, kterému bude zpráva určena. V případě firmy Yamaha se jedná o $43. Seznam řady firem a přiřazení čísel podle výrobce lze najít zde: http://slovnikmidi.info/vyklad/825/. Po těchto dvou informacích následuje přímé označení konkrétního nástroje v MIDI řetězci. Může se stát, že budeme mít v jednom řetězci více nástrojů stejné firmy, a tak je potřeba je od sebe oddělovat. V případě XG standardu se nástroje oddělují pomocí události $1n, kde „n“ je proměnná, tedy číslo přiřazené danému nástroji. Takže první nástroj má $10, další $11 a šestnáctý (to je maximum) $1F. Budu nadále počítat s jedním nástrojem a všude budu psát přiřazení $10. Následuje informace o přesném konkrétním modelu, tedy produktu. Pro Yamaha XG nástroje bylo zvoleno $4C (například model Yamaha QS300 má číslo $4B).

 

Tak, a máme úvod nějaké SysEx zprávy pro Yamaha XG nástroj. Ten bude vždy vypadat následovně: $F0 $43 $10 $4C. Pak budou následovat data, která popisují konkrétní nastavení.

Na ty se podíváme později. Aby nástroj věděl, že zpráva dorazila celá, je na jejím konci ukončovací stavový byte, který vypadá takto: $F7 (je to něco jako tečka na konci věty). Před tímto závěrečným stavovým bytem bývá u některých nástrojů ještě tzv. kontrolní součet (check-sum). Ten měl kontrolovat, zda zpráva dorazila opravdu celá. Poměrně složitě se vypočítával ze všech hodnot celé zprávy. Pokud nesouhlasil kontrolní součet s průběžným součtem, které nástroje dělaly, bylo jisté, že zpráva nedorazila. Firma Yamaha ale v XG standardu kontrolní součet vypustila, a tak zápis výrazně zjednodušila. Ale bohužel se zároveň vystavuje riziku, že zpráva se nepřenese celá a nástroj to nezjistí. Na základě toho může dojít k chybnému nastavení. Naštěstí se to ale nestává.

 

Na závěr se podíváme na dvě SysEx události pro Yamaha XG nástroje:

 

SysEx událost pro zapnutí XG režimu: $F0 $43 $10 $4C $00 $00 $7E $00 $F7.

 

SysEx událost pro hlavní výstupní úroveň MIDI: $F0 $7F $7F $04 $01 $11 $mm $F7, kde „mm“ je proměnná, kde se nastavuje požadovaná výstupní úroveň od $00 (tj hlasitost 0) až po $7F (tedy maximální hlasitost 127).

 

NEZAPOMEŇTE:

Každá SysEx událost pro XG bude vypadat následovně: $F0 $43 $1n $4C ... data ... $F7.

Psáno pro časopis Muzikus