Levél a távolból

midi.blog
Felelősség: Gerényi Gábornál
Észrevétel, üdvözlet, kritika, egyebek

Saját termék

fiii.jpg

Könyvek

Sík Zoltán - Gerényi Gábor: MIDI (1992)
(Alapozás és Protokoll)


Kruza Richárd - Banay Gábor:
A szintetizátor a zenei gyakorlatban (1985)

Tagek

112db (2) aas (3) aax (28) abbey road (3) ableton (41) access (2) acoustica (3) adobe (5) aiaiai (3) akai (38) akció (51) alesis (29) allen & heath (4) american audio (3) amidio (2) amvst (2) analizátor (5) analóg (161) analogue solutions (4) android (47) antares (11) apogee (9) apple (32) applied acoustic (2) applied acoustics (4) araldfx (2) arman bohn (2) arp (8) arturia (65) atomosynth (2) au (227) audiomidi (2) audiorealism (4) audiothing (7) audiowarrior (3) audio damage (13) avid (21) behringer (25) best service (2) big tick audio (2) bitwig (9) blue (2) boss (5) brainworx (2) buchla (2) cakewalk (24) camel (2) camel audio (3) casio (7) cat (2) celemony (6) clavia (14) cme (11) commodore (12) creamware (4) csináld magad (9) cycling74 (3) d16 (4) dave rossum (3) dave smith (25) db audioware (2) denon (3) devine machine (2) de la mancha (10) digidesign (24) discodsp (2) discovery sound (2) diy (19) dj (122) dj1800.com (2) dob (25) dobgép (150) doepfer (2) drawmer (2) dreadbox (2) dsk (3) dsp (5) duy (2) dyode (2) e-mu (3) eastwest (5) edgesounds (4) edirol (4) effekt (290) electro-harmonix (2) elektron (8) elektrostudio (2) elka (2) ems (2) ensoniq (2) eowave (5) esemény (146) esi (5) eventide (4) e mu (4) faderfox (4) fairlight (7) five12 (2) focusrite (15) future retro (3) fxpansion (6) garritan (3) gemini (3) generalmusic (2) genoqs (2) gforce (5) gibson (6) gitár (67) goldbaby (2) griffin (2) g sonique (2) hammond (2) hangminta (198) harrison (2) hercules (5) hg sounds (2) hobnox (6) hollow sun (4) hotelsinus (2) hypersynth (3) iconnectivity (4) ik multimedia (78) image line (25) index.hu (4) ingyenes (368) interfész (188) ion (4) ios (56) ipad (227) iphone (159) ipod (9) izotope (14) játék (29) jazzmutant (7) jomox (3) karmafx (2) kártya (2) kenton (5) keverő (39) kiegészítő (9) koblo (2) kong audio (3) kontroller (297) konverter (2) könyv (12) korg (98) kurzweil (4) kv331 (2) kv331 audio (3) kvr (2) lejátszó (3) lemezjátszó (9) lexicon (7) line 6 (5) linn (3) linplug (8) linux (33) lionstracs (3) livelab (2) livid (9) loomer (2) lsr audio (2) m-audio (19) mac (643) macbeth (2) mackie (10) magyar (140) makemusic (2) marantz (2) martinic (2) mawzer (2) mfb (6) microsoft (2) midikönyv (11) mikrofon (2) minta (3) mobil (395) modal electronics (3) modartt (3) monome (6) moog (63) motu (26) muse (2) muse research (6) musicrow (7) music computing (2) musikmesse (3) mutable instruments (5) mutools (2) művészet (20) m audio (16) native instruments (131) nektar (5) niko20 (2) nintendo (4) nomad factory (3) nord (3) novation (30) numark (15) nusofting (6) oberheim (6) ohm (2) ohm force (2) open labs (5) pc (845) peavey (3) percussa (3) pg music (3) pianoteq (16) pinknoise studio (9) pioneer (9) plogue (2) plp (6) plugin (637) powerfx (2) ppg (11) precisionsound (4) preset (2) presonus (7) program (5) propellerhead (32) prosoniq (3) puremagnetik (5) quikquak (6) reason (2) reasonbanks (11) reloop (2) remix (3) retronyms (2) rhythmic robot (3) rme (2) robot (3) rob papen (11) roger linn (7) rögzítő (57) roland (85) roli (2) rtas (198) samplemodeling (2) samplerbanks (2) sample logic (4) schaack audio (2) serato (3) serrano (2) sinevibes (2) slate digital (3) sm pro audio (3) softube (4) sonart (3) soniccouture (2) sonicprojects (2) sonic charge (4) sonic couture (3) sonivox (8) sonnox (2) sonoma (4) sony (24) soundcloud (4) soundscape (5) sound devices (2) spectrasonics (5) ssl (10) stanton (6) steinberg (58) streetly electronics (2) studiodevil (2) studio electronics (3) sugar bytes (5) synapse audio (8) synesthesia (2) syntheway (3) szekvenszer (242) szintetizátor (361) szoftszinti (641) szoftver (469) tal (3) tanager audioworks (2) tascam (21) tc electronic (16) teenage engineering (7) terratec (5) teszt (17) togu audio line (3) tone2 (10) tonebytes (2) toontrack (2) tubeohm (2) u-he (2) ueberschall (5) ugo (2) universal audio (11) uvi (6) vermona (4) verseny (12) vestax (9) videó (7) vienna instruments (2) vir2 (2) virsyn (8) vista (6) vokóder (25) voxengo (3) vrsonic (2) vst (613) waldorf (24) wallander instruments (3) waves (12) wave alchemy (4) way out ware (2) web (204) westgate studios (2) windows (17) workstation (5) wwaym (6) xils (4) yamaha (35) yellow tools (2) zero-g (2) zero g (4) zongora (4) zoom (10) #

