Hlavní navigace

Rozhraní MIDI na osobních počítačích II

26. 2. 2009
Doba čtení: 10 minut

Sdílet

Dnešní část seriálu o architekturách počítačů navazuje na část předchozí, ve které byly uvedeny základní informace o rozhraní MIDI. Dnes si popíšeme význam všech typů zpráv, které jsou popsány ve specifikaci MIDI a také si řekneme, co znamená termín General MIDI (GM).

Obsah

1. Rozhraní MIDI na osobních počítačích II
2. Zpráva Note On
3. Zpráva Note Off
4. Zpráva AfterTouch
5. Zpráva Channel Pressure
6. Zpráva Pitch Wheel (Pitch Bend)
7. Zpráva Program (patch) Change
8. Standard General MIDI (GM)
9. Literatura a odkazy na Internetu

1. Rozhraní MIDI na osobních počítačích II

V předchozí části tohoto seriálu jsme si řekli základní informace o rozhraní MIDI (Musical Instrument Digital Interface). Víme tedy, že samotná specifikace, která MIDI popisuje, je rozdělena na dvě části. První část specifikace se zabývá především způsobem propojení jednotlivých zařízení na fyzické a linkové vrstvě, tj. použitými konektory, elektrickými charakteristikami použitých kabelů, využitím optočlenů pro vzájemnou izolaci jednotlivých zařízení i způsobem řízení přenosu dat na nejnižší úrovni (tj. asynchronním přenosem jednotlivých bitů po sériové lince). Ve druhé části specifikace je popsán přenosový protokol, tj. význam větších celků – bajtů a takzvaných MIDI zpráv. Dnes se budeme zabývat převážně druhou částí specifikace MIDI, především popisem MIDI zpráv, které jsou přenášeny mezi jednotlivými zařízeními. Na tuto část článku navazuje kapitola s informacemi o standardu General MIDI (GM) postaveného nad původní specifikaci MIDI, ve kterém se přesněji popisuje význam některých typů zpráv, jež byly v původním MIDI popsány pouze obecně (například jsou přesně stanovena čísla jednotlivých typů nástrojů, včetně nástrojů bicích).

pc5001

Obrázek 1: Klávesy, které mohou sloužit jak pro posílání MIDI zpráv (zprávy jsou poslány například do syntetizéru), tak i pro jejich příjem (například počítač posílá MIDI zprávy z hudebního editoru a klávesy je přehrají).

Data jsou mezi zařízeními propojenými přes rozhraní MIDI přenášena asynchronním sériovým protokolem přes proudovou smyčku. Vysílané informace jsou rozděleny na bajty (osmice bitů), přičemž ke každému bajtu je přidán start bit a stop bit. Hodinová frekvence vysílače je rovna 31250 Hz, což znamená, že se celý bajt i se start bitem a stop bitem přenese za 320 µs (10/31250 s). Z přenášených bajtů jsou skládané MIDI zprávy popsané v navazujících kapitolách. Délka MIDI zpráv je rovna jednomu, dvěma či třem bajtům (tři bajty jsou nejobvyklejší hodnota), ovšem jeden speciální typ zprávy má neomezenou délku. První bajt zprávy se nazývá stavový bajt (status byte). Jeho zvláštností je to, že má nastavený nejvyšší bit na logickou hodnotu 1 (jeho dekadická hodnota je vždy větší než 127). Všechny ostatní bajty mají tento bit nulový (jejich hodnota je menší než 128). Ve stavovém bajtu jsou uloženy dvě informace: číslo kanálu 1–16 (tím je adresováno některé zařízení) a kód příkazu – typ MIDI zprávy. Jednotlivé typy MIDI zpráv jsou ve standardu pojmenovány, viz obsah následující tabulky:

Kód příkazu (hex) Číslo kanálu? Název
0×80 ano Note Off
0×90 ano Note On
0×a0 ano Aftertouch
0×b0 ano Continuous controller
0×c0 ano Patch change
0×d0 ano Channel Pressure
0×e0 ano Pitch wheel/Pitch bend
0×f0 ne (non-musical commands)

2. Zpráva Note On

