Uživatel:Pauluma1

Z HPM wiki
Přejít na: navigace, hledání

Obsah

Komunikační rozhraní MIDI

Komunikační rozhraní MIDI umožňuje komunikaci mezi hudebními nástroji a počítačem. Přenášená data jsou data řídící, která odpovídají událostem vzniklým během hraní na hudební nástroje. Takovou událostí může být třeba stlačení klávesy. Tuto událost zaznamenáme na počítači a později ji můžeme přehrát pomocí elektronického hudebního nástroje.

Technická specifikace

Rozhraní MIDI se skládá ze tří 5-pinových konektorů DIN označených In, Out a Thru. Konektor In je vstupní a konektor Out výstupní. Na konektor Thru jsou kopírována data přicházející na vstup přístroje.

Hardware rozhraní

MIDI sběrnice je 5 mA proudová smyčka. Logické nule odpovídá protékající proud. Používá seriový asynchronní datový přenos. Rámec se skládá z jednoho startbitu, osmi datových bitů a dvou stopbitů.

Struktura protokolu

Základní datový blok přenášející určitou informaci se nazývá „MIDI zpráva“. Ta se skládá z jednoho stavového a několika datových MIDI bytů. MIDI Byte je osmibitový datový typ, kde nejvýznamnější bit určuje, zda jde o stavový byte (MSB=1) nebo datový byte (MSB=0). MIDI zprávy se dělí na kanálová data a systémová data. Kanálová data přenášejí ve stavovém bytu informaci o virtuálním datovém kanále. Ve stavovém bytu jsou pro identifikaci MIDI kanálu vyhrazeny čtyři bity, proto mohou být po jedné fyzické MIDI sběrnici přenášena kanálová data až v 16 virtuálních kanálech. Systémová data informaci o MIDI kanále nepřenáší - jsou společná pro všechny kanály. Dolní čtyři bity stavového bytu slouží k identifikaci typu systémových dat. Systémová data se dělí na zvláštní systémová data, která umožňují přenos větších datových bloků, a na data reálného času, která slouží k vzájemné časové synchronizaci několika zařízení.

stavový byte

      1	       T	T	T	n	n	n	n
      
      1-	Identifikátor stavového eventu
      T-	Identifikátor typu zprávy
      n-	Identifikátor MIDI kanálu


Datový byte

      0	       v	v	v	v	v	v	v
     
      0-	Identifikátor datového eventu
      v-	Hodnota


Aby se zvětšila průchodnost MIDI sběrnice, není nutné v případě kanálových dat vždy vysílat úplné MIDI zprávy. Pokud se nemění typ informace určený stavovým bytem, stačí vysílat jenom datové byty.

Data v MIDI systému mají následující prioritu:

a) resetování systému

b) data reálného času

c) zvláštní systémová data

d) společná systémová data

e) kanálová data


Data reálného času mohou přerušovat zvláštní a společná systémová data i kanálová data.

Kanálová MIDI data

Kanálová MIDI data se vztahují k určitému MIDI kanálu, jehož číslo je přenášeno v dolních 4 bitech stavového bytu. Pro identifikátor kanálových dat jsou ve stavovém bytu vyhrazeny 3 bity. K dispozici je tedy 7 identifikátorů, osmý je vyhrazen pro systémová data.

MIDI zpráva                           Význam	                         ID	počet databytů
Note On	                               nota zapnuta	                  0	       2
Note Off	                       nota vypnuta	                  1	       2
Polyphonic Key Pressure	               individuální tlaková citlivost     2	       2   
Control Change	                       změna kontroleru	                  3	       2
Program Change	                       volba programu	                  4	       1
Channel Pressure	               společná tlaková citlivost         5	       1
Pitch Bend Change	               ohýbání tónu	                  6	       2


Nota zapnuta

MIDI zpráva “Note On” má identifikátor 0 a přenáší informace o stisknuté klávese. První datový byte přenáší informaci o MIDI čísle noty a druhý datový byte informaci o dynamice, s jakou byla nota zahrána.

Stavový byte		1. datový byte		2. datový byte
1000nnnn	-	0kkkkkkk	-	0vvvvvvv
000 – ID=0		číslo noty		rychlostní data