Utolsó kommentek

Naptár

február 2020
Hét Ked Sze Csü Pén Szo Vas
<<  < Archív
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29

A MIDI-kódok

Címkék: midikönyv

2007-01-08 16:58:00

A vezérlő hangszer (vagy másnéven az adó) az információt bájtok sorozataként küldi a vevő, vagyis a vezérelt eszköz felé. Vezessük be az elküldött információnak azt a logikai egységét, amelyet az adó egyszerre, egy sorozatban, bájtok egymásutánjaként, valamilyen történés hatására elküld; a továbbiakban ezt nevezzük MIDI-üzenetnek.

Egy MIDI-üzenet legalább egy bájt hosszú, maximális hossza pedig nincs meghatározva. Az üzenet építőkövei a státuszbájtok és az adatbájtok. A státuszbájt érkezik először: ez határozza meg, hogy az adatbájtok milyen információt hordoznak, miként kell őket a fogadónak értelmezni. Takarékossági és biztonsági megfontolások alapján a két típus bináris kódolása alapján is eltér egymástól: a státuszbájtok legfelső helyiértékű bitje mindig 1, míg az adatoké mindig 0. Minden bájtból tehát hét bit marad egyéb információk kódolására.

A MIDI-üzeneteket öt alaptípusba szokás osztályozni. Ezek a következők:

1. Üzemmód-jellegű üzenetek (Channel Mode Messages)
A vevőt a négy MIDI-üzemmód egyikébe kapcsolhatja át (az üzemmódokat lásd később). Az üzemmódok azt határozzák meg, hogy a hangszer miképpen reagáljon a további csatornaüzenetekre.

2. Hang-jellegű csatornaüzenetek (Channel Voice Messages)
A zenei előadás közben előforduló eseményeket (billentyűk leütése, felengedése, hajlítás stb.) ezekkel az üzenetekkel lehet valós időben közölni a vevővel. Minden, a MIDI-s hangszeren véghezvitt zenei akció következménye a hangszer MIDI-kimenetén megjelenő, ehhez az eseményhez rendelt kód, amely precízen leírja, mi is történt. A vevő ezt értelmezheti, feldolgozhatja, és végre is hajthatja a kódhoz tartozó eseményt, például megszólaltathat egy hangot.

3. Egyszerű rendszerüzenetek (System Common Messages)
A MIDI-lánc valamennyi elemének szóló üzenetek, ilyen például a hangolásra felszólító üzenet.

4. Valós idejű rendszerüzenetek (System Real Time Messages)
Időzítési és szinkronizációs üzenetek közvetítésére szolgáló kódok.

5. Exkluzív rendszerüzenetek (System Exclusive Messages)
Eszközspecifikus információk átvitelére szolgálnak, amelyek kimondottan egy-egy hangszertípusnak szólnak, minden más gyártmány vagy típus figyelmen kívül hagyja őket.

Az első két típus - a már említett csatornakoncepció alapján - a teljes rendszerből csak bizonyos eszközöknek, méghozzá azoknak szól, amelyek csatornaszáma megegyezik az üzenetbe kódolt csatornaszámmal. Az üzenet státuszbájtja tartalmaz ugyanis egy négy bites mezőt, a csatornaazonosítót, amely jelzi, hogy ez a teljes üzenet a rendszer mely eszközeinek szól. A vevő eszköz az üzenet vétele után saját csatornaszámát - amelyet a felhasználó előzőleg már beállított - összehasonlítja ezzel az azonosítóval, és az üzenetre csak akkor reagál, ha a két mennyiség egyenlő. A rendszer valamennyi elemét célszerű tehát különböző csatornákra állítani, így mindannyiukat egymástól függetlenül vezérelhetjük. Akkor sincs semmi baj, ha két hangszert azonos csatornára állítunk: mindketten ugyanazt fogják csinálni.

Ez a megoldás nagyon hasonlatos az otthoni rádió- és televíziókészülékekből már ismert csatornaszétválasztáshoz, hiszen ott is egyetlen kábelen érkezik több, esetenként nagyon sok műsor, melyek közül a vevőkészülék beállítása dönti el, hogy melyiket hallgatjuk vagy nézzük.

 

1. Üzemmódot állító csatornaüzenetek

A MIDI-s hangszerek négy üzemmódban értelmezhetik a bejövő hangjellegű csatornaüzeneteket. Ezek az alábbiak:

1. üzemmód: OMNI ON, POLY
A hangszer ebben az üzemmódban nem fogja a bejövő üzenet csatornakódját figyelni, hanem, ezt figyelmen kívül hagyva, minden bejövő MIDI-üzenetre reagál. Ez akkor hasznos, ha csak egy adó és egy vevő van; nem kell bajlódni a csatornaszámok egyeztetésével. Ezen kívül egy további hatás, hogy a hangszer polifón üzemmódba kerül, vagyis több hangot képes egyszerre megszólaltatni. A megszólaló hangok maximális száma a hangszer megvalósításától, a hanggenerátorok számától függ.

2. üzemmód: OMNI ON, MONO

Szintén minden bejövő üzenetre reagál az eszköz ebben a módban, de monofón módon - csak egy hang szólhat egyszerre, a második hang megszólaltatása az elsőt elnémítja. Ez az üzemmód nem túl hasznos, mert bár sokszor van szükség monofón hangra (pl. szaxofon, fuvola, vagy régi analóg monószintetizátorok utánzásánál), ezt célszerűbb a hangprogramozás szintjén megoldani.

3. üzemmód: OMNI OFF, POLY
A leggyakrabban használt üzemmód, melyben a hangszer polifonikusan reagál azon a csatornán, melyet számára kijelöltünk. Ne feledjük: a multitimbrális hangszerek nemcsak egy csatornán vehetnek, hanem 6-on, 8-on, vagy akár mind a tizenhaton is, hangszertől függően! Ekkor 6, 8, vagy 16 független, polifón hangszerként használhatjuk az eszközt.

4. üzemmód: OMNI OFF, MONO
A hangszer beállított csatornáin fogja fogadni a bejövő üzeneteket, és csatornánként monofón módon reagál rájuk. Ez a gitárosok játékához hasonlatos (ezért használják elsősorban a gitárszintetizátoros megoldásoknál) - a húrok egymástól függetlenül szólhatnak, de egy húr egyszerre csak egy hangot adhat. A gitár-MIDI átalakítókkal használt szintetizátorokat érdemes ilyen üzemmódban használni, mert érdekes hatáshoz lehet vele eljutni: minden húr más hangszer hangján játszhat, és a hajlítások az eredetihez hasonlóan, húronként érvényesülnek.

Az üzemmódok beállítását a legtöbb esetben a hangszer kezelőszerveivel is el lehet érni, de külső MIDI-üzenettel is utasítani lehet az eszközt a megfelelő üzemmód beállítására. Ezen üzenetek kódjai az egyik hangjellegű csatornaüzenet speciális esetei, ezért ott ismertetjük majd.

2. Hangjellegű csatornaüzenetek

Az üzeneteknek ez a típusa hordozza magában a zenei előadás elemi történéseit; e csatornaüzenetek valamilyen sorozata egyértelműen maghatároz egy előadást. A csatornaüzenetek általánosan egy státuszbájttal kezdődnek, és egy vagy két adatbájttal záródnak, az adatbájtok száma a státuszbájttól függ. A következő néhány oldalon valamennyi csatornaüzenet felsorolásra kerül, a hozzájuk rendelt kódokkal együtt. Az üzenet neve után a kódok az olvashatóság kedvéért hexadecimális (azaz 16-os számrendszerbeli) formában lesznek megadva.

Note On
Kód: 9n bb vv

Ezt az üzenetet az adó hangszer akkor küldi, amikor zenei billentyűzetén lenyomtak egy billentyűt. A vevő, csatornaegyeztetés után, megszólaltathatja ugyanazt a hangot. Ez a hang addig fog szólni, amíg az adó egy másik üzenettel le nem állítja.

A legelső bájt a státusz; felső hexadecimális helyiértékén a 9-es jelöli a Note On parancsot. Alsó helyiértékét ('n') a küldő saját MIDI-adócsatornája értékével fogja kitölteni. Egy rövid megjegyzés: a hangszerek fogadó- és adócsatornájának értéke a legtöbb esetben külön értékre állítható.

Figyelem: míg az eszközök kezelőszerveivel a csatornaértéket 1 és 16 között mozgathatjuk, a státuszbájtba 4 biten kódolt érték természetesen 0 és 15 között változhat; a frontpanelen beállított 1-es csatorna 0-vá lesz kódolva az üzenetben, a 2-es 1-gyé, és így tovább, a 16-os 15-té.

'bb' értéke jelöli azt, hogy melyik billentyű lett lenyomva, értéke 0-tól 127-ig terjedhet, mivel a legfelső bit 0, az adatbájt jellege miatt. Ez 128 különböző érték, oktávonként 12 billentyűvel számolva több mint tíz oktávot le tudunk írni ezzel a módszerrel, ez mindig elegendő.

'vv' értéke azt tartalmazza, hogy a billentyűt milyen sebességgel nyomták le; nagyobb sebesség nagyobb értéket, kisebb sebesség kisebb értéket eredményez. Ha a billentyűzet nem érzékeny a leütés erejére, minden sebességre ugyanazt a számot fogja itt küldeni, ami vagy előre beállítható a felhasználó által, vagy egy konstans érték, ami szinte mindig a középérték, vagyis a decimális 64. A 'vv' érték 1 és 127 között változhat, a 0 speciális eset, amint később látni fogjuk.