Pravděpodobně nejčastěji posílaná MIDI zpráva nazvaná Note On má délku tři bajty. V prvním bajtu (stavovém) je kromě typu zprávy uloženo i číslo kanálu, přičemž uložená hodnota z rozsahu 0–15 odpovídá číslu kanálu v rozsahu 1–16 (takto jsou kanály očíslovány na MIDI zařízeních). Ve druhém bajtu je přenášeno číslo noty. Minule jsme si uvedli převodní tabulku mezi kódem noty (MIDI number, key), konkrétní oktávou a notou i frekvencí (při použití temperovaného ladění). V hodnotě druhého bajtu MIDI zprávy Note On je možné zakódovat jednu ze 128 not (tónů o různé výšce) rozdělených do 11 oktáv po 12 půltónech (poslední oktáva neobsahuje nejvyšší tóny). Ve třetím bajtu této MIDI zprávy je uložena rychlost začátku přehrání noty (viz obrázek číslo 2, na kterém je nakreslená takzvaná obálka signálu představujícího přehrávanou notu). Rychlost začátku přehrání noty většinou odpovídá strmosti náběžné hrany – attack. Pokud je rychlost nulová, má tato MIDI zpráva podobný význam jako dále popsaná zpráva Note Off, tj. ukončení přehrání noty.

pc5002

Obrázek 2: Typická obálka signálu představujícího přehrávanou notu. U tohoto typu obálky lze nastavit čtyři parametry označované souhrnně zkratkou ADSR – attack, decay, sustain a release. U parametrů attack, decay a release se udává doba jejich trvání (z té je také odvozena strmost hran), zatímco parametr sustain je většinou zadáván v procentech maximální amplitudy. Existují i jiné možnosti specifikace obálky, tato je však nejznámější, protože je použita ve velkém množství hudebních syntezátorů.

3. Zpráva Note Off

Opačný význam než výše popsaná zpráva Note On má zpráva Note Off, pomocí které lze vypnout přehrání vybrané noty (elektronické hudební nástroje s polyfonií – a těch je naprostá většina – totiž dokážou současně přehrávat větší množství not). Opět se jedná o zprávu, jejíž délka je rovna třem bajtům. První bajt je stavový, ve druhém bajtu je uložen kód noty (se stejným významem jako u předešlé zprávy) a v bajtu třetím je uložena rychlost doznívání, přičemž nula značí nejpomalejší dozvuk a hodnota 127 dozvuk nejrychlejší. Pokud zařízení používá obálku typu ADSR zobrazenou na druhém obrázku, odpovídá rychlost doznívání většinou strmosti poslední hrany – release. Některá zařízení posílají pro vypnutí přehrání noty zprávu Note Off, některá jen Note On s nulovou délkou; specifikace však jasně říká, že zařízení, které zprávu přijímá, musí rozeznat a korektně reagovat na obě zmíněné varianty. Pro zařízení (nebo nástroje), které rychlost doznívání nepodporují, by měla být hodnota posledního bajtu zprávy Note Off nastavena na 64.

pc5003

Obrázek 3: Poměrně jednoduché klávesy, které však disponují rozhraním MIDI.

4. Zpráva AfterTouch

Zpráva typu AfterTouch je použita pro přenos informace o síle stlačení klávesy na klávesnici hudebního nástroje (může se však jednat i o jiný ovládací prvek). Některé elektronické hudební nástroje (klávesy, bicí) totiž obsahují senzory umožňující měřit tlak vyvíjený hudebníkem na jednotlivé klávesy. Tuto informaci je možné použít pro úpravu hlasitosti přehrávané noty – v případě použití obálky typu ADSR se jedná o hodnotu sustain, tj. amplitudu přehrávaného tónu po jeho ustálení (to nastane ve chvíli, kdy proběhne část attack a decay). Zpráva AfterTouch má délku tří bajtů, přičemž ve druhém bajtu se přenáší kód noty (přeneseně vlastně číslo stlačené klávesy) a v bajtu třetím síla stisku klávesy. Nulová hodnota značí minimální tlak a hodnota 127 tlak maximální. Mnoho senzorů však nedokáže rozlišit všech 128 úrovní, proto se například mohou vracet jen násobky osmi (rozsah 0–127 by měl zůstat zachován).

pc5004

Obrázek 4: Několik MIDI zařízení (včetně elektronických varhan) zapojených spolu se zesilovačem do většího zvukového celku.

5. Zpráva Channel Pressure