Druhý datový byte zprávy Note On určuje dynamiku, s jakou byla nota zahrána. Vytvořit klaviaturu s dynamickými snímači není jednoduché. Naštěstí je dynamika přímo úměrná rychlosti stlačení klávesy.

        Velocity	Dynamika	Hudební označení
           0	          off	           Vypnuto
           1	          ppp	           pianissimo piano
            	           pp	           Pianissimo
           	            p	           Piano
            	           mp	           mezzo-piano
           64	           mf	           mezzo-forte
        	            f	           Forte
        	           ff	           Fortissimo
           127	          fff	           fortissimo forte

Individuální tlaková citlivost

Má identifikátor 2 a přenáší informace o velikosti tlaku, kterým je působeno na stisknutou klávesu. Tlaková citlivost nemá nic společného s dynamikou hraní, tj. s rychlostními daty. Je to síla, jakou hráč působí na klávesu až po jejím stisknutí. Protože klávesový tlakový snímač je drahý, většina MIDI klaviatur data individuální tlakové citlivosti nepřenáší. Jsou přenášena pouze data společné (kanálové) tlakové citlivosti.


Změna kontroleru

MIDI zpráva Control Change (změna kontroleru) má identifikátor 3 a přenáší informace o změně hodnoty tzv. kontroleru – ovládacího parametru MIDI nástroje, např. hlasitosti, modulaci, bance zvuků atd. První datový byte přenáší informaci o MIDI čísle kontroleru a druhý datový byte jeho novou hodnotu. Pro většinu MIDI zařízení používajících protokol MIDI pro nastavování různých parametrů je 128 hodnot, jakých může MIDI kontroler nabývat, málo. Proto jsou pro některé MIDI kontrolery vyhrazeny 2 čísla, jedno pro významnější byte (MSB) a jedno pro méně významný byte (LSB). Rozlišení je potom 16384 hodnot.

MIDI kontrolery se dělí z několika hledisek. Z hlediska funkce se dělí na:

- Průběžné (spojité) - mohou nabývat všechny hodnoty v rozsahu, minimální hodnota je 0, maximální 127. Výjimkou jsou kontrolery č.8 Balance, č.10 Pan a č.11 Expression, které mají jako výchozí střední hodnotu, tj. 64.

- Spínače - nabývají pouze stavu „vypnuto“ (0 až 63) a „zapnuto“ (64 až 127)

- Inkrementační / dekrementační - na přenášené hodnotě nezáleží, protože funkce je jasně dána pouhým přijetím čísla kontroleru - přičtení nebo odečtení 1 od hodnoty parametru. Druhý datový byte je většinou roven 127.

- Povely - na přenášené hodnotě nezáleží, funkce je opět dána pouhým přijetím čísla kontroleru. Výjimkou je kontroler č. 122 Local Control, u kterého hodnota 0 znamená vypnuto a 127 zapnuto.Všechny ostatní povely mají ve druhém stavovém byte vždy 0.

MIDI norma definuje několik skupin čísel kontrolerů. Základní rozdělení čísel kontrolerů je následující:

0 - 31	        MSB dat průběžných (spojitých) kontrolerů
32 - 63	        LSB kontrolerů 0 až 31
64 - 96	        další jednobitové kontrolery
97 - 101	inkrementace/dekrementace a čísla parametrů
102 - 119	nedefinované jednobitové kontrolery
120 - 127	Povely

Příklady povelů:

MIDI povel	        číslo kontroleru	Význam
All Sound Off	             120	všechny zvuky vypnuty
Reset All Controllers	     121	reset všech kontrolerů
Local Control	             122	lokální řízení zapnuto ($7F) / vypnuto ($00)
All Notes Off	             123	všechny noty vypnuty
Omni Off	             124	režim Omni zapnut
Omni On	                     125	režim Omni vypnut
Mono On	                     126	režim Mono zapnut (Poly vypnut)
Poly On	                     127	režim Poly zapnut (Mono vypnut)

V dnešní době je počet MIDI kontrolerů nedostačující. Proto bylo v MIDI normě definováno rozšíření kontrolerů o tzv. registrovaná čísla parametrů (RPN) a neregistrovaná čísla parametrů (NRPN). Pomocí jedné dvojice kontrolerů se přenese číslo parametru a pomocí další dvojice hodnota tohoto parametru.