Note Off
Kód: 8n bb vv

Az előző üzenet fordítottja: a billentyű felengedését jelenti. Az addig érvényes hang a lecsengési fázisba kerül, fokozatosan elhalkul. A kódok jelentése is nagyon hasonló az előzőhöz: a 8-as a Note Off státusz jele, 'n'-ben a csatorna van kódolva, 'bb' a billentyű száma, 'vv' pedig azt tartalmazza, hogy milyen gyorsan lett a billentyű felengedve. A piacon nem túl sok hangszer van, amely 'vv' értékét értelmezné, vagy - vezérlő szerepkörben -, küldené, bizonyos mechanikus hangszerek utánzásánál azonban szükség lehet rá.

A MIDI kialakulása idejében a Note Off megvalósítását másképp képzelték. A Note Off üzenet tulajdonképpen egy Note On lett volna, melyben a 'vv' értéke 0, így külön felengedési sebességet már nem is lehetett volna definiálni. A '9n bb 00' üzenetet, mint Note Off-ot, több helyütt implementálták, így végül, mivel nagy zavart nem okoz, bekerült a MIDI-specifikációba. Manapság nemigen találni olyan hangszert, mely a Note Off -ot így küldené, vétele, értelmezése azonban kötelező.

Pitch Bend
Kód: En aa ff

Az üzenetet az adó akkor küldi, ha a zenész hajlítást végez. A hajlítás két irányba mehet: a hangmagasság felfelé vagy lefelé változhat. Billentyűsök ezt a hangszer bal oldalán lévő karral vagy kerékkel, gitárosok a szokásos hajlítási módszereikkel érhetik el.

A státuszbájt felső része ('E') a Pitch Bend kódja, alsó része természetesen a csatorna száma. Az ezt követő két adatbájt alsó 7-7 bitje hordozza a hajlítás mértékét. E két bitmezőt egyetlen, 14 bites mennyiségként kell felfogni, amelynek alsó 7 bitje az első adatbájt, felső 7 bitje a második. Ilyen módon 16384 különböző hajlítási értéket tudunk megkülönböztetni, amelynek egyik fele (8193-től 16383-ig) a felfelé hajlítást, másik fele (0-8191 között) a lefelé hajlítást ábrázolja. A középállást, amely a hajlítás nélküli állapot, a 8192-es érték jelenti.

A hajlítás a hajlítókarral vagy a kerékkel természetesen folyamatos mozdulat. Ezt a folyamatos eseményt a hangszer mikroprocesszora csak különböző, diszkrét időpillanatokban tudja megfigyelni, és a megfigyelés eredményét küldi a MIDI-kimenetre. Ha nem történik semmi a hajlítóeszközzel, természetesen nem kerül ki semmilyen hajlítóüzenet a MIDI-vonalra, de bármilyen kis mozdítás üzenetek sokaságát generálja; a processzor nagyon finom elemi lépésenként közli a hajlítási folyamatot a vevővel. Ennek a finomságnak az elvi maximális felbontása a 14 bit, vagyis a 16384 lépcső, de sok gyártó megelégszik a 8-10 bites felbontással.

Polyphonic Pressure
Kód: An bb pp

A billentyűkre nehezedő nyomás erősségét érzékelni képes hangszerek közül azok küldik ezt az üzenetet, amelyek billentyűnként más-más nyomásértéket képesek érzékelni. Ha egy ilyen billentyűzeten egy három hangból álló akkordot tartunk lenyomva, akkor a billentyűzet érzékelni fogja, hogy a tartott billentyűkre milyen nyomás jut egyenként: a zenész egyenként manipulálhatja az akkord hangjait, a billentyűk tartása közben történő nyomáserősséggel.

A kódolás  hasonló az eddigiekhez: 'A' a státuszkód, alatta 'n' a csatorna, 'bb' a billentyű kódja, 'pp' az aktuális nyomáserősség, 0 és 127 között. A nyomáserősséggel leginkább a vibrátó sebességét vagy mélységét, esetleg hangmagasság-eltolást lehet előidézni, ennek megválasztása a vevő feladata.

Channel Pressure
Kód: Dn pp

Szintén nyomáserősség közlésére szolgáló üzenet, de az előzővel ellentétben ezzel nem lehet közölni az egyes billentyűkre vonatkozó nyomást, csak egy általános értéket a teljes billentyűzetre, vagyis a csatornára. Ez egy egyszerűbb, olcsóbb megoldás, sok nyomásérzékeny billentyűzet így működik.

Státuszkódja 'D', utána a csatorna 'n', ezt mindössze egy adatbájt követi, 'pp', amely a nyomás erősségét írja le, 0 és 127 között.

Program Change
Kód: Cn pp

Ezzel az üzenettel a vevő aktuális hangprogramját választhatjuk ki, az előre beállított, vagy a felhasználó által készített hangzások közül.