Podobný význam jako zpráva předchozí má i zpráva Channel Pressure, v ní je však přenesen průměrný tlak vyvíjený hudebníkem na všechny stlačené klávesy. Tato zpráva je použita především u levnějších elektronických hudebních nástrojů, které neobsahují senzory na všech svých klávesách, ale pouze senzor jediný. V tomto případě není možné rozlišit, pro jakou klávesu je tlak měřen (měří se pouze všechny stlačené klávesy současně) a z tohoto důvodu musí být použit i odlišný typ zprávy. Ta má délku pouhých dvou bajtů, protože prostřední bajt (který u předchozí zprávy nesl informaci o kódu stlačené klávesy) není použit. Přenáší se pouze stavový bajt a průměrná síla stisku kláves, přičemž hodnota 0 značí minimální tlak a hodnota 127 tlak maximální. Opět však platí, že mnoho senzorů nedokáže rozlišit všech 128 úrovní tlaku, proto se některé hodnoty nemusí v datovém toku vůbec objevit.

pc5005

Obrázek 5: Na gameportu není přímo vyveden standardní pětikolíkový konektor typu DIN použitý u MIDI, proto se musí použít redukce (buď s oddělovacím optočlenem nebo bez něj).

6. Zpráva Pitch Wheel (Pitch Bend)

Již samotné jméno zprávy Pitch Wheel napovídá, k čemu se tato zpráva využívá. Některé elektronické hudební nástroje obsahují ovládací prvek, pomocí něhož je možné měnit výšku jednotlivých tónů ve stupnici. Právě informace o aktuálním nastavení tohoto ovládacího prvku se přenáší ve zprávě typu Pitch Wheel. Délka této zprávy je rovna třem bajtům. Po stavovém bajtu následují dva datové bajty, ve kterých je přenesena čtrnáctibitová hodnota (z předchozího textu již víme, že je možné využít pouze sedm bitů z každého bajtu, neboť nejvyšším bitem je určeno, zda se jedná o stavový či datový bajt). Přenesená čtrnáctibitová hodnota je považována za posun tónů ve stupnici o k×n centů (jeden cent odpovídá jedné setině temperovaného půltónu, tj. 1/1200 oktávy), kde n je vypočteno následovně: přenesená_hodnota-8192 a k je konstanta závislá na použitém nástroji (přesnější vztah je specifikován až v General MIDI). Záporný výsledek výpočtu značí posun tónů směrem dolů, kladný výsledek nahoru.

pc5006

Obrázek 6: Pitch wheel na elektronických klávesách. Každé ladicí kolečko má svoji jasně definovanou střední polohu, která je ve zprávě Pitch Wheel zakódována jako hodnota 8192.

pc5007

Obrázek 7: Zapojení standardních pětikolíkových konektorů typu DIN pro MIDI na gameport v případě, že se použije oddělovací optočlen.

7. Zpráva Program (patch) Change

Pomocí zprávy typu Program Change je možné změnit typ hudebního nástroje, který se syntetizér pokusí napodobit. Například je možné, aby syntetizér zahrál notu podobně jako varhany, klavír nebo trumpeta – výška základního tónu je vždy stejná (a odpovídá například komornímu a), liší se však přidané harmonické a neharmonické složky, pomocí nichž může posluchač určit, jaký hudební nástroj daný tón hraje. Délka zprávy přenášející tuto informaci je dlouhá dva bajty; po bajtu stavovém následuje bajt, ve kterém je uvedeno číslo nástroje od 0 do 127. Je tedy možné rozlišit až 128 různých nástrojů, samozřejmě v závislosti na schopnostech použitého syntetizéru. Samotná norma MIDI neurčuje, jaký nástroj se pod daným číslem nachází. I z tohoto důvodu bylo vytvořeno General MIDI, kde je již předepsáno, že například nástroj číslo 1 odpovídá klavíru a nástroj číslo 57 trumpetě (pozor, v GM jsou nástroje číslovány od 1 do 128, tj. k přenášené hodnotě se přičítá jednička).

pc5008

Obrázek 8: Jedna z možných variant propojovacího kabelu gameport–MIDI.

8. Standard General MIDI (GM)

