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 szabványos MIDI-fájlok

2007-01-10 10:08:00

A szabványos MIDI-fájloknak magához a MIDI-csatlakozóhoz nincs túl sok köze; ez egy olyan ajánlás, amelyet 1986-ban bocsátottak ki, és amely arra szolgál, hogy dalszerkesztők által létrehozott számítógépes fájlok felépítésére - amelyek természetesen félkész vagy kész dalokat tartalmaznak, - egységes javaslatot tegyen. Azok a dalszerkesztők, amelyek ezt az ajánlást támogatják, be tudják olvasni, le tudják játszani, és módosítani tudják egymás dalait. A MIDI elnevezés arra vezethető vissza, hogy az adatállomány belső tárolási formájának egy része visszavezethető a MIDI-üzenetekre. Az eddigiek alapján ugyanis nyilvánvaló lehet, hogy minden dal vagy zenemű felépíthető MIDI-üzenetek időben megfelelően összeállított sorozataként. A dal tárolása tehát tulajdonképpen a MIDI-üzenetek, valamint bekövetkezésük időpontjának tárolása.

A szabványos MIDI-fájlformátum (Standard MIDI Files, röviden SMF) létrejötte előtt a dalszerkesztők egymással nemigen voltak kompatibilisek. Tárolásra minden gyártó a saját, jól bevált formátumát használta, esetleg lehetővé tette más, általuk népszerûnek tartott riválisuk formátumának olvasását, azzal a reménnyel, hogy sikerül az idegen szoftvert alkalmazók táborából magához vonzani néhány felhasználót, akiknek így nem kell kidobniuk régi anyagaikat. A közös formátum ötlete az amerikai Opcode Systemstől ered; ők nagyon jó minőségû, Apple Macintoshra készített dalszerkesztőikről voltak elismertek. Az általuk használt koncepció alapján jött létre végül az SMF, amely azért nem szorította ki a gyártók saját formátumait, mivel nem tartalmaz, nem is tartalmazhat minden apró kis nüanszot, amelyet a különböző dalszerkesztők egymással szemben fel tudnak mutatni. A hangsúly a közös vonásokon van, vagyis a MIDI-üzenetek és időzítéseik mellett még egy sor olyan információ is elhelyezhető a MIDI-fájlban, amelyeket minden dalszerkesztőben megvalósítanak: az egyes sávok nevei, az előjegyzés stb.

Mire jó a közös formátum - kérdezhetjük, hiszen, gondolhatjuk, a zenész vesz egy dalszerkesztő programot vagy dobozt, és azt használja; dalait lementi ennek saját formátumában, és ugyanoda tölti vissza másnap. Idáig rendben is van minden, de mi történik, ha stúdióba megy, ahol másféle számítógép, más program üzemel - kezdheti elölről a munkát? Mi van akkor, ha koncerten alapként akarja használni a szerkesztett anyagot - kiviheti az egész számítógépet monitorostul, dobozostul, billentyűzetestül (amitől a koncert úgy fog majd kinézni, mint egy technóbuli). Mennyivel egyszerűbb ilyen esetben venni egy zsebben is elférő MIDI-lejátszót, amely olvassa ugyanazt a közös formátumot, amit a számítógép ki tud menteni, ebbe betöltjük az anyagot, és elindítjuk a lejátszást úgy, hogy a nézőtéren senki nem vesz észre semmit! Vagy, az első példára visszatérve, mennyivel egyszerûbb besétálni a stúdióba egy floppyval a zsebünkben, amelyre a közös formátumban írtuk fel a dalt, és amit a stúdió gépe is probléma nélkül olvas! Mennyivel egyszerűbbé vált a zenetanítás azzal, hogy a boltokban (vagy az interneten) hozzáférhetőek olyan elektronikus anyagok, amelyek ismert zeneműveket tartalmaznak SMF-formátumban - ezeket le lehet játszani, kottájukat ki lehet nyomtatni, szólamokra lehet bontani, vagy ellenkezőleg, egyes szólamokat el lehet némítani, így a tanítvány manuálisan játszhat a gépi kíséret mellett. És ha valaki nem elégszik meg egyetlen dalszerkesztő programmal (az egyes programok extra funkciói mindig különbözőek), ezután használhat kettőt, hármat, vagy ahányat csak elbír a pénztárcája - a zenei anyagokat szabadon átviheti egyikből a másikba.