A státuszkód 'C', 'n' a csatorna, 'pp' pedig a hangprogram száma. Ez a szám 0 és 127 között változhat természetesen, így ezzel az üzenettel 128 hangprogram közül tudunk válogatni. Ez a kezdetek kezdetén elégnek tűnt, nem volt ugyanis olyan hangszer, amely ezt kihasználta volna. Ma már, szinte minden hangszer túllép ezen a határon: erre először a gyártók saját megoldásaikat voltak kénytelenek kidolgozni, végül 1990-ben született egy egységes ajánlás, amely a Bank Select nevet kapta. A későbbiekben még erről is esik szó.

Fontos megjegyezni, hogy a hangprogramok számozása 1-től 128-ig szokott terjedni a felhasználó felé. A megfeleltetés a csatornákéhoz hasonló: a 0-ás kódú hangprogram a felhasználó felé 1-esként látszik, az 1-es kódú 2-nek, és így tovább, legvégül a 127-es 128-nak.

Control Change
Kód: Bn cc vv

A legnépesebb üzenettípus, amely igen különböző célokra szolgál. Általános célja a zenei előadás valamennyi, az eddigiekbe nem sorolható kifejezési eszközének (pl. pedálok, moduláció) valós idejű közvetítése.

A 'B' státuszt az 'n' csatornakód követi, mögöttük 'cc' a kontroller azonosítója, 'vv' pedig az érték, melyre a kontrollert állítani kell. Ez azt jelenti, hogy ha 'cc' értéke 1, akkor a modulációkerékre vonatkozik az üzenet, és ha ezt 0 érték követi, nincs moduláció, ha 127, akkor maximális a moduláció. A közbülső értékek természetesen arányosan közepes modulációt jelentenek.

Több olyan kontrollert is találhatunk, amelynek csak két értelmes állapota van, például a kitartási pedál, ami vagy le van nyomva, vagy nem. A vezérlő hangszerek a bekapcsolt értékre 127-et, a kikapcsoltra 0-t küldenek. A vezéreltek ilyen kontrollerüzenetek vételekor az adatbájt második legnagyobb helyiértékű bitjét figyelik, vagyis bekapcsolnak, ha 64-127 közötti adatbájt, és kikapcsolnak, ha 0 és 63 közötti érkezik.

A kontrollerek legtöbbjénél elég a 7 bites adatmező a vezérelt mennyiség ábrázolásának felbontására, ha azonban ez mégsem lenne kielégítő, erre nézve is van kész megoldás. Mint a táblázatból kiderül, a folytonos (nem kapcsolójellegű) kontrollerek azonosítói nagyrész a kontrollereket tartalmazó táblázat elején, a 0-tól kezdve helyezkednek el. A megállapodás szerint a 0 és 31 között elhelyezkedő kontrollerek adatmezői alá, mint kisebb helyiértékű bájt, hozzárendelhető a 32-től 63-ig terjedő kontrollerterület. Ezek 7 bites adatmezője járul hozzá a felbontás növeléséhez; például, ha az 1-es kontrollert a 16-os és 17-es pozíció közé akarom vezérelni félúton, akkor az 1-es kontrollerre 16-ot, a 33-asra pedig 64-et írok. A 0-31 tartományban elhelyezkedő kontrollereket ezért 14 bites kontrollereknek, a 64-95-ben lévőket pedig 7 bites kontrollereknek nevezzük, mert ezek felbontása nem terjeszthető ki az előbbi módon; a 96 feletti terület más célokra foglalt.

A 0 és a 32 azonosítójú kontrollert a MIDI egyik, nemrég érvénybe lépett kiterjesztése speciális jelentéssel ruházta fel. A Program Change üzenetnél már láttuk, hogy 128 hangprogram közül lehet válogatni ezzel az üzenettel. Ez manapság már kevés, ezért vezették be a Bank Select üzenetet, amely nem más, mint a 0 és 32 jelű kontrollerekre kiírt 14 bites mennyiség. Ezzel 16384 különböző hangkészletet címezhetünk meg, melyek mindegyike 128 hangprogramot tartalmaz - ezek közül már a hagyományos Program Change üzenettel választhatunk. Ez az irdatlan hangprogrammennyiség valószínűleg elég lesz egy ideig ...

A MIDI 1.0 specifikációban látott először napvilágot a regisztrált és nem regisztrált paraméterek fogalma. Ezek voltaképpen a hagyományos Control Change kiterjesztései - ha kifogyunk a 128 lehetséges kontrollerből, legyen tartalék.

A regisztrált paraméterek olyan kontrollereket takarnak, amelyeket minden hangszeren egyformán kell implementálni. Eddig négy ilyet definiáltak, melyek: a hajlítókerék érzékenysége, a durva- és a finomhangolás, valamint a hangolási táblázatok közötti kapcsoló. A nem regisztrált paraméterek alá tartozó mennyiségeket a gyártó szabadon rendelheti bármilyen, tetszése szerinti funkcióhoz. Ezekről természetesen a termék felhasználói kézikönyve tájékoztat.

