Cs. Kádár Péter - XXI. századi Diszkónika, 255. Parancsolj!

Gyakorló diszkósok számos vidám történetet tudnának mesélni olyan esetekről, amikor a bunkó vendég ellentmondást nem tűrő hangnemben üvöltözött vele, hogy milyen nótát tegyen be, és ha nincs meg neki, akkor az okostelója hangszórójáról, Youtube-ról játssza be, mert különben… A nyitóképet is egy diszkós blogjáról loptam.

A midinél mi vagyunk a parancsnokok, mi határozzuk meg, hogy a midi mit csináljon. A midi által végrehajtandó parancslehetőségeket a midi leíró nyelve, a midi protokoll tartalmazza.

pcs02

A protokoll kidolgozásakor alapvető követelmény volt, hogy egyik eszköznek sem szabad "megvesznie" a kapcsolat fennállása során. Arra is gondolni kellett, hogy egyszerű, megszokott vezérlési módszereink (kapcsolók, kerekek, billentyűzet, stb.,) ugyanúgy működjenek a létrehozott rendszerben, mintha nem volna midi kapcsolat. Cél volt az is, hogy több hangszert, eszközt lehessen összekapcsolni.

A midi digitális, soros, aszinkron eljárás. A digitális azt jelenti, hogy a midi-jelnek két állapota lehet; 1 vagy 0. A soros azt jelenti, hogy egyidejűleg egy bit megy át. A midi protokoll 8 bites csomagokba szervezi a parancsokat, vagyis egy teljes, 8 bitből álló bájt bitjei egymás után, libasorban mennek a midijeleket adó és az azokat vevő készülékbe.

Az aszinkron azt jelenti, hogy az átvitel szakaszosan történik, a kódszavak között szünettel. Egy-egy kódszó adása start bittel kezdődik, és stop bittel (szünet) fejeződik be. A vétel a start jel érzékelésével indul, és fogadó szerkezet elektronikája az adó frekvenciájával azonos frekvenciájú szinkronizáló jelet, órajelet állít elő. Ez az ismét előállított, “regenerált” órajel segít az egyes bitek pontos helyének meghatározásában. Az egymás után következő, 8 bitből álló bájtsorozatokat időben bármikor továbbíthatja a rendszer, nem kell folyamatosan, ugyanolyan ütemben pörögnie.

A midi protokoll alkalmazkodott a korabeli cuccok csigatempójához, ezért az átviteli sebesség 31 250 bit/s, ami átszámolva durván 3,8 kB/s. Hogyan is lett a bitből kilobájt? Már régóta, a sorozat 3. része óta tudod, hogyan kell átszámolni. Először elosztottam a 31 250-et 8-cal, így megkaptam a sebesség értékét bájtban, [3 096 B], majd ezt osztottam el 1 024-gyel, s ez lett a végeredmény. Remélem, hogy furdalja az oldaladat a kíváncsiság, hogy viszont a 31 250 bit/s honnan származik? Ennek roppant érdekes, ám egyszerű oka van. Ha az egymilliót elosztjuk 32-vel, pont ez jön ki. Ugyanis a midi születésekor az órajel előállításához szükséges kvarckristályok 1, 2, 4 vagy 8 MHz-esek voltak, és az ezeken a frekvenciákon ketyegő oszcillátorok rezgésszámát könnyen lehetett a szükséges értékre osztani. Számos integrált áramkör működött ilyen kvarccal, pl a Motorola cég 6 850 típusú morzsája IC-je

De bárhogy is nézzük, a midi sebessége túl alacsony, hiába bizonygatta évtizedeken keresztül a két midi fanklub – a MIDI Manufacturers Association (MMA), vagyis a midi ajánlásokat megfogalmazó és alkalmazó cégek szövetsége, valamint a Japanese MIDI Standard Committee (JMSC) a japán midi szabvány egyesület –, hogy jól van ez így. Számos rendszer-összeomlás oka a kis sebesség, de mivel az esetek többségében mégis úrra lehetett lenni a helyzeten, mert a problémát nem önmagában a midi okozta, a midi maradt ilyen lassú, egészen 2020-ig.