Ezek az érvek eléggé meggyőzőek voltak a MIDI-ajánlások európai és amerikai gondozóinak is, ennek volt köszönhető a viszonylag korai, 1986-os bemutatási időpont. Egy bökkenő volt - a japán gyártók egy darabig szinte tudomást sem vettek a dologról. Kezdetét vette egy köztes állapot; a japán forrásból származó eszközök a szabványosodott, szinte paradicsomi állapotokba nem illettek bele. 1991-ig tartott ez a korszak, a japán gyártók szövetsége ekkor végre elfogadta az SMF-et, és az azóta kijött valamennyi japán szekvenszertermék ismeri az SMF-et is.

A MIDI-fájlok belső szerkezetének ismertetése előtt szót kell ejteni egy speciális számábrázolási formáról, a változó hosszúságú mennyiségekről, amelyek különösen fontos szerepet játszanak a MIDI-fájlok felépítésében. A MIDI-fájlokban az események bekövetkezése közötti időkülönbségeket tárolják, amelyek lehetnek hosszabb idődarabok is - ha például egy szólam néhány percre kimarad, majd újra belép -, és lehetnek nagyon rövid idők, például a hajlítókerék apró kis moccanásai is üzenetek egész tömegét generálják. A takarékosság érdekében tehát érdemes volt kitalálni egy olyan tárolási formát, amellyel a kis mennyiségeket rövidebben, a nagyobbakat pedig egy kicsit hosszabban, de mégis pontosan lehet leírni. Ezt változó hosszúságú mennyiségnek nevezték el, megvalósítása pedig a következő. Az ábrázolható maximális számhosszúság egy 28 bites mező, amit maximum négy bájton írunk le. Az ábrázolandó 28 bites mennyiséget négy darab hét bites szakaszra vágjuk, és ezek közül a felső helyiértékeken szereplő, csak nullát tartalmazó szeleteket elhagyjuk. Maradt valahány darab hét bites mező, ezeket nyolc bitre egészítjük ki úgy, hogy a legalsó helyiérték elé egy '0' értékű bitet írunk, az összes többi elé pedig '1' értékűt. Ezzel kész is volnánk: a mennyiség ábrázolásának hossza egy és négy bájt között mozoghat; a 0 és 127 közti számok ábrázolásához pontosan egy bájt is elegendő, a nagyobbaknak pedig mindig arányosan egyre több, kettő, három vagy négy. 

Az SMF-specifikáció a MIDI-fájlok három típusát vezette be. Format 0 vagy Type 0 nevet kapnak azok a fájlok, amelyek ömlesztetten, egy sávon tartalmazzák a teljes dalt, míg a Format 1 vagy Type 1 fájlok a dalszerkesztőben született struktúrának megfelelően, sávokra bontva. A Format 2 vagy Type 2 fájlok nem folytonos, hanem részekre vágott zenedarabokat tartalmaznak, ezeket az úgynevezett pattern-orientált dalszerkesztők tudják használni.

A MIDI-fájlok bájtjai úgynevezett tömböket alkotnak. A tömbök két tpusba sorolhatók, ezek fejléc és a sáv. Minden MIDI-fájl a fejléctömbbel kezdődik, melyet Format 0 esetében egy, Format 1 esetében több sávtömb követ. A tömbök felépítése a következő: minden tömb első négy bájtja a tömb típusjelzője; fejléc vagy sáv, de a jövőben születhetnek új tömb típusok is. Ez a négy bájt úgynevezett ASCII-kódban tartalmazza az 'MThd' bájtsorozatot fejléc, vagy az 'MTrk'-t sáv esetén. A típusjelzőt egy négy bájtos, nem változó hosszúságú mező követi; ebbe írják bele a tömb hosszát bájtokban, nem számítva az első nyolc bájtot (típus+hossz). Ha tehát itt egy 20-as érték szerepel, az azt jelenti, hogy a típus négy bájtját és a hossz négy bájtját húsz adatbájt követi.