A kibővített kontrollerek kezelése sajnos nem olyan egyszerű, mint a hagyományosaké. A folyamat a következő: először a megfelelő kontrollerek segítségével ki kell jelölni, hogy melyik kiterjesztett kontrollert akarjuk használni. Miután ezt kijelöltük, az értéket a Data Entry, a Data Increment, és a Data Decrement kontrollerekkel módosíthatjuk.

A Control Change üzenetek további típusa a már említett üzemmód-jellegű csatornaüzenetek csoportja. A 121 és 127 közé eső azonosítójú kontrollerek ezek számára vannak lefoglalva, a táblázat őket elkülönítve tartalmazza. Természetesen ezek nem valódi kontrollerek, hogy mégis ide kerültek, az annak köszönhető, hogy itt lehetett már csak helyet találni számukra.

Hét darab ilyen üzenet van, közülük négy a már említett MIDI-üzemmódokat állítja be. A további hármat lássuk röviden: a Reset All Controllers valamennyi, a rendszerben használt kontroller értékét és a hajlítás (Pitch Bend) pozícióját alaphelyzetbe hozza. Az All Notes Off azonnali Note Off parancsot jelent a csatorna összes, kitartási fázisban lévő hangja számára, a Local Control paranccsal pedig leválaszthatjuk a hangszer billentyűzetét a hanggenerátorokról; a billentyűzeten bármit játszunk, nem jut el a hangszer saját hanggenerátoraihoz, csak a MIDI-kimenetre, a hanggenerátorok pedig csak a MIDI-bemenetről fogadnak el üzeneteket. Mintha csak külön dobozokban elhelyezkedő billentyűzetünk és hangmodulunk lenne ...


















































































3. Egyszerű rendszerüzenetek

Az üzenetek e típusa a rendszer valamennyi berendezése által használható, a státuszbájtok így nem tartalmaznak csatornakódot sem.

MTC Quarter-Frame
Kód: F1 nd

A MIDI Time Code protokollhoz tartozó üzenet, melyet itt részletesen nem fogunk ismertetni. Az üzenetet a MIDI Time Code generálására alkalmas berendezések generálják, az időkód tényleges pozícióját jelezve.

Song Position Pointer
Kód: F2 aa ff

Dalszerkesztő berendezések, vagy ilyen célt szolgáló számítógépes programok küldik ezt az üzenetet, a dal lejátszásának kezdetén. Célja az, hogy a rendszerben esetleg elhelyezkedő további MIDI-lejátszókat tájékoztassa arról, hogy honnan kell a lejátszást indítani (nem biztos ugyanis, hogy az elejéről). Ezzel, valamint a Timing Clock és a Start-Stop-Continue üzenetekkel megoldható, hogy egy rendszer több független dalszerkesztőt tartalmazzon, melyek ritmikailag szinkronban tudják lejátszani tárolt dalaikat.

A Song Position Pointer (vagy SPP) 14 bites adatmezője írja le, hogy a lejátszás honnan induljon. Ha ennek értéke 0, a lejátszás az elejéről indul. A dalban előrehaladva, az SPP értéke minden zenei 1/16 időköz elteltével eggyel növekszik, tehát a második ütem kezdetén például 16, a második ütem felénél 24, a harmadik ütem kezdetén 32, négynegyedes ritmusban természetesen.

Song Select
Kód: F3 dd

Ha egy dobgépből vagy egy dalszerkesztő memóriájából ki szeretnénk választani egy dalt, hogy lejátsszuk, ezt az üzenetet kell használnunk. Az F3 státusz után a 'dd' jelű mező fogja tartalmazni a lejátszandó dalt. Magát a lejátszást a 'Start' üzenettel indíthatjuk (lásd később).

Tune Request
Kód: F6

Ha a vevő hangszer képes magát behangolni, ennek az üzenetnek a vétele után azonnal el kell indítania ezt a procedúrát. Manapság ennek az alkalmazása elég ritka, mivel a mostani hangszerek hangolása nagyon stabil, a kvarcvezérelt, mikroprocesszoros alapon működő hanggenerátorok miatt. A 80-as évek elején, az analóg szintetizátorok fénykorában több, önhangolásra képes hangszert ismerhettünk, például a legendás Roland Jupiter 6 polifón szintetizátort.

4. Valós idejű rendszerüzenetek

Ide szintén a teljes rendszernek szóló üzenetek tartoznak, amelyek általában zenei, ritmikai szinkronba állítással kapcsolatosak. Érdekes tulajdonságuk, hogy bárhol előfordulhatnak, akár teljes MIDI-üzenetek bájtjai közé bújtatva is! Mivel valamennyi, ide tartozó üzenet egy bájt hosszú, ez nagy zavart nem okoz, a feldolgozás nem bonyolódik el végzetesen. Például, a vevő észlelheti azt, hogy egy Note On státusz vétele után egy Timing Clock státusz érkezett, ami egy valós idejű rendszerüzenet. Nincs esély arra, hogy ezt összekeverje a helyette várt adatbájttal, mert a legfelső bit egyértelműen jelzi, hogy a vett bájt: státusz. Ennek feldolgozása után visszatérhet a Note On értelmezéséhez.

Timing Clock
Kód: F8