Volba programu

MIDI zpráva Program Change má identifikátor 4 a přenáší informaci o zvoleném zvukovém programu.

Společná tlaková citlivost

MIDI zpráva Channel Pressure má identifikátor 5 a přenáší informace o velikosti tlaku, jakým je působeno na stisknuté klávesy. To znamená, že je přenášena jediná hodnota pro všechny noty hrané na daném MIDI kanálu. Datový byte přenáší informaci o síle tlaku.

Ohýbání tónu

MIDI zpráva Pitch Bend Change má identifikátor 6 a přenáší informaci o relativní změně výšky hraných tónů nahoru nebo dolů, tzv. „ohýbání tónu“. Velikost změny tónu je přenášena pomocí dvou datových bytů

Systémová MIDI data

Systémová MIDI data mají identifikátor 7, Systémová data se nevztahují k MIDI kanálům, proto nemusí ve stavovém bytu přenášet informaci o MIDI kanále. Dolní čtyři bity stavového bytu jsou využity pro celkem 16 možných typů systémových dat.

ID	název	                  počet databytů	        význam
F0	System Exclusive	     neurčen	        začátek zvláštních systémových dat
F1	MTC Quarter Frame	       1	        čtvrtinový rámec synchronizace MIDI Time Code
F2	Song Position Pointer	       2	        ukazatel pozice skladby
F3	Song Select	               1	        volba skladby
F4	nedefinován	               -	 
F5	nedefinován	               -	 
F6	Tune Request	               0	        žádost o naladění
F7	End of Exclusive	       0	        konec zvláštních systémových dat
F8	Timing Clock	               0	        časovací impuls synchronizace MIDI Clock
F9	nedefinován	               -	 
FA	Start	                       0	        příkaz Start synchronizace MIDI Clock
FB	Continue	               0	        příkaz Continue synchronizace MIDI Clock
FC	Stop	                       0	        příkaz Stop synchronizace MIDI Clock
FD	nedefinován	               -	 
FE	Active Sensing	               0	        aktivní vnímání
FF	System Reset	               0	        reset systému

Obecná systémová data

Pro synchronizaci MIDI zařízení s audio a video technikou se používá synchronizační kód MIDI Time Clock (MTC), který je MIDI verzí obecně používaného kódu SMPTE/EBU. MTC používá dva základní typy zpráv – MTC Quarter Frame a MTC Full Frame. První jmenovaná zpráva má přidělen svůj vlastní stavový byte $F1, který ve čtyřech dvojicích MIDI zpráv přenáší informaci o čase, tj. hodiny, minuty, sekundy a rámce. Zpráva MTC Full Frame je speciálním případem zvláštních systémových dat a přenáší celou informaci o čase v jedné MIDI zprávě.

Ukazatel pozice skladby

Ukazatel pozice skladby - Song Position Pointer SPP určuje, kolik taktů od začátku skladby se nachází aktuální pozice přehrávání. Používá se pro spuštění přehrávání skladby z jiného místa než od začátku nebo při přetáčení skladby.

Volba skladby

MIDI zpráva Song Select slouží pro zvolení skladby, která má být přehrávána. Je následována jedním datovým bytem, k dispozici je tedy 128 čísel pro volbu skladby. Zařízení mohou tuto zprávu ignorovat, pokud výběr skladby nepodporují.

Žádost o naladění

Při přijetí MIDI zprávy Tune Request by měl analogový syntezátor provést kontrolu naladění oscilátorů, pokud je toho schopen. Na stabilitu kmitočtu analogového oscilátoru má vliv mnoho faktorů, např. i teplota okolí.

Konec zvláštních systémových dat

MIDI zpráva End Of System Exclusive EOX určuje konec bloku zvláštních systémových dat.

Systémová data reálného času

Druhou skupinou systémových dat jsou data reálného času. Tato data v sobě nenesou žádnou časovou informaci, ale je důležité jejich přijetí ve správný okamžik, v přesně definovanou časovou pozici. Proto mají při vysílání prioritu přede všemi ostatními MIDI zprávami a musí být zpracovány okamžitě po přijetí MIDI přijímačem.