A fejléc formátuma nagyon egyszerű: mindig tizennégy bájt hosszú, és előre meghatározott mezői vannak. A kezdő négy bájt a típus, amelybe itt 'MThd' van írva, a következő négy bájt a hossz, ami a fejlécnél mindig hat, tehát ezután még hat bájt fog következni, melyeket három darab 16 bites számnak kell értelmezni. Az első ilyen szám a fájl formátumát jelzi, vagyis 0, 1, vagy 2 lehet (Format 0, Format 1, Format 2). A következő szám a sávok számát jelzi (Format 0 esetében ez mindig 1), a legutolsó szám pedig a fájl legkisebb időegységének jelentését írja le, ami két megközelítésben értelmezhető. Ha e szám legfelső bitje 0, az azt jelenti, hogy a szám maradék 15 bitje azt jelöli, hogy a fájlban egy zenei negyedhangot időben hány kis részre osztottak. Két, egymást követő üzenet között eltelt idő ennek a kis időszeletnek az egész számú többszöröse lehet, és a fájlban is így szerepelnek majd az időkülönbségek. Ha viszont a szám legfelső bitje 1, akkor ezt a kis időegységet nem a zenei negyedhangból, hanem a másodpercből és törtrészeiból kell származtatni, ami az időkódalapú rendszereknél hasznos. A maradék 15 bit felső hét bitje az időkódformátumot tartalmazza, értéke az úgynevezett kettes komplemens kódolásban -24, -25, -29, 30 lehet (vájtfülűeknek: a -29 a "30 frame/sec drop-frame" formátum kódja). A maradék nyolc bit azt adja, hogy egy képkocka idejét (amely az előzőektól függően 1/24, 1/25, 1/30, vagy 1/29.96 másodperc) hány kis időszeletre kell osztani. Az így nyert kis időegység ugyanúgy kezelendő, mint az előbb, vagyis ez lesz a fájl elemi időegysége.

A sávok MIDI-üzenetek sorozataként foghatók fel. (Egyes esetekben olyan üzenetek is közéjük keveredhetnek, amelyek nem valódi MIDI-üzenetek, de ez a helyzeten nem sokat változtat.) A tárolási forma sémája egyszerű, és megegyezik mindhárom (0, 1, 2) formátumban. Az első négy bájt a típus, ami itt 'MTrk'. A következő négy bájt az adatbájtok száma, innen lehet megtudni, hogy hány bájtot kell feldolgozni, mint MIDI-eseményt. A hossz után közvetlenül az üzenetek sorozata következik, amely úgy fest, hogy először az szerepel, mennyi idő múlva következik be az esemény (a sáv utoljára bekövetkezett eseményéhez viszonyítva), majd az üzenet bájtjai. A két üzenet közötti időt változó hosszúságú mennyiségként kell ábrázolni, és a fejlécben meghatározott kis időszeletkék számát jelenti két esemény között. Ha például a fejlécben az szerepelt, hogy a negyedhangot 120 részre kell osztani, és két hang leütése között éppen egy negyed telik el, akkor a második hang Note On-ja előtt 120 fog állni, mint időkülönbség. Ha csak egy nyolcadnyi időt kell reprezentálni, akkor 60-at kell beírni helyette.

Minden MIDI-üzenetet el kell látni az időkülönbség jelzésével; ha nincs közöttük idő, akkor ezt a 0 érték fogja jelezni, a státusztartási technika pedig ugyanúgy használható, mint a hagyományos MIDI-vonalon.

Lássunk gyorsan egy példát: tegyük fel, hogy egy C-dúr akkordot leütünk, majd felengedjük egy negyed elteltével. Feltételezve, hogy a negyedhand 120 részre van osztva, és a fájl legelején vagyunk, MIDI-fájlban ez körülbelül így néz ki (a dinamika legyen mindig 40, a csatorna pedig az 1-es):

00906040

006440

006740

78806000

006400

006700

...

Minden érték hexadecimálisként, azaz tizenhatos számrendszerben értendő. Az első három sor a három hang azonnali leütésére utasít (a státusztartás miatt csak az első hangnál kellett a státuszbájtot leírni), ezután 120 elemi időegység várakozás következett, majd a három billentyű azonnali felengedése.

Az exkluzív rendszerüzeneteket - mivel a hagyományos üzenetektől eltérően bármilyen hosszúak lehetnek - kicsit másképpen tároljuk. Az üzenet leírása az 'FO' státusszal kezdődik, ezután viszont egy változó hosszúságú mennyiséggel leírt szám következik, amely az 'FO'-t követő bájtok számát tudatja. Ezután következhetnek az üzenet adatbájtjai, őket pedig az üzenet végén az F7 exkluzív-vége státusszal kell zárni (a hossz kiszámításába az exkluzív-vége bájtot is bele kell érteni).

