hi everybody
is it possibile to use Fmod Ex with GLBasic? Any suggestion/experience?
thanks
A basic FMOD player with tracker music examples is included in the GLBasic samples folder. Try GLBasic > Samples > _Projects_ > fmod_player
The example doesn't use the newer FMOD Ex but from the example you should be able to work out how you can make use of the newer API.
Hey djbios, I'm actually looking into the use of FMOD Ex today, so I'll let you know what I find.
Hi!
I've a project with FMod EX. I tried to make a complete wrapper to capable to play samples made with the FMOD Designer (or whatever that name) .
It's not complete (I abbandonned the project as soon as I saw how much is an FMOD licence).
Hell, not complete is a lot better than then mess I've managed to create in the last hour. Are you willing to upload what you have? :)
Ok!
Here it is then.
This wrapper only contains that calls what I needed and tested currently.
This is how to use (the zip contains it also):
Simple mp3 playback:
LOCAL OK, OKs, play
//FMOD Init
OK = FMOD_Init(32,0)
//load mp3
LOCAL Snd%
OKs = FMOD_CreateSound("wave.mp3",0,Snd%)
//play on channel 1
LOCAL chan%
LOCAL chan2%
play = FMOD_PlaySound(0,Snd%,0,chan%)
//loop
WHILE KEY(2)=0
PRINT "Press Space to play the mp3 on the second chanel",0,0
PRINT "FMOD_INIT: " + OK,10,15
PRINT "FMOD_CreateSound: " + OKs,10,30
PRINT "SOUND: " + Snd,10,45
PRINT "FMOD_PlaySound: " + play,10,60
PRINT "Channel 1: " + chan%,10,75
PRINT "Channel 2: " + chan2%,10,90
PRINT "FMOD_SYSTEM running", 20, 185, TRUE
PRINT "press '1' TO test quit", 20, 200, TRUE
SHOWSCREEN
//keyboard
IF (KEY(57)) THEN play = FMOD_PlaySound(1,Snd%,0,chan2) //play on channel 2
WEND
//FMOD close
FMOD_Close()
EventSystem (using .fev and .fsb files exported from FMOD Designer)
// ----- EVENTSYSTEM -----
LOCAL OKES, OKsES, OKevent, OKparam, playES, OKupdate, OKstate
//EventSystem init
OKES = FMOD_ES_Init(64,0)
//load .fev
LOCAL SndES%=0
OKsES = FMOD_ES_CreateSound("sanyiteszt.fev",0,SndES%)
IF (OKsES<>0)
PRINT "CreateSound ERROR:" + OKsES, 50, 200
SHOWSCREEN
MOUSEWAIT
ENDIF
//load some events
LOCAL event%[]
DIM event%[5]
LOCAL group%
OKevent = FMOD_ES_GetEvent("sanyiteszt/random/wingflap_randoms", 0, event%[0])
OKevent = FMOD_ES_GetEvent("sanyiteszt/random/bird_randoms", 0, event%[1])
OKevent = FMOD_ES_GetEvent("sanyiteszt/loop/forest_calm", 0, event%[2])
OKevent = FMOD_ES_GetEvent("sanyiteszt/loop/fire_01", 0, event%[3])
OKevent = FMOD_ES_GetEvent("sanyiteszt/loop/cave_ambience", 0, event%[4])
IF (OKevent<>0)
PRINT "GetEvent ERROR:" + OKevent, 50, 200
SHOWSCREEN
MOUSEWAIT
ENDIF
LOCAL state%=0
LOCAL Statestr$
LOCAL param0%
LOCAL db%
// Query parameters count for one event
OKparam = FMOD_E_GetNumParameters(event%[3], db%)
IF (OKparam<>0)
PRINT "GetNumParameters ERROR:" + OKparam, 50, 200
SHOWSCREEN
MOUSEWAIT
ENDIF
//display
PRINT "GetNumParameters:" + db%, 00, 200
PRINT "click to continue", 00, 250, TRUE
SHOWSCREEN
MOUSEWAIT
// Get parameter
OKparam = FMOD_E_GetParameter(event%[3], "temp_parameter", param0%)
IF (OKparam<>0)
PRINT "GetParameter ERROR:" + OKparam, 50, 200
SHOWSCREEN
MOUSEWAIT
ENDIF
//loop
WHILE KEY(1)=0
//display statuses
PRINT "INIT: "+OKES,10,0
PRINT "LOAD: "+OKsES,10,15
PRINT "PROJECT:"+SndES,10,30
//PRINT "GetGroup:"+OKgroup,10,40
PRINT "GetEvent:"+OKevent,10,45
PRINT "Start:"+playES,10,60
OKupdate = FMOD_ES_Update()
PRINT "update: "+OKupdate,150,10
//display the 5 events status
FOR I=0 TO 4
OKstate = FMOD_E_GetState(event%[I], state%)
PRINT "getstate "+I+": "+OKstate + " state: "+state%,10,100+15*I
Statestr$=""
IF bAND(state%,1) THEN Statestr$=Statestr$+"Ready "
IF bAND(state%,2) THEN Statestr$=Statestr$+"Loading "
IF bAND(state%,4) THEN Statestr$=Statestr$+"Error "
IF bAND(state%,8) THEN Statestr$=Statestr$+"Playing "
IF bAND(state%,16) THEN Statestr$=Statestr$+"CHANNELSACTIVE "
IF bAND(state%,32) THEN Statestr$=Statestr$+"INFOONLY "
IF bAND(state%,64) THEN Statestr$=Statestr$+"STARVING "
PRINT Statestr$,350,100+15*I
NEXT
//display instructions
PRINT "FMOD_EVENTSYSTEM running, 1-5 to play", 20, 185, TRUE
PRINT "press ESC TO quit", 20, 200, TRUE
PRINT "Press left/right to test SetValue/GetValue", 20, 230, TRUE
//keyboard
IF (KEY(2)) THEN playES = FMOD_ES_PlaySound(event%[0])
IF (KEY(3)) THEN playES = FMOD_ES_PlaySound(event%[1])
IF (KEY(4)) THEN playES = FMOD_ES_PlaySound(event%[2])
IF (KEY(5)) THEN playES = FMOD_ES_PlaySound(event%[3])
IF (KEY(6)) THEN playES = FMOD_ES_PlaySound(event%[4])
IF (KEY(205))
LOCAL v
FMOD_EP_GetValue(param0%, v) //Test read parameter
INC v,0.01
FMOD_EP_SetValue(param0%, v); //Test write parameter
//Write to the screen
FMOD_EP_GetValue(param0%, v)
PRINT "PARAM: " + v, 10, 250
ENDIF
IF (KEY(203))
LOCAL v
FMOD_EP_GetValue(param0%, v) //Test read parameter
DEC v,0.01
FMOD_EP_SetValue(param0%, v); //Test write parameter
//Write to the screen
FMOD_EP_GetValue(param0%, v)
PRINT "PARAM: " + v, 10, 250
ENDIF
SHOWSCREEN
WEND
//EventSystem_Unload?
//EventSystem_Release?
[attachment deleted by admin]
Very cool Albert. Again, its a pity the fmod license is so expensive!
I checked and the latest fmodex dlls are not backwards compatible with the code. They will crash out when the FMOD event system check is attempted but I'm sure someone wanting to use them can work it out.
Nice code! :good
BTW I think the indie license is a lot cheaper, esp. per app.
Ahhh... based on my old example Version :)
Nice! Keep workin on it ! :)