O standardu nazvaném General MIDI neboli zkráceně GM jsme se v předchozích odstavcích už několikrát zmínili. V jednoduchosti se dá říci, že General MIDI v některých oblastech upřesňuje (a zpřísňuje) normu MIDI. Například všechna zařízení, která se označují jako GM-compatible, musí dokázat současně přehrát minimálně 24 tónů, tj. mají čtyřiadvacetihlasou polyfonii, přičemž minimálně 16 tónů je melodických spolu s osmi bicími. Tato zařízení také musí podporovat všech šestnáct kanálů (viz předchozí část tohoto seriálu), přičemž kanál číslo 10 je rezervován pro bicí nástroje. Taktéž jsou v této normě přesně určeny čísla hudebních nástrojů, která se – jak jsme si již řekli v předchozí kapitole – nastavují pomocí zprávy Program Change. U GM-compatible zařízení je tedy jisté, že nástroj číslo jedna bude vždy hrát jako klavír atd. Další vlastnosti General MIDI si uvedeme v následujícím pokračování – jedná se především o formát souboru, ve kterém je možné ukládat celé skladby

pc5009

Obrázek 9: Netradiční použití rozhraní MIDI ve formě komunikačního portu – pro počítače Atari ST byla vytvořena hra MIDI Maze, kterou bylo možné hrát na více počítačích propojených právě přes MIDI. Využilo se přitom faktu, že počítače Atari ST byly tímto rozhraním standardně vybaveny a naopak neobsahovaly síťovou kartu.

CS24_early

Skupiny nástrojů tak, jak jsou definovány v General MIDI (čísluje se od 1 do 128):

Číslo programu/nástroje Skupina nástrojů
01 – 08 klavíry
09 – 16 laděné bicí
17 – 24 varhany
25 – 32 kytary
33 – 40 basové zvuky
41 – 48 smyčce
49 – 56 ansáblové zvuky
57 – 64 žestě
65 – 72 plátkové
73 – 80 píšťaly
81 – 88 elektronické sólové zvuky
89 – 96 elektronické doprovodné zvuky
97 – 104 elektronické zvukové efekty
105 – 112 etnické
113 – 120 perkusivní
121 – 128 zvukové efekty

9. Literatura a odkazy na Internetu

  1. Basic MIDI, Paul White,
    Sanctuary Publishing Ltd, London 1999.
    ISBN 1 86074 262 9
  2. A Beginner's Guide to MIDI,
    R A Penfold, Babani Publishing Ltd,
    London 1993. ISBN 0 85934 331 6
  3. MIDI for Organists,
    C E Pykett
  4. MIDI Maze,
    http://en.wiki­pedia.org/wiki/MI­DI_Maze
  5. HoofJaw & MIDI.com – Your MIDI File Center!,
    http://www.ho­ofjaw.com/Defau­lt.aspx
  6. Kenton Releases New MIDI Merge Box,
    http://www.dol­phinmusic.co.uk/new­s/news-story/news_id/1925
  7. How Optical Isolation Works (with Switching Power Supply) – Illustration,
    http://www.bb-elec.com/tech_ar­ticles/optical_i­solation_illus­tration.asp
  8. Opto-isolator,
    http://en.wiki­pedia.org/wiki/Op­to-isolator
  9. Musical Instrument Digital Interface,
    http://en.wiki­pedia.org/wiki/Mu­sical_Instrumen­t_Digital_Inter­face
  10. Daves Old Computers – Atari ST,
    http://www.clas­siccmp.org/dun­field/atarist/in­dex.htm
  11. A MIDI Pedalboard Encode,
    http://www.py­kett.org.uk/a_mi­di_pedalboard_en­coder.htm
  12. MIDI Note Number, Frequency Table,
    http://tonalsof­t.com/pub/new­s/pitch-bend.aspx
  13. Note names, MIDI numbers and frequencies,
    http://www.phys­.unsw.edu.au/jw/no­tes.html
  14. The MIDI Specification,
    http://www.gwe­ep.net/~prefec­t/eng/referen­ce/protocol/mi­dispec.html
  15. Essentials of the MIDI protocol,
    http://ccrma.stan­ford.edu/~cra­ig/articles/li­nuxmidi/misc/es­senmidi.html
  16. General MIDI,
    http://en.wiki­pedia.org/wiki/Ge­neral_MIDI
  17. Obecné MIDI (General MIDI),
    http://www-kiv.zcu.cz/~he­rout/html_sbo/m­idi/5.html

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.