játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5448
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2520

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
(C++) FMOD Alapok 2006.05.18 07:32


Manapság egy játék elkészítésének szinte elengedhetetlen része, hogy az a játék tartalmazzon hangokat illetve zenéket. A hangok és zenék egy programba való betöltéséhez és lejátszásához nyújt segítséget ez a kis cikk.
Biztosan találkozott már mindenki a DirectX-ben található DirectMusic illetve DirectSound modullal. Nos, az FMOD is zenék és hangok betöltéséhez illetve lejátszásához ad egy alapot. És megjegyzem tud annyit mint a DirectSound és a DirectMusic. Két részre lehet osztani, az egyik az FSOUND a másik pedig az FMUSIC. Ebben a cikkben csak az FSOUND használatát fogom bemutatni, ott is csak a betöltést illetve lejátszást és még pár fontos dolgot.

Tehát először is linkeld be a libfmod.a fájlt!
Azután importáljuk be az „fmod.h” fejállományt!

Kód:
#include <iostream>
#include <fmod.h>

using namespace std;

FSOUND_SAMPLE* music;

int main ()
{
   FSOUND_Init (44100, 32, 0);

   Az FSOUND_Init parancsal inicializáljuk az FSOUND-ot.
   Az első paraméter (44100) a frekvenciát jelenti Hertz-ben megadva.
   A második paraméter (32) az összes csatorna számát adja meg.
   Ezzel inicializáltuk is az FSOUND-ot.

   music=FSOUND_Sample_Load (0,”pacman2.wav",0, 0, 0);
   FSOUND_PlaySound (0,music);
   FSOUND_SetVolume(0,200);

   Az FSOUND_Sample_Load parancsal betöltjük a lejátszani kívánt zenét.
   Az első „0” azt adja meg, hogy melyik csatornában található a hang.
   Az FSOUND_PlaySound lejátsza a zenét az első paraméter „0” a csatorna sorszámát adja meg.
   A music paraméter pedig ahova betöltöttük a zenét.
   Az FSOUND_SetVolume parancsal a hang erősségén lehet állítani. A  „0” a
   csatorna, a 200 pedig a hang erőssége.

   getchar();  // billentyű lenyomására vár
   
   FSOUND_StopSound (0);
 
   Az FSOUND_StopSound leállítja a zenét.

   FSOUND_Sample_Free (music);
   FSOUND_Close();

   Az FSOUND_Sample_Free() kitörli a music-ban található hangállományt, az
   FSOUND_Close() értelemszerüen bezárja az FSOUND-ot.
   
   return 0;
}


Támogatott formátumok:

AIFF, ASF, ASX, DLS, FLAC, FSB, IT, M3U, MID, MOD, MP2, MP3, OGG, PLS, RAW, S3M, VAG, WAV, WAX, WMA, XM, XMA

A szürkével jelölteket a legújabb, FMODEx Release 4.03 kiadás támogatja, a többivel az FMOD 3 is megbirkózik.

További részletek:
http://www.fmod.org/

A kódot Dev C++-ban írtam és ott remekül működött.
Ha valami kérdésed lenne írj az e-mail címemre: kekkdani@coder.hu

Sok sikert az FMOD programozásához!
Fájl : (C++) FMOD Alapok
Méret: 0,389 Mb - Letöltve : 884

Értékelés: 0

Új hozzászólás
Csaba42          2006.06.06 04:52
Szerintem a rövidsége ellenére teljesen érthető, nekem tetszett (csak máskor, kérlek, ne írj a "Kód:" területre olyat, ami nem a kódba való!)
T.C          2006.05.20 16:37
Hát őszintén szólva én már dolgoztam fmod rendszerrel. Egy valamit is érő akármilyen játék minimum 2-3 féle hangot is játszik le egyszerre esetleg több csatornán. Ebben szerintem alap egy framework írása, nem bele a main-be mindent...
Daani          2006.05.19 11:30
Na mind1 a kritikák teljesen jogosak.
Daani          2006.05.19 09:23
balogh9-nek igaza van
balogh9          2006.05.19 08:44
mondjuk inkább azt, hogy lejácca, csak mire elkezdődik a hang addigra ki is lép a program...
MaNiAc          2006.05.19 07:43
"A getchar() parancsot azért tettem oda mert nélküle le sem játszaná a hangot. "


???
Daani          2006.05.19 05:52
Hello!
A getchar() parancsot azért tettem oda mert nélküle le sem játszaná a hangot.
balogh9          2006.05.18 14:00
a csatornát állítja le, ezzel a hangot is, ami az adott csatornán fut
kicsy          2006.05.18 12:32
Akkor meg minek állítja meg getchr() után?
balogh9          2006.05.18 12:26
hát sztem yo a példa. amit leírt az eccer lejácca a pacman2.wav-ot aztán befejeződik.
kicsy          2006.05.18 09:15
Ha nem így van akkor rossz a példa
kicsy          2006.05.18 09:14
Én azt vettem ki ebből hogy az FSOUND_PlaySound (0,music); folyamatos lejátszást csinál, máskülönben nem kéne megállítani
balogh9          2006.05.18 09:12
kicsit átláthatatlan. én sztem még hiányzik belőle a folyamatos lejáccás, ami elég fontos ebben a témakörben...
MaNiAc          2006.05.18 08:47
"És megjegyzem tud annyit mint a DirectSound és a DirectMusic. "

Talán mert DirectSound-ot (is) használ?

Mellesleg egyetértek az előttem szólókkal...
szeki          2006.05.18 08:25
Ja énis csak a tömény kódot láttam, meg egy rövidke általános leírást. Kicsit kitérhetél volna a lehetőségekre, nem annyival kellett volna lerendezni hogy "tud annyit mint a DirectMusic illetve DirectSound" azért hasznos cikk mindenkinek..
kicsy          2006.05.18 08:17
Kicsit lehetne részletesebb, főleg az elején, honnan mit töltsön le, mégis, mi az az FMOD, licensz, stb