Valamennyi midi parancs, vagy ahogy általában nevezik, midi üzenet, kétféle bájtba rendezett adatsorból áll. Az egyik az állapotbájt vagy státuszbájt, ez közli a fogadó berendezéssel, hogy a következő üzenet milyen információkat hordoz, hogyan kell őket a fogadó eszköznek értelmezni, pl. milyen hangszerhang szólaljon meg. Az adatbájt az állapotbájtot követő, az adott funkcióhoz kapcsolódó jellemzőket (pl. hangerő) szolgáltató adat(ok)ból áll. Egy adatsor mindig egy állapotbájthoz kapcsolódik, s ameddig nem jön újabb állapotbájt, addig az adatbájtok ugyanahhoz az állapotbájthoz kapcsolódnak, szépen sorban. Olyan ez, mint a vonat. Az állapotbájt a mozdony, az adatbájtok a kocsik. A valódi szerelvényt húzhatja ugyan két mozdony is, de a midiben ez tilos, és értelmetlen is volna. Egy midi üzenet legalább egy bájt hosszú – csak a mozdonyból áll, bár ennek sincs értelme, de a protokoll megengedi –, az pedig, hogy az állapotbájt után konkrétan hány adatbájt következik, az állapotbájt „mondja meg”.

Eszembe jutott, hogy egy terepasztal hangjait és a vonatok indítását-megállítását, a szerelvények sebességét, továbbá a jelzők, sorompók mozgatását és a világítást is lehetne midivel masszíroztatni, ám erre a vasútmodell technikában más rendszert találtak ki.

Az állapotbájtok első bitje mindig 1, az adatbájtoké pedig 0. Ez azt is jelenti, hogy az állapotok jellemzőit 7 biten lehet közölni, ami miatt ezek értéke 0–127 között lehet; ennyiféle „mozdony” között válogathatunk, ennyiféle funkció vezérelhető, pl. ennyiféle hangszerhangból állhat a hangkészletünk.

pcs03

Kezdetben elegendő is volt, ha csak 128 különböző hangszer hangjából lehetett válogatni, ám egy muzsikusnak semmi nem elég, s mint a sorozat korábbi részeiben is olvashattad, akár több ezer tagú is lehet a hangkészlet. Ilyenkor a hangkészletet több részre, hangbankra bontják, ezekből is 128 lehet, s először a kívánt bank választható ki egy midi utasítással (bank select), majd az adott bankból a megfelelő hangszer-hangot, hangszínt kapcsolja a midi üzenet. Így akár 128*128 = 16 384 hangszer-hangunk is lehet. S ha ez is kevés, újra megszorozhatjuk 128-cal. Ja, hogy miért 128 és nem 127? Mert a 0 is értékes szám.

Van itt egy kis kavarodás, ugyanis kétféle értelemben használjuk a hangszer fogalmát. Az első a hagyományos értelmezés, amely szerint hangszer a „megfogható” hangcsiholó, például zongora, hegedű, dob vagy éppen szintetizátor. A másik értelmezés szerint hangszer az, ami az elektrofon hangszerekben van; mondhatnánk, hangszer a hangszerben. Ez utóbbiakat az elektronikus hangszerek valamilyen szintézissel állítják elő, ezek a virtuális hangszerek. Egy-egy midi üzenet tehát 128 virtuális hangszert, hangszerhangot tud kezelni.

A midi üzenetek eljuttatásához midi kapcsolatra (fizikailag pl. midi csatlakozókból és kábelekből épített összeköttetésre) van szükség. A midi kapcsolat 16 eszközt tud kezelni, pl. 16 szintetizátor köthető össze egymással, a midi protokoll 16 csatornás. Mind a 16 eszköznek külön midi neve van, e név, amit címnek hívnak, egyenként is vezérelhető. A menüparancson keresztül adjuk meg, hogy az eszköz az adott csatornán érkező üzeneteket tekintse úgy, hogy azok neki szólnak, a többit pedig ne hajtsa végre, viszont engedje át a többi egység felé. Tehát mindenféle üzenet keveredhet ugyanazon a midi-kapcsolaton, de mindegyik eszköz kiválogatja belőle a neki szólókat. Azokat az üzeneteket, amiket pedig egy eszköz úgy értelmez, hogy nem kell végrehajtani, tovább löki a többieknek, hátha lesz közöttük olyan eszköz, amelyik hasznosítani tudja majd. Természetesen lehetnek olyan üzenetek, amelyek több eszköznek is szólnak, sőt, olyanok is, amelyek mindenkinek.

Mi van akkor, ami nem is olyan ritka eset, ha 16-nál több eszközt kéne vezérelni, például van egy hatalmas elektronikus dobcuccunk, ami önmagában is 20 dobszintetizátorból áll? Ilyenkor a midi vezérlőnek – pl. az egyik szintetizátornak vagy a midi billentyűzetnek – több kimenete van, így nemcsak egyetlen, hanem több midi kapcsolat hozható létre, kapcsolatonként 16 csatornával.