Dalszerkesztők és dobgépek szinkronizációs, időzítési üzenete. A kibocsátó eszköz egy zenei negyedhang alatt 24-szer küldi el, egyenlő időközönként, ezzel tájékoztatva a rendszerre felfűzött hasonló eszközöket a lejátszás tempójáról. Általában nemcsak lejátszás alatt szokták küldeni, hanem állandóan, és a lejátszás kezdetét egy Start üzenet küldésével jelzik.

Start
Kód: FA

A dalszerkesztő a lejátszás indításakor ezt az üzenetet küldi, jelezve a többi eszköznek, hogy lejátszási állapotba lépett.

Stop
Kód: FC

Ez az üzenet a lejátszás leállítását követően kerül ki a vonalra. Az üzenetet vevőnek nem szabad törölnie belső Song Position Pointerjét, mellyel saját maga számára nyilvántartja, hogy hol tart a lejátszás, mert egy Continue üzenet hatására ott kell folytatnia, ahol befejezte.

Continue
Kód: FB

Ezt az üzenetet az előbb említett szituációban lehet küldeni, vagyis a lejátszás leállítása utáni közvetlen folytatásnál. A vevő is onnan fogja játszani saját anyagát, ahol abbahagyta.

Active Sensing
Kód: FE

Az Active Sensing üzenet egyetlen célja a MIDI-összeköttetés ellenőrzése. Az adó, ha semmilyen más üzenetet nem küldött, 300 milliszekundum elteltével ezt az egy bájtos üzenetet teszi a vonalra. A vevő, ha 300 milliszekundumnál hosszabb ideig nem érzékelt semmilyen bejövő adatot, feltételezi, hogy a kapcsolat megszakadt, valamennyi, MIDI-ről indított hangot kikapcsolja, és visszatér normális működési állapotába. Az Active Sensing adása és értelmezése - a vételi oldalon - egyaránt opcionális, senki számára nem kötelező.

System Reset
Kód: FF

Ezt véve, a vevő hangszer alaphelyzetbe áll vissza, vagyis a még hallható hangokat kikapcsolja, polifón üzembe áll, a kontrollereket alaphelyzetbe hozza, leállítja a dal lejátszását, törli az SPP-t.

System Exclusive
Kód: FO id xx, ... yy F7

Ez az üzenet alkotja az ötödik típust; eredetileg azzal a céllal jött létre, hogy a kizárólag eszközspecifikus információk is átvihetők legyenek a MIDI-n keresztül. A legegyszerűbb példa: képzeljük el, hogy egy adott hangszer, mondjuk egy Roland D50-es szintetizátor hangprogramjait át szeretném tölteni egy másik D50-be. Nyilván egy Yamaha TX16W nevű mintavevő, de akár egy más tipusú, és azonos gyártmányú szintetizátor, a Roland JX8P sem tud ezekkel a hangprogramokkal mit kezdeni, csak a hálózatba kapcsolt D50-esek. Az exkluzív kommunikációt úgy kell tehát megvalósítani,  hogy a rendszerben bármely két azonos típusú eszköz a többiek zavarása nélkül tudjon adatot cserélni.

Az eszköztől függő információk közlésének, valamint vételének nemcsak két azonos hangszer között lehet értelme, hanem egy számítógép és egy hangszer (vagy más eszköz) kapcsolatában is. Ebben a relációban a számítógép letöltheti magának a hangszer hangprogramjait, mint adatokat, saját lemezes  tárolóin archiválhatja, illetve módosíthatja és visszatöltheti őket. Mivel mindez, ami itt szerepel, eszközfüggő exkluzív protokollal folytatható le, ezért ezek a könyvtárazó és hangszerkesztő programok csak azokkal az eszközökkel képesek együttműködni, melyekre felkészítették őket.

A folyamat megvalósítása a következő: az F0 státuszkód MIDI-vonalon való megjelenése közli az eszközökkel, hogy exkluzív adatcsomag fog érkezni. Az ezt követő bájtot valamennyi vevő elkapja, mert ez a gyártó azonosítója, aki azt az eszközt készítette, melynek az üzenet szól. A fejezet végén, a táblázatban néhány nagyobb gyártó azonosító kódjait láthatjuk, ezek egyezményekben rögzített értékek, melyeket nem illik más célra használni. 1 és 124 közötti tartományban mozoghat ez az azonosító, az 125, 126, 127 értékek más, később ismertetendő célokra foglaltak.

Amennyiben kifogyunk a 124 értékből, a megoldás az, hogy ez a gyártóazonosító nem feltétlenül egy bájt hosszú; az előbb feltűnhetett, hogy a 0 érték kimaradt a felsorolásból. Ha az azonosító értéke 0, akkor a következő két bájtot is értelmezni kell, mert ezek fogják tartalmazni az így kiterjesztett gyártóazonosítót. Ezzel újabb 16384 értéket nyertünk.

A gyártóazonosító vizsgálata után az eszköz kétféle következtetésre juthat. Ha nem az ő azonosítókódja érkezett, akkor az összes további adatbájtot figyelmen kívül kell hagynia mindaddig, amíg az F7 státuszkód be nem érkezik, amely az exkluzív üzenet végét jelzi. Ha viszont a vett gyártóazonosító a sajátja, onnantól kezdve a gyártó saját protokollja lép életbe, aszerint kell cselekednie. Az üzenetnek nincs rögzített maximális hossza, az egyetlen megkötés az, hogy zárásként F7-nek kell érkeznie.

