Enterprise MIDI
Contents
Az alapok
A midi (kiterjesztése: *.mid) PC-s zenei formátum (is). Szintetizátorok is használják. Nem tartalmaz a midi fájl hangmintát, hanem csak "kottát", és a kottához meg van adva, hogy az egyes szólamok milyen hangszereken szólaljanak meg. Ezek a hangszerhangok már előre be vannak építve az operációs rendszerbe (már Win95-ben is volt midi) vagy a szintetizátorba. A midiben akár 16 szólam (midi sáv) is szólhat egyszerre, és egy midi sávon belül is szólhat egyszerre több hang, akkordok. Megkülönböztetett midi sáv a 10-es számú, ahol dobhangok szólaltathatók meg. A célunk midi fájlok megszólaltatása az EP Dave hangchipjén keresztül. Mivel a Dave összesen 3+1 csatornát tud használni, a netről letölthető midi fájlok közül szinte mindet át kell alakítani, hogy EP-n elfogadható hangzást kapjunk.
A midihez hardver is létezik EP-hoz, de nincs belőle túl sok példány. Egyelőre az EP128Emu emulátorral lehet egy midit lejátszó/szerkesztő PC-s programot összekötni, így szólaltathatjuk meg a midit az EP hangzásaival. Amire ehhez szükség van:
- Midi port telepítése, például a loopMIDI. Linuxon használható a Midi Through port, illetve a szerkesztő programok (pl. Qtractor) is létrehozhatnak portot, amellyel az emulátor közvetlenül összeköthető. Hardveres MIDI billentyűzet használatára is lehetőség van, ilyenkor a loopMIDI-re nincs szükség
- Az EP128Emu olyan verziójára, amely támogatja a midi bemenetet. (A legfrissebb emulátor a sourceforge oldaláról letölthető, ezt az itt található újabb béta verzióval kell frissíteni, tehát csak kibontani, és a fájljaival felülírni a már telepített emulátor fájljait.)
- A midiplay nevű, Enterprise-on futtatható alkalmazásra
Ha ez megvan, az emulátorban az Options -> Sound -> Configure menüpontjában be kell állítani a midi bemenetet (loopMIDI port (I MMSystem) felirata van) Mindezek után indítsunk el egy midi lejátszót, szerkesztőt vagy virtuális billentyűzetet a PC-n, ahol kimenetnek a loopMIDI OUT-ot állítjuk be. Indítsuk el az emulátort, töltsük be a midiplay nevű alkalmazást rajta. Ezek után a midi lejátszó hangjai az EP-n fognak szólni, a DAVE képességeit használva.
A hang késésének és az időzítési hibáknak a minimalizálása céljából érdemes az alapértelmezett Latency beállítást (70 ms) csökkenteni, és alacsony szintű audio API-t (ALSA vagy WASAPI) használó kimeneti eszközt választani, különösen MIDI billetyűzet használatakor. Szintén célszerű kerülni a nagy CPU igényű vagy várakozást igénylő OpenGL video módokat (pl. "resample to monitor refresh rate").
A midiplay nevű EP-s alkalmazáshoz több fájl is tartozik, pl. envelope.txt, lásd lejjebb.
A midiplay EP-s alkalmazás használata emulátoron
Ezzel az alkalmazással tehát megszólaltatható a midi fájl EP-s hangszerelésben. Ha midi szerkesztőt használunk (pl. Cakewalk, Sonar, egyebek), közben az emulátoron keresztül is hallható ügyködésünk. Lehetőség van készre szerkesztett midi fájlt EP-n betölthető és lejátszható fájllá konvertálni (midiconv, lásd lejjebb). A midiplay induláskor automatikusan megnézi, az alapértelmezett mappában van-e mididata.bin nevű (konvertált midi, amely legfeljebb 20479 bájt méretű lehet) fájl, és ha igen, azt játssza le, végtelenségig ismételve a lejátszást. Ha nincs ilyen fájl, akkor várja a program, milyen hangokat küldünk neki a loopMIDIn keresztül. A program futása közben a képernyő teljesen sötét, de nincs is szükség különösebb megjelenítésre. Célszerű turbósított (pl. 10 MHz-es) konfiguráción futtatni, de működik 4 MHz-en is.
Indítás után használható gombok:
F1: a program újraindítása, újraolvassa az envelope.txt-t és (ha van) a mididata.bin-t
F4: minden hang kikapcsolása, hasznos "beragadt" hang esetén. A 123-as MIDI vezérlő is használható hasonló célra
F6: teljes MIDI reset, minden hang kikapcsolása mellett a vezérlőket, hajlítást és hangszereket is alaphelyzetbe állítja, fájl lejátszás esetén a fájl pozíciót is. A vezérlők és a hajlítás alaphelyzetbe állíthatók a 121-es vezérlővel is
F8: kilépés
Melyik MIDI csatorna (1-16) melyik Dave csatorna lesz? A midi csatornákat a lejátszó "logikai" csatornákként kezeli. Tehát mind a tizenhatnak külön tárolja a teljes állapotát:
- a 128 billentyűt, hogy éppen melyik van lenyomva, és ha igen, akkor a hozzá rendelt DAVE csatornát
- a programot (hangszert)
- 128 vezérlőt (ez ugyan RAM pazarlás, mert a program csak néhányat (7, 10, 76, 77) használ)
- a hajlítást
Ez az információ független a DAVE csatornáitól, hogy egy MIDI hang melyik DAVE csatornára kerül, azt az alábbi algoritmus dönti el:
- a dob csatorna (10) esetén feltétel nélkül a 3-as DAVE csatornára, az esetleges korábbi hangot azonnal megszakítva
- egyébként a 0-2. csatorna közül ha az egyik jobb választás a másik kettőnél a burkológörbe fázis alapján (off > release > attack/decay > sustain), akkor arra
- ha így nem sikerült dönteni, és aktív hangot kell megszakítani mert már mind a 3 zenei csatorna foglalt, akkor a régebbi (illetve release módban a régebben lecsengő) hang helyére kerül
- ha ez is egyenlő, akkor egy fix sorrend alapján:
1-es MIDI csatorna: 0 > 2 > 1
2-es MIDI csatorna: 2 > 0 > 1
3-es MIDI csatorna: 0 > 2 > 1
4-es MIDI csatorna: 2 > 0 > 1
...stb.
Ezért az 1-es DAVE csatornát csak akkor használja, ha 3 zenei hang aktív egyszerre. Pontosan kettőnél pedig biztosan a 0.-t és 2.-t. Bármelyik logikai MIDI csatornán lehet tetszőleges számú hang, de összesen mindig legfeljebb 3 + 1 dob.
A MIDI fájl speciális beállításai
A midiplay lejátszó tehát az egyes midi sávokat bizonyos logika alapján párosítja a Dave csatornákhoz. Azonban mi is meghatározhatjuk, hogy egy adott sáv egy adott Dave csatornának feleljen meg. Így a dinamikus foglaláson kívül fix csatornafoglalást is be lehet állítani. Sőt, erre a legtöbb esetben szükség is van, ha ki akarjuk használni a Dave képességeit, és a netről letöltött midi fájlt EP-n is értelmes hangzásúra akarjuk konvertálni.
Ehhez a midi fájlban a különböző vezérlőkben különböző, Dave specifikus beállításokat hajthatunk végre. (A vezérlők a midi szerkesztő programokban általában a Controllers menüpontban érhetők el.)
71-es (Harmonic Content) és 76-os vezérlő: STYLE paraméter / 4
A Style paraméter ugyanaz, amit basic-ben kell megadni a STYLE után, csak 4-gyel el kell osztani. Tehát pl. ha 16 (alacsony torzítás), akkor 16/4=4-et kell megadni. Ha 144-et (gyűrűmoduláció+alacsony torzítás), akkor 144/4=36-ot kell megadni.
70-es (Sound Variation) és 77-es vezérlő: csatorna vezérlés * 4:
- 0 = dinamikus foglalás
- 4 = fix 0. csatorna (csak egy szólamú)
- 8 = fix 1. csatorna
- 12 = fix 2. csatorna
- 16, 20 = 0-s csatorna, legfeljebb 3 hang időosztásos rendszerben
- 24, 28 = 2-es csatorna, itt is legfeljebb 3 hang váltakozhat
Az ENVELOPE.TXT használata
A midi fájlok különféle hangszerek hangját szólaltatják meg. Az envelope.txt ezekhez a hangszerekhez társít hangzást (burkológörbét), ezt felhasználva fog megszólalni a Dave képességeit használva EP-n.
egy "hangszer" definíciója így néz ki:
HANGSZER {
IDŐTARTAM, BAL, JOBB, HAJLÍTÁS, TORZÍTÁS;
...
}
Több hangszer is használhatja ugyanazt a burkológörbét, több számot megadva vesszővel elválasztva. A hangszer száma vagy 0 és 127 közötti a normál csatornákhoz, vagy -1 és -127 közötti a dobokhoz. A szám után kettősponttal elválasztva megadható még két további paraméter, ilyenkor a hangszer használatakor a hangjegyről másolat készül a MIDI csatorna számának és a hangmagasságnak a módosításával. Például 1:2,12-nél az 1-es hangszer a kettővel nagyobb számú MIDI csatornán is megszólaltat egy oktávval magasabb hangot.
Az időtartam (ami video megszakítás egységekben adható meg, 0 esetén a paraméterek változása azonnali) előtt az 'S' karakter azt jelenti, hogy az adott szegmens kezdete "sustain" pozíció, ahonnan a lejátszó csak a billentyű elengedésekor lép tovább. Ennek doboknál nincs értelme.
Az EXOS-tól eltérően a hangerők abszolút értékek 0 és 63 között, azt adják meg, hogy mi lesz az új hangerő a következő szegmens elején, amit lineáris interpolációval ér el. Lehetőség van azonban exponenciális burkológörbék definiálására is, ha a hangerő érték előtt '*' karakter található, akkor a megadott szám / 128-al szorzódik a hangerő minden megszakításnál. Tehát például *96 esetén 0.75 a szorzó, *128-nál nem változik a hangerő, stb. A hajlítás egy -2048 és +2047 közötti egész, 64 felel meg egy zenei félhangnak. Itt is lineáris interpoláció történik, és a megadott értéket a következő szegmens elejére éri el. Dobokat nem lehet hajlítani.
A torzítás (STYLE) a többi paraméterrel ellentétben nem interpolálható, hanem az értéke azonnal módosul, erre figyelni kell ha változik a hang közben.
Szóközök, Tab karakterek és új sorok tetszőlegesen használhatók, a program ezeket figyelmen kívül hagyja. '#' karakter esetén a sor további részét megjegyzésnek tekinti és szintén figyelmen kívül hagyja.
A lejátszó program a lefordított (bináris) burkológörbe adatot automatikusan menti egy envelope.bin nevű fájlba.
A MIDI fájl konvertálása EP-n lejátszható formátumúra
Ha készre szerkesztettünk egy midi fájlt, ami már jól szól a Dave hangzásokkal, átkonvertálhatjuk, hogy EP-be betöltve lehessen hallgatni. A midiconv egy parancssoros alkalmazás. A parancssort Windowson a start menüben lehet megtalálni. A dos-os CD paranccsal abba a könyvtárba kell lépni, ahol a midiconv.com van, és így kell használni:
midiconv INFILE.MID OUTFILE.BIN [IRQFREQ]
Alapértelmezés szerint az IRQFREQ 50.0363 Hz. Ha a zene tempója 125 vagy 150 BPM, vagy más érték ahol a negyedhangok időtartama 20 ms pontos többszöröse, akkor célszerűbb lehet 50-re állítani. A parancs kiadása után azonnal megjelenik az adott mappában a bin fájl, amelyet a midiplay.com EP-s alkalmazással lehet EP-n lejátszani.