Ha a MIDI-fájlba egy illegális üzenetet szeretnénk inzertálni, melyet valamilyen speciális berendezés tud csak értelmezni, megtehetjük: az időkülönbség után az F7 státuszkód - amely normális esetben exkluzív-vége jelző lenne - azt jelenti, hogy meg kell nézni az őt közvetlenül követő változó hosszúságú mennyiséget. Ez a szám megadja az ezután következő bájtok számát, melyeket közvetlenül, minden egyéb körülményre tekintet nélkül, szép sorban, várakozás nélkül ki kell küldeni a MIDI-vonalra. Ez a bájtsorozat a lehető legképtelenebb is lehet, értelmezése nem az adó, kizárólag a vevő feladata.

Az utolsó kivételes státusz az 'FF', amely a nem MIDI-jellegű, úgynevezett metaüzeneteket jelöli. Az FF után következő bájt a típust, az ezután következő változó hosszúságú mennyiség az adatbájtok számát adja, őket pedig az adatbájtok sorozata követi. Jelenleg a következő metaüzenetek ismertek:

A dal azonosító kódja
Kód: FF 00 02 dd dd

Típusbájtja 0, hossza mindig 2, mert két bájton kódolva tartalmazza a dal azonosítóját. Csak azokban a dalszerkesztőkben érdemes megvalósítani, amelyek egyszerre több dalt tudnak tárolni belső memóriájukban.

Általános szöveges üzenet
Kód: FF O1 hossz szöveg

Szöveges üzenetek elhelyezését teszi lehetővé, ASCII-kódolással.

Copyright üzenet
Kód: FF 02 hossz szöveg

A dal szerzőjéről és tulajdonosáról tartalmaz információkat.

A sáv vagy a dal neve
Kód: FF 03 hossz szöveg

Format 0 esetében a dal, egyébként a sáv neve.

A hangszer neve
Kód: FF 04 hossz szöveg

Jelentése: a sávot milyen hangszeren érdemes lejátszani.

Dalszöveg
Kód: FF 05 hossz szöveg

A dal megfelelő részén éneklendő szöveg.

Jelző (Marker)
Kód: FF 06 hossz szöveg

Egy meghatározott időpont neve a dalban.

Követőpont
Kód: FF 07 hossz szöveg

Szintén egy időpont neve, ahol valami történik, pl. filmzenében 'Elindul a vonat', 'Leesik a váza', stb.

MIDI-csatorna
Kód: FF 20 0l cs

Közli a dalszerkesztővel, hogy az adott sáv melyik MIDI-csatornát hajtja.

Sáv vége
Kód: FF 2F 00

Minden sáv végére kötelezően ezt az üzenetet kell beszúrni.

Tempóbeállítás
Kód: FF 51 03 tt tt tt

Tempóváltoztatást ír le, a mértékegység: mikroszekundum/negyed.

SMPTE Offset
Kód: FF 54 05 hr mn se fr ff

Időkódot használó rendszereknél a dal indításának pontos ideje.

Előjegyzés (ütem)
Kód: FF 58 04 nn dd cc bb

Négy számmal írjuk le, 'nn' az előjegyzés számlálója, 'dd' a nevező 2-es alapú logaritmusa, tehát a 3/4-es ütem ebben a formában 3;2, a 7/8 pedig 7;3. 'cc' a metronóm beosztását adja meg MIDI-órában, mint egységben, 'bb' pedig azt adja meg, hogy a zenei negyedet hány harminckettedre lehet osztani. Ez utóbbi természetesen legtöbbször 8, de néhány programban át lehet definiálni a negyed értékét a MIDI-órára nézve, ami alapesetben ugye 24, azonban speciális esetekben lehet más is.

Előjegyzés
Kód: FF 59 02 sf mi

sf = -7 .. -1 : 7 .. 1 bé előjegyzés
sf = 1 .. 7 : 1 .. 7 kereszt előjegyzés
mi = O : dúr
mi = 1 : moll

Dalszerkesztő-specifikus metaüzenet
Kód: FF 7F hossz adatok

Mint a MIDI-üzeneteknél az exkluzív üzenetek, itt ez az üzenettípus is eszköztől függő információkat közöl. Az adatmező első bájtja itt is a gyártóazonosító, a továbbiak pedig a gyártó saját eljárásával kódolt üzenetet tartalmazzák.

Szólj hozzá! · 1 trackback

A bejegyzés trackback címe:

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

Trackbackek, pingbackek:

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.

Nincsenek hozzászólások.