Az exkluzív protokollok nagyon különbözőek lehetnek egymástól. Közös jellemzőjük általában, hogy tartalmaznak még egy eszközazonosítót is, hiszen szinte minden gyártó sok, különböző célokat szolgáló eszközt készít, melyek egymással való kommunikációja általában értelmetlen.

Szintén általános jellemző valamilyen egyoldalú hibaellenőrzés alkalmazása, amely az üzenet végén egy egybájtos ellenőrző összegben szokott megnyilvánulni. Egyéb vonatkozásokban a helyzet nagyon eltérő; van, ahol egyszerű az adatcsere megoldása, a hangprogramokat ömlesztett adatok sorozataként lehet venni, igényesebb, kidolgozottabb rendszerekben viszont kis adatcsomagokkal, kézfogásos üzemmódban, hibaellenőrzéssel és visszajelzéssel, vagyis intelligens módon lehet az adatcserét megejteni. A Roland eszközök jó példát adnak erre a korrekt, intelligens megoldásra, hiszen az itt felsoroltakon kivül még az az előnyük is megvan, hogy a hangszer programtárolóját közvetlenül lehet címezni MIDI-ről, ami rendkívüli hajlékonyságot kölcsönöz, a programozhatóságot tekintve.

Néhány sorral feljebb említettük, hogy a 125, 126, 127 értékű gyártóazonosítók foglaltak. Céljuk a MIDI bővíthetőségének fenntartása volt; kiaknázásuk már el is kezdődött. A 125-ös kód fejlesztési szempontok miatt foglalt, valószínűleg egyhamar nem is lesz betöltve, szemben a 126-ossal, amely az univerzális nem-valós idejű exkluzív rendszerüzenetek azonosítója. Ez az üzenettípus, az eddigi exkluzívoktól eltérően, nem eszközfüggő, hanem előzetes ajánlásokkal szabályozott, általános protokoll, már számos MIDI-bővítés használja ezt az üzenettípust. Időben elsőként a Sample Dump Standard, röviden az SDS érkezett. Ez az ajánlás, melyet 1986 januárjában tettek közzé, azt teszi lehetővé, hogy teljesen különböző típusú és gyártójú mintavevők elküldhetik egymásnak saját hangmintáikat.

Másodiknak, nem sokkal az SDS után, a MIDI Time Code következett, amely a video- és hangtechnikában használatos SMPTE-időkód MIDI-re fordított változata. Már találkoztunk vele, hiszen az egyszerű rendszerüzenetek között is volt egy státuszkódja, néhány, ide vonatkozó üzenete pedig az univerzális nem valós idejű exkluzív rendszerüzenetek közé került.

Említésre méltó még a MIDI File Dump ajánlás, amely számítógépes adatfájlok, elsősorban szabványos MIDI-fájlok közlésére ad megoldást, és a MIDI Tuning Standard, mellyel hangolási információ küldhető és vehető, ilymódon a teljes billentyűzet áthangolható a hagyományos 12-fokú rendszertől eltérő skálára - ha ezt a lehetőséget implementálják a hangszerre. Hátravan még a 127-es azonosítókód, amely, most már nem nehéz kitalálni, az univerzális valós idejű exkluzív rendszerüzenetek jele. Ezek általában rövidebb, azonnal végrehajtandó üzenetek, mint például a MIDI Time Code időzítő üzenetei, a MIDI Show Control, amely a MIDI-vezérelt világítástechnikát egységesíti, vagy a MIDI Machine Control, amely a stúdiómagnók vezérléséhez tartalmaz új üzeneteket.

2 komment

A bejegyzés trackback címe:

https://midi.blog.hu/api/trackback/id/tr7927088

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Rozsinszky Andor 2007.04.29. 08:06:44

Tisztelt Szerkesztők! Kérem segítsenek a választásban! Azt szeretném megvalósítani, hogy az alkalmazott egyszerű MIDI vezérelt billentyűzet nélküli hanggenerátort kromatikusan tudjam hangolni. Tehát egy példával élve. Szeretnék egy olyan hanggenerátorhoz hozzájutni,hogy én mondjuk E dúrban játszom, de a hanggenerátorból kijövő zene F vagy Fis vagy G dúrban szólna.
Még egyszerübben ez olyan hatást keltene, mintha a zenész csal C dúrban tud játszani,de ezzel bármilyen hangnemben megtudna szólalni a zene beállítástól függően.Várom szives válaszukat! Rozsinszky Andor.

gg 2007.04.30. 06:31:22

Kedves Andor, ezt a funkciót minden hangmodul tudja, keresse a Transpose beállítást, ami gyárilag 0 értékre van állítva, és ha +1, +2 stb értékekre álítja, azzal felfelé transzponálja az összes megszólaló hangot félhangonként, ha pedig -1, -2 stb akkor lefelé.