Synchronizační kód MIDI Click

Čtyři ze šesti zpráv systémových dat reálného času jsou určeny pro synchronizační kód MIDI Click. Jedná se o jednoduchý časový kód, který přenáší puls 24krát během jedné čtvrťové doby, tj. s rozlišením 1/96. Tímto pulsem je MIDI zpráva Timing clock, která nemá žádný datový byte. Rovněž bez datových bytů jsou další tři zprávy tohoto synchronizačního kódu – Start, Continue a Stop.

Reset systému

MIDI zpráva System Reset uvede všechna zřízení v systému do jejich Inicializačních hodnot.

Zvláštní systémová data

Zvláštní systémová data, System Exclusive, zkráceně SysEx, jsou určena pro specifické potřeby daného zařízení nebo skupiny zařízení a jejich využití a formát je zcela na výrobci daného zařízení. Jedná se o blok datových bytů, který je zakončen MIDI zprávou End Of SysEx. Blok SysEx dat nesmí být přerušen žádnou jinou MIDI zprávou s výjimkou MIDI zpráv reálného času. Přijetí jiného stavového bytu je považováno za ukončení bloku SysEx dat.

Závěr

MIDI systém má v současné době několik základních problémů:

malý počet parametrů (128 kontrolerů) malý rozsah hodnot pro nastavování parametrů, nízká přenosová rychlost, malý počet kanálů na jedno MIDI propojení, malá délka MIDI propojení.

První dva problémy se celkem uspokojivě řeší pomocí neregistrovaných čísel parametrů nebo SysEx zpráv. Třetí problem je řešen za pomoci využití mnohem rychlejších rozhraní, např. Firewire nebo Ethernet. Problémem může být použití konvertorů pro MIDI. Čtvrtý problem se dá zvýšit použitím jiného typu rozhraní pro MIDI protokol, které je schopné v jedné signálové cestě vytvářet více virtuálních MIDI propojení. Těchto řešení je v poslední době velká řada. Prvním řešením byl přenos MIDI po rozhraní SCSI (Small Computer System Interface) označovaný SMDI (SCSI Musical Data Interchange). Byl určen zejména k přenosu zvukových nahrávek a SysEx dat. Velmi rozšířeným je rozhraní To Host firmy Yamaha pro připojení externího MIDI zařízení k počítači PC nebo Mac. Rozhraní To Host pracuje ve dvou režimech, v režimu PC-1 má standardní taktování 31,25 kBaudů, v režimu PC-2 používá 38,4 kBaudů. Výhodou je, že pro oboustranný přenos MIDI dat slouží pouze jeden kabel a jeho délka může být díky používaným úrovním rozhraní RS232 (±12V) mnohem delší než u klasického MIDI kabelu. V poslední době je pro připojení MIDI zařízení k počítači používáno rozhraní USB (Universal Serial Bus). Kromě firemních ovladačů pro připojení konkrétního zařízení existují i ovladače pro počítače PC a Mac pro přenos MIDI dat mezi více počítači. Výhodou je větší počet virtuálních obousměrných MIDI spojení prostřednictvím jednoho kabelu, možnost připojení libovolného množství zařízení pomocí USB hubu a přenos na vzdálenosti až 8 metrů, s USB opakovači ještě více. Dalším médiem, které slouží k přenosu MIDI dat, i když zatím spíše experimentálně, je Ethernet - MIDI data jsou přenášena pomocí lokální počítačové sítě. Problémem je zpoždění, které může být i několik sekund. Při přímém propojení několika počítačů v rámci malé sítě nezatěžované jiným datovým přenosem je ale zpoždění jen několik milisekund, což je nepozorovatelné.

I přes zmíněné nedostatky to ale vypadá, že rozhraní MIDI bude stale používáno, obzvláště vzhledem k jeho nízké ceně a kompatibilitě se staršími hudebními nástroji a zařízeními.


Zdroje

[1] http://cs.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

[2] http://www.root.cz/clanky/rozhrani-midi-na-osobnich-pocitacich-ii/

[3] Ing Ladislav Káňa: Studiová a hudební elektronika, VUT Brno

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje