Ez a hasznos kis program a Game Maker (GM) honlapján
található (http://www.gamemaker.nl/resource.html),
amelynek segítségével saját játékainkat is alkalmassá
tehetjük MOD típusú zenék lejátszására.
Mivel a leírásban jópár helyen előfordulnak szakkifejezések
(pl. "zxx parancsok"), ez néhol ronthatja a fordítás
érthetőségét is. Ezért, és a jórészt ebből fakadó
esetleges félrefordításokért előre is elnézést kérek.
granit2@freemail.hu - 2004. május 27-28. (a 2.0-s változattal frissítve: 2005. május 11-12.)
JBFMOD 2.0
Modul lejátszó kiterjesztés a Game Maker 5 és 6 számára (M. Rijks, 2005 március)
A JBFMOD egy eljárás MOD-ok és MOD típusú hangok lejátszására a GM játékokban.
Mi újság?
- 2.0-s változat:
A 2-es változat egy újraírás a semmiből az elsőhöz képest, köszönhetően az eredeti forrásállomány elvesztésének. A változtatások nagy száma miatt nem lehet csak úgy egyszerűen kicserélni a régi JBFMOD DLL fájlokat a jelenlegivel, ezért tanácsos átnézned a régi GMD vagy GM6 forrásfájljaidat az új parancsok tekintetében.
- 1.0-s változat:
Az eredeti kiadás (a GM 4-es változatához készült, ezért az ennél újabb GM változatokban való használatához először át kell alakítani a Conv4to5 programmal, mely a http://www.gamemaker.nl/old.html oldalról tölthető le).
Mik a MOD-ok?
A modulok vagy MOD-ok a MIDI (digitális hangszerillesztő) állományokra hasonlítanak. Hangjegyek sorozatát tartalmazzák, melyek egy zenedarabot alkotnak. De ahol a MIDI hangszerszintézist alkalmaz a hangkártyán, a MOD-ok mintavételezéssel állítják elő a hangot. Az előny a szabad választás a hangszerek között, és a pillanatnyi hang fölötti teljes ellenőrzés. Ezenkívül a tracker-ekkel (MOD-okat létrehozó alkalmazások) készített zene ugyanúgy hangzik minden számítógépen, míg a MIDI-k a hangkártya tulajdonságától függenek. Némi hátrány, hogy a MOD-ok és a MOD-szerű formátumok (S3M, XM és IT) nagyobbak, mint a MIDI-k, mert a visszajátszáshoz használt mintavételeket is tartalmazzák. A MOD-ok lejátszása több processzoridőt is használ.
Ha érdekel a MOD-ok készítése, kitűnő tájékoztatást találhatsz a http://www.modplug.com címen. Itt ingyenes lejátszókat, tracker-eket, zenéket, stb. találhatsz.
Mi az FMOD?
Az FMOD a Firelight Multimedia egy terméke. Ez egy futásidőben kapcsolódó eljáráskönyvtár (DLL), mely egy általános függvényhalmaz a programfejlesztők számára, hogy alkalmazásaikban hangokat is használhassanak. Jelenleg a Protracker, Fasttracker(2), Scream Tracker 3 és Impulse Tracker modultípusokat támogatja.
Mi a JBFMOD?
A JBFMOD a JukeBox FMOD rövidítése. Biztosítja az FMOD eljáráskönyvtárhoz való hozzáférést, és arra íródott, hogy lehetővé tegye MOD, S3M, XM és IT formátumú zenék visszajátszását a GM-ben. Az egész két DLL állományból, leírásból, a ToPack alkalmazásból (2.0-tól), két bemutatóprogramból és egy eljáráskönyvtárból áll. A JBFMOD egyszerre 128 (az 1.0-ban 32) dal betöltését teszi lehetővé. Minden alapvető dolgot tud, ami egy zenelejátszótól elvárható (lejátszás, megállítás, szünet, számok átugrása, hangerő állítása, információk kiírása a dalról).
Jogi tudnivalók
Az FMOD.DLL-t a Firelight Multimedia készítette, és nem kereskedelmi célú termékekkel szabadon használható és terjeszthető, de ha már árusítod a játékodat, akkor az engedélyért vedd fel a kapcsolatot a Firelight Multimedia-val. Olvasd el a mellékelt FMODLICENSE.TXT-t, vagy látogasd meg a honlapjukat a http://www.fmod.org címen.
A JBFMOD.DLL eljáráskönyvtárat és a hozzá társított függvényeket én készítettem. Ez az állomány és a belőle származók szabadon használhatók ingyenes és kereskedelmi célú programokban, feltéve, hogy csak a játékodban való hangkeltésre használatos, de nem árusítható mint önállóan működő kiterjesztése a GM-nek.
A JBFMOD-ot a saját felelősségedre használd. Semmi sem romolhat el, de ha mégis, az a te felelősséged.
A bemutatókról
Ez a csomag két bemutatóprogramot tartalmaz. Mindkettő a GM 6 számára íródott, bár a JBFMOD eljáráskönyvtárak és a függvény használható a GM 5-ben is. A bemutatók kódját és grafikáját én készítettem, az általuk használt dalok pedig különböző eredetűek.
A PLAYER.GM6 egy kis, Winamp-szerű lejátszó, ami tartalmazza majdnem az összes JBFMOD funkciót. A 8 demó dalt a MUSIC.PAK fájl tartalmazza, amelynek mérete mindössze 463 kilobájt. A 8-ból hét dal 100 kilobájt alatt van.
A ZXXDEMO.GM6 egy spektrum demó, ami használja a Zxx visszahívásokat. Dőlj hátra, és élvezd a Dire Straits klasszikusokat IT formátumban. 1 GHz-es PC szükséges hozzá.
A csomagfájlokról
64 MOD zeneszámot csomagolhatsz egy egyszerű csomagfájlba. Egy csomagfájlnak számos előnye van azontúl, hogy MOD fájlok elkülönítésére használható. A részletekért nézd át a TOPACK.RTF fájlt, amit megnyithatsz a TOPACK.EXE alkalmazásban is. Ezzel kapcsolatos parancs, amellyel a csomagfájlból kiolvashatjuk a dalokat, a jbfmod_load_song_pack(), melynek leírása a parancsok ismertetésében található.
Rendszerigény
Az alábbi lista a JBFMOD és FMOD használatához szükséges rendszerjellemzőket tartalmazza. Ezek némelyike feltételezés, és a többi a GM gépigénye.
- Pentium 233+ MHz processzor
- 16 MB memória
- Windows 98
- DirectX 5.0 (8.0 a GM 6-nak)
- a GM 5.x vagy 6-os regisztrált változata
Hogyan kezdjük
Hogyan tudod lejátszani a MOD-okat a játékodban?
A 3-5 lépések kódban is megvalósíthatók. Helyezd el a
következőt egy csak egyszer végrehajtódó eseményben:
jbfmod_init(3,16);
jbfmod_load_song(1,'mymusic.mod');
jbfmod_play_song(1);
Ennyi. Amint elkezdődik a játékod és létrejön a tárgy, a dal lejátszása megkezdődik. Jegyezd meg, hogy ha másnak is odaadod a játékot, akkor az FMOD.DLL-t és a JBFMOD.DLL-t is mellékelned kell.
A függvények használata
Nem muszáj felhasználnod a mellékelt szkripteket, hacsak nem szeretsz játszadozni a külső meghatározásokkal és parancshívásokkal.
Kétféle módon használhatod a JBFMOD függvényeket. Vagy a fogd és vidd módszerrel (vagyis az Execute a script ikonon keresztül), vagy parancsként a saját kódjaidban, mint ahogy fentebb volt.
A függvények mindig visszaadnak egy értéket. Ezt nem muszáj mindig használni, csak amikor szükséges, tehát ha kell, akkor el lehet menteni egy változóba, mint más GM függvénynél is, pl.:
ertek=jbfmod_play_song(1);
... de akár érvényes így is ...
jbfmod_play_song(1);
Némely függvénynél a visszaadott értéknek van egy célja (például a dal nevét megkapni vele), míg a többiek csak egy vizsgálat eredményét adják vissza, hogy egy cselekvés sikeresen végrehajtódott-e (amely értéknél az 1 jelentése az igen / igaz / sikeres és a 0 jelentése a nem / hamis / sikertelen). Ha a függvény visszaadja ezen értékek közül az egyiket, akkor a jbfmod_get_errorcode() vagy jbfmod_get_errormessage() függvényeket használhatod további információk szerzésére bármilyen hiba esetén.
Tanácsok
Itt egy rövid listája azon dolgoknak, amelyeket észben kell tartanod a JBFMOD használata közben.
A JBFMOD parancsok
jbfmod_close() - az FMOD hangrendszer leállítása. A hangrendszer mindig leáll, mikor a játék futása befejeződik. Ez a parancs csak akkor szükséges, ha a hangrendszert újra akarjuk indítani a jbfmod_init()-tel.
Pl. jbfmod_close();
A visszaadott érték mindig 1.
jbfmod_close_spectrum() - a színkép leállítása. A spektrum többlet számítási időt igényel, és lelassítja a játékodat, amikor elindul, ezért zárd be, amikor a játék nem használja.
Pl. jbfmod_close_spectrum();
A visszaadott érték mindig 1.
jbfmod_get_bpm() - az éppen játszott MOD percenkénti ütemét adja.
Pl. draw_text(0,0,'BPM: '+string(jbfmod_get_bpm()));
Egy 0 és valószínűleg 2500 közötti értékkel tér vissza.
jbfmod_get_channels_playing() - a csatornák száma, melyek pillanatnyilag lejátszanak egy dalt.
Pl. draw_text(0,0,'Lejátszó csatornák: '+string(jbfmod_get_channels_playing()));
Egy 0 és 128 közötti értékkel tér vissza.
jbfmod_get_cpu_usage() - az FMOD által használt processzoridőt adja százalékban.
Pl. draw_text(0,0,'Használt CPU idő: '+string(jbfmod_get_cpu_usage()));
Ez csak az FMOD, és nem a játék által használt processzoridőt adja.
A visszaadott érték 0 és 100 közötti lehet.
jbfmod_get_current_song() - az éppen lejátszás alatt lévő dal indexét adja.
Pl. draw_text(0,0,'Lejátszás alatt: '+string(jbfmod_get_current_song()));
1 és 128 közötti értéket ad vissza, vagy 0-t, ha nem játszódik dal.
jbfmod_get_errorcode() - visszaadja a legutóbbi hiba kódját. Némely függvény értesít, hogy a hívás sikeres volt-e vagy sem. Ha nem volt sikeres, akkor hívd ezt a függvényt ahhoz, hogy megkapd a hibakódot.
Pl. if
jbfmod_load_song(1,'zene.mod')=false
show_message('Hiba: '+string(jbfmod_get_errorcode()));
A következő értékeket adja vissza, vagy 0-t, ha eddig még nem történt hiba:
Kód | Hibaüzenet |
1 | Inicializálás sikertelen |
2 | A fájl nem található |
3 | Nem lehet megnyitni a fájlt |
4 | Hiba a fájl olvasásakor |
5 | Érvénytelen játék végrehajtás |
6 | Nem lehet megnyitni a fájlt |
7 | Csomagfájl bejegyzés üres |
8 | Nincs dal az adott helyen (slot-ban) |
9 | Spektrum nem aktív |
10 | Hiba a dal lejátszásakor |
11 | Sikertelen az ismétlés beállítása |
12 | Sikertelen a sorrend beállítása |
13 | Sikertelen a hangszórókhoz való elkülönítés beállítása |
14 | Sikertelen a szünet beállítása |
15 | Sikertelen a hangerő beállítása |
16 | Érvénytelen paraméter |
17 | Érvénytelen frekvencia |
18 | Érvénytelen csatorna |
19 | Érvénytelen hangszer |
20 | Érvénytelen sorrend |
21 | Érvénytelen csomagfájl bejegyzés |
22 | Érvénytelen elkülönítés |
23 | Érvénytelen hely |
24 | Érvénytelen spektrum bejegyzés vagy határérték |
25 | Érvénytelen hangerő |
26 | Érvénytelen Zxx parancs |
Megjegyzés: a hibakód nem törlődik, és mindig a legutóbbi hiba, nem pedig a legutóbbi függvényhívás állapota lesz jelezve. A jelenlegi hibaüzenethez a jbfmod_get_errormessage() függvény használható.
jbfmod_get_errormessage() - a legutóbbi hiba üzenetét adja. Némely függvény értesít, hogy a hívás sikeres volt-e vagy sem. Ha nem volt sikeres, akkor hívd ezt a függvényt ahhoz, hogy megkapd a hibaüzenetet.
Pl. if
jbfmod_load_song(1,'zene.mod')=false
show_message(jbfmod_get_errormessage());
A hibaüzenetek teljes listája a jbfmod_get_errorcode() függvénynél található.
jbfmod_get_frequency(csatorna) - az adott csatorna (1-128) frekvenciáját adja.
Pl. draw_text(0,0,'A 8-as csatorna frekvenciája: '+string(jbfmod_get_frequency(8)));
A frekvencia ténylegesen a hangmagasság vagy sebesség, melyen a mintavételezés lejátszódik az FMOD által. Ez teljesen eltér a pillanatnyi hang 'valós-idejű' frekvenciájától. Például felvehetünk egy magas és egy alacsony hangot ugyanazon sebességgel. Ezek azonos sebességű visszajátszásakor a frekvencia az FMOD szerint egyenlő lesz, bár a hangok frekvenciában nagyon eltérően mutatkoznak.
0, vagy annál nagyobb értékkel tér vissza.
jbfmod_get_info(jelzőszám) - a JBFMOD változatát és tájékoztatást ad. A jelzőszám a visszaadott szöveg jele, a következő értékekkel: 1: a JBFMOD állományneve, 2: verziószám, 3: állomány dátum, 4: szerző, 5: az FMOD állományneve, 6: az FMOD változata.
Pl. show_message('A JBFMOD készítője: '+jbfmod_get_info(4));
jbfmod_get_instrument_played(hangszer) - visszaadja, hogy vajon a jelzett hangszer (IT formátum) vagy minta (MOD, S3M és XM formátumok) lejátszva volt-e a jelenleg játszott zenében. A hangszer egy 1 és 199 közötti szám.
Pl. if jbfmod_get_instrument_played(1) draw_text(0,0,'Ütem!');
A visszatérési érték 0 ha nem, 1 ha igen.
Megjegyzés: ez a függvény a zene teljes időtartama alatt tájékoztat a jelölt hangszer lejátszásáról, ami nem hasznos, ha hangszerhívásonként csak egyszer akarod vezérelni az eseményeket a játékodban. Egyszeri tájékoztatáshoz használd a jbfmod_get_instrument_playedonce() függvényt.
jbfmod_get_instrument_playedonce(hangszer) - visszaadja, hogy vajon a jelzett hangszer (IT formátum) vagy minta (MOD, S3M és XM formátumok) lejátszva volt-e a jelenleg játszott zenében. A hangszer egy 1 és 199 közötti szám.
Pl. if jbfmod_get_instrument_playedonce(1) instance_create(random(640),random(480),villam);
A visszatérési érték 0 ha nem, 1 ha igen.
Megjegyzés: ez a függvény csak egyszer ellenőriz egy hangszert zenénként. Ez hasznos a vezérlő események számára, amelyeknek a zene lejátszása alatt nem kell folyamatosan irányítaniuk, ellentétben a jbfmod_get_instrument_played() függvénnyel, amely a zene teljes időtartama alatt közli az értéket.
jbfmod_get_master_volume() - a jelenleg játszott MOD hangerejét adja.
Pl. draw_text(0,0,'Fő hangerő: '+string(jbfmod_get_master_volume()));
Egy 0 és 256 közötti értékkel tér vissza.
jbfmod_get_name(hely) - az adott helyen (1-128; 1.0-ban 32-ig ennél és a többi hasonló függvénynél) lévő dal nevét tartalmazó szöveget adja.
Pl. show_message('A 4. dal neve: '+jbfmod_get_name(4));
Ha a megadott hely üres, akkor a '(No song)' szöveget adja. A dal neve a modulban van megadva, ami nem azonos a modul fájlnevével, és a MOD szerzője üresen is hagyhatta a név mezőt.
jbfmod_get_num_channels(hely) - az adott helyen (1-128) lévő dal által használt csatornák teljes száma.
Pl. show_message('A 4. dal összesen '+string(jbfmod_get_num_channels(4))+' csatornát használ.');
A visszaadott érték 1 és 128 közötti, vagy 0, ha a megadott hely üres.
jbfmod_get_num_instruments(hely) - az adott helyen (1-128) lévő dal hangszereinek teljes száma.
Pl. show_message('A 4. dal '+string(jbfmod_get_num_instruments(4))+' hangszert tartalmaz.');
A visszaadott érték 1 és 128 közötti, vagy 0, ha a megadott hely üres. Ez a függvény csak az Impulse Tracker típusú MOD-okra vonatkozik.
jbfmod_get_num_orders(hely) - az adott helyen (1-128) lévő dal sorrendjeinek teljes száma.
Pl. show_message('A 4. dalnak '+string(jbfmod_get_num_orders(4))+' sorrendje van.');
A visszaadott érték 1 és 255 közötti, vagy 0, ha a megadott hely üres.
jbfmod_get_num_patterns(hely) - az adott helyen (1-128) lévő dal mintavételezéseinek teljes száma.
Pl. show_message('A 4. dalnak '+string(jbfmod_get_num_patterns(4))+' mintavételezése van.');
A visszaadott érték 1 és 128 közötti, vagy 0, ha a megadott hely üres.
jbfmod_get_num_samples(hely) - az adott helyen (1-128) lévő dal mintavételezéseinek teljes száma.
Pl. show_message('A 4. dalnak '+string(jbfmod_get_num_samples(4))+' mintavételezése van.');
A visszaadott érték 1 és 128 közötti, vagy 0, ha a megadott hely üres.
jbfmod_get_order() - az éppen játszott MOD rendezési helyzetét adja.
Pl. draw_text(0,0,'Jelenlegi rend: '+string(jbfmod_get_order()));
Egy 0 és 255 közötti értékkel tér vissza.
jbfmod_get_packinfo() - visszaadja a csomag tájékoztatószövegét.
Pl. show_message('Csomag információ: '+jbfmod_get_packinfo());
Visszaad minden csomag információt, ami a legutóbbi olyan csomagba volt elhelyezve, ahonnan egy dal betöltődött. A ToPack alkalmazással adhatsz ilyen tájékoztatót a csomagodhoz. Ez hasznos a fájlokban tulajdonjogi információk elhelyezésére, mintegy aláírásként a csomagban.
Megjegyzés: ezt a függvényt csak a jbfmod_load_song_pack() függvény sikeres használata után lehet hívni.
jbfmod_get_pattern() - az éppen játszott MOD jelenlegi mintavételezését adja.
Pl. draw_text(0,0,'Jelenlegi mintavételezés: '+string(jbfmod_get_pattern()));
Egy 0 és 255 közötti értékkel tér vissza.
jbfmod_get_pattern_length() - az éppen játszott minta sorainak teljes számát adja.
Pl. draw_text(0,0,'A jelenlegi minta sorai: '+string(jbfmod_get_pattern_length()));
Egy 0 és 255 közötti értékkel tér vissza.
jbfmod_get_paused() - a jelenlegi dal lejátszása szünetel-e vagy sem.
Pl. if jbfmod_get_paused() show_message('A lejátszás szünetel.');
A 0-t adja ha nem, 1-et, ha igen.
jbfmod_get_row() - az éppen játszott minta sorát adja.
Pl. draw_text(0,0,'Sor: '+string(jbfmod_get_row()));
Egy 0 és 255 közötti értékkel tér vissza.
jbfmod_get_song_exists(hely) - jelen van-e egy dal a megadott helyen.
Pl. if jbfmod_get_song_exists(4) show_message('A 4. helyen van egy dal!');
A 0-t adja ha nem, 1-et, ha igen.
jbfmod_get_spectrum(sáv) - a megadott sáv (0-511) frekvenciasáv amplitúdóját adja.
Pl. draw_text(0,0,'Sáv 1: '+string(jbfmod_get_spectrum(1)));
Egy 0 és 1 közötti értékkel tér vissza.
Megjegyzés: a teljes színkép határértéke 512 sáv, de a legélénkebb részt az első 64 (0-63) alkotja. A határérték a keverési arány/2-vel van osztva, tehát ha 44100 Hz-re vaninicializálva a JBFMOD, akkor a határérték 0-22050 Hz lesz, ahol a 0 sáv jelenti a 0 Hz-et, az 511-es sáv pedig a 22050 Hz-et, és mindegyik sáv kb. 43 Hz-et jelent.
jbfmod_get_spectrum_mean(sáv1,sáv2) - a megadott frekvenciasáv (mindkettő 0-511) határérték középfrekvenciáját adja.
Pl. draw_text(0,0,'Sáv 0-19: '+string(jbfmod_get_spectrum_mean(0,19)));
Egy 0 és 1 közötti értékkel tér vissza.
Megjegyzés: ez a függvény némely esetben hatásosabb lehet a jbfmod_get_spectrum()-nál, mivel a GM egy kicsit lassú lehet az elkülönített sávok határértékének egyenkénti feldolgozásában és kiolvasásában.
jbfmod_get_speed() - az éppen játszott MOD sebességét adja.
Pl. draw_text(0,0,'A dal sebessége: '+string(jbfmod_get_speed()));
Egy 0 és 15 közötti értékkel tér vissza.
jbfmod_get_time() - azt az időt adja ezredmásodpercben, amióta a jelenlegi dal lejátszás alatt van.
Pl. draw_text(0,0,'A dal ideje: '+string(jbfmod_get_time()));
0, vagy annál nagyobb értékkel tér vissza.
Megjegyzés: ez az idő nem áll vissza alaphelyzetbe amikor a MOD megismétlődik, és nem áll a megfelelő időre a jbfmod_set_order() használatakor.
jbfmod_get_timeformat() - azt az időt adja, amióta a MOD lejátszás alatt van. A szöveg formátumú érték a PP:MM:EE alakban tér vissza, ahol PP a perceket, MM a másodperceket, EE pedig az ezredmásodperceket jelenti.
Pl. draw_text(0,0,'A dal ideje: '+string(jbfmod_get_timeformat()));
Megjegyzés: ez az idő nem áll vissza alaphelyzetbe amikor a MOD megismétlődik, és nem áll a megfelelő időre a jbfmod_set_order() használatakor.
jbfmod_get_type(hely) - a megadott helyen (1-128) lévő modul típusa.
Pl. if jbfmod_get_type(4)=4 show_message('A 4. egy Impulse Tracker dal.');
A visszatérési értékek a következők lehetnek: 0: ismeretlen típus vagy nincs dal betöltve, 1: Protracker / Fasttracker, 2: ScreamTracker, 3: Fasttracker 2, 4: Impulse Tracker.
jbfmod_get_zxx() - visszaadja, hogy melyik Zxx parancs van működésben a jelenlegi zenében.
Pl. if jbfmod_get_zxx()=1 draw_text(0,0,'Az 1-es parancs van működésben.');
1 és 255 közötti értéket ad.
Megjegyzések: - a 0 jelű Zxx
parancsot nem lehet használni ezzel, mivel ez a függvény
mindig 0-t ad, ha éppen nincs működésben Zxx parancs.
- ha több mint 1 Zxx parancs van működésben, akkor a
függvény a legnagyobb csatornaszámmal rendelkezőt adja.
- ez a függvény a zene teljes időtartama alatt tájékoztat a
Zxx parancsról, ami nem hasznos, ha Zxx hívásonként csak
egyszer akarod vezérelni az eseményeket a játékodban.
Egyszeri tájékoztatáshoz használd a jbfmod_get_zxxonce()
függvényt.
jbfmod_get_zxx_played(parancs) - visszaadja, hogy a megadott Zxx parancs (0-255) működésben van-e a zenében.
Pl. if jbfmod_get_zxx_played(1) draw_text(0,0,'Az 1-es parancs működésben van.');
0 a visszatérési érték ha nem, 1 ha igen.
Megjegyzés: ez a függvény a zene teljes időtartama alatt tájékoztat a Zxx parancsról, ami nem hasznos, ha Zxx hívásonként csak egyszer akarod vezérelni az eseményeket a játékodban. Egyszeri tájékoztatáshoz használd a jbfmod_get_zxx_playedonce() függvényt.
jbfmod_get_zxx_playedonce(parancs) - visszaadja, hogy a megadott Zxx parancs (0-255) működésben van-e a zenében.
Pl. if jbfmod_get_zxx_playedonce(1) draw_text(0,0,'Az 1-es parancs működésben van.');
0 a visszatérési érték ha nem, 1 ha igen.
Megjegyzés: ez a függvény zenénként csak egyszer ellenőrzi az adott parancsot. Ez hasznos a vezérlő események számára, amelyeknek a zene lejátszása alatt nem kell folyamatosan irányítaniuk, ellentétben a jbfmod_get_zxx_played() függvénnyel, amely a zene teljes időtartama alatt közli az értéket.
jbfmod_get_zxxonce() - visszaadja, hogy melyik Zxx parancs van működésben a jelenlegi zenében.
Pl. if jbfmod_get_zxxonce()=1 instance_create(10,10,robbanas);
1 és 255 közötti értéket ad.
Megjegyzések: - a 0 jelű Zxx
parancsot nem lehet használni ezzel, mivel ez a függvény
mindig 0-t ad, ha éppen nincs működésben Zxx parancs.
- ha több mint 1 Zxx parancs van működésben, akkor a
függvény a legnagyobb csatornaszámmal rendelkezőt adja.
- ez a függvény csak egyszer tájékoztat a Zxx parancsról
zenénként, ami hasznos a vezérlő események számára,
amelyeknek a zene lejátszása alatt nem kell folyamatosan
irányítaniuk, ellentétben a jbfmod_get_zxx()
függvénnyel, amely a zene teljes időtartama alatt közli az
értéket.
jbfmod_init(keverési arány, maximum csatornák) - az FMOD hangrendszer beállítása. Keverési aránynál az 1-3 értékek használhatók: 1: 11025 Hz (nagyon gyenge hangminőség), 2: 22050 Hz, 3: 44100 Hz (csúcsminőség). Jegyezd meg, hogy a magasabb frekvenciák nagyobb CPU használatot okoznak. A maximum csatornák a lejátszáshoz használt szoftveres csatornák száma; 1-től 512-ig (1.0-ban 128-ig) bezárólag adhatunk meg értéket. Ha úgy tűnik, hogy egy MOD nem játszódik le minden csatornán, valószínűleg nem adtunk meg elég csatornát a kimenetnek. A csatornák ajánlott száma 8 és 16 közötti.
Ezt a parancsot bármely más JBFMOD parancs használata előtt hívni kell, és csak egyszer, kivéve, ha a hangrendszer előzőleg bezáródott a jbfmod_close()-zal. A kimenet mindig sztereó, bár a modulok lehetnek monók.
Pl. jbfmod_init(44100, 16);
Sikeressége esetén 1 a visszaadott érték, egyébként 0.
jbfmod_is_finished() - a jelenlegi dal lejátszása befejeződött-e.
Pl. if jbfmod_is_finished() jbfmod_stop_song();
0 ha nem, 1 ha igen.
Megjegyzés: a függvény eredménye 1, miután a dal elérte a végét, és 1 marad még akkor is, ha újrakezdődött a lejátszása. Ezenkívül, az ismétlődő mintavételezésnek köszönhetően, néhány dal egyáltalán nem áll meg.
jbfmod_is_playing() - egy dal jelenleg játszódik-e.
Pl. if jbfmod_is_playing() show_message('Jelenleg egy dal játszódik.');
Az 1-et adja ha igen, 0-t ha nem.
jbfmod_load_song(hely, MOD elérési út) - egy MOD állomány betöltése a megadott helyre. A hely egy 1 és 128 (1.0-ban 32) közötti szám. Az állomány teljes vagy részleges elérési útját egyszeres vagy kettős idézőjelek között kell megadni.
Ha a megadott helyen már van egy dal, akkor áthelyeződik. Ha már játszódik, akkor először megáll. Bár a játék ideje alatt bármikor betölthető egy dal egy helyre, a lelassulás elkerülése végett jobb, ha az összes zene modul a játék kezdeti részén töltődik be, mivel ez a függvény bizonyos számítási időt igényel.
Pl. jbfmod_load_song(2, "zene.mod");
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
jbfmod_load_song_pack(hely, index, csomag elérési útja) - egy MOD állomány betöltése egy csomagból a megadott helyre. A hely egy 1 és 128 közötti szám. Az index a dal sorszáma a csomagfájlban, ahonnan betöltődik; 1 és 64 közötti szám. Az állomány teljes vagy részleges elérési útját egyszeres vagy kettős idézőjelek között kell megadni.
Ha a megadott helyen már van egy dal, akkor áthelyeződik. Ha már játszódik, akkor először megáll. Bár a játék ideje alatt bármikor betölthető egy dal egy helyre, a lelassulás elkerülése végett jobb, ha az összes zene modul a játék kezdeti részén töltődik be, mivel ez a függvény bizonyos számítási időt igényel. Csomagfájlokat a JBFMOD csomagban mellékelt ToPack programmal lehet létrehozni.
Pl. for (i=1; i<16; i+=1) jbfmod_load_song_pack(i,i,'zene.pak');
A visszatérési érték 1 ha sikeres és 0 ha sikertelen.
jbfmod_play_song(hely) - a dal lejátszása a megadott helyről. A hely 1 és 128 (1.0-ban 32) közötti érték lehet. A jelenleg játszott dal megáll. Ha a megadott helyen nincs dal, akkor nem játszik le semmit.
Pl. jbfmod_play_song(2);
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
jbfmod_set_looping(kapcsoló) - a jelenlegi dal ismétlésének be- vagy kikapcsolása. A kikapcsolás a dal egyszeri lejátszását eredményezi.
Pl. jbfmod_set_looping(false)
1 ha sikeres, 0 ha sikertelen.
jbfmod_set_master_volume(hangerő) - a jelenleg játszott dal hangerejének beállítása. A hangerő értéke 0 és 256 között lehet. Az alapértelmezett érték a 256. A dal (újra)kezdésekor a hangereje visszaáll 256-ra.
Pl. jbfmod_set_master_volume(64);
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
jbfmod_set_order(jel) - ugrás az adott jelű dalra. A jel egy szám 0 és a jelenleg játszott dal száma között.
Pl. jbfmod_set_order(12);
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
Megjegyzés: a sorrend megváltoztatása nem befolyásolja a dal lejátszási idejét. Lásd még a jbfmod_get_time és jbfmod_get_timeformat függvényeket. Ezenkívül a kihagyások a zenében azt eredményezik, hogy az FMOD a dalban parancs és hangszerváltás kihagyásokat okoz, így néhol a hang a vártnál eltérőbb lehet.
jbfmod_set_pan_seperation(elkülönítés) - a hangszórókhoz való elkülönítés (0 és 1 közötti szám; 1 az alapértelmezett) beállítása a jelenlegi dalnál. Egy dal (újra)indulásakor visszaáll 1-re.
Pl. jbfmod_set_pan_seperation(0.3)
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
jbfmod_set_paused(kapcsoló) - szünetelteti (1) vagy folytatja (0) a jelenlegi dal lejátszását.
Pl. jbfmod_set_paused(1);
A visszatérési érték 1, ha sikerült, míg 0, ha nem.
jbfmod_stop_song() - a jelenleg játszott dal leállítása.
Pl. jbfmod_stop_song();
A visszaadott érték mindig 1.
JukeBox_GetVU(csatorna) - az adott csatorna (1-128) VU-ját adja. (a JBFMOD 2.0-ban már nincs benne!)
Pl. VU = JukeBox_GetVU(8);
A VU a megadott csatornán lejátszott hang hullámforma amplitúdója. Az adott csatornán lévő hangerőnél nagyobb vagy kisebb értékként is kiolvasódhat.
Egy tizedes értékkel tér vissza 0-tól 1-ig bezárólag.
JukeBox_GetVUperFreq(alacsonyfrek,magasfrek) - a megadott frekvencia-értéktartomány teljes VU-ját adja. (a JBFMOD 2.0-ban már nincs benne!)
Pl. VUfrek = JukeBox_GetVUperFreq(8000,10000);
Ez a parancs VU-méterek létrehozásának lehetővé tételére lett megalkotva. Ez a parancs nagyon pontatlan.
Egy 0 és annál nagyobb szám közötti tizedes értékkel tér vissza.
Kapcsolatfelvétel
Bár a JBFMOD-ot tartalmazó
csomag a GM hivatalos oldaláról tölthető le,
elkészítésében Mark Overmars, a GM szerzője nem vett részt,
ezért ne hozzá fordulj kérdésekkel ezzel kapcsolatban, hanem
hozzám: forge@dds.nl. Kérdezz
és nézelődj először a GM fórumán (http://forums.gamemaker.nl),
ahol az Extending Game Maker részleg tartalmaz egy
fórumot a JBFMOD-ról, amit én
gyakran megnézek, és lehet, hogy ott már valaki tudja a
választ a kérdésedre.
Ha valamiért nekem küldesz levelet, akkor ne csatolj
mellékleteket, mert a postafiókom mérete korlátozott. Ne
kérd tőlem a JBFMOD
forráskódját - nem fogom odaadni. Abban nem fogok segíteni,
hogy a játékodban hogyan használd a JBFMOD-ot;
erről a fórumokon kérj segítséget.