FMOD Prob

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

FMOD Prob

Beitrag von Deeem2031 »

Also ich versuche seit heut morgen verzweifelt eine MP3-Datei per fmod zu öffnen, aber irgendwie will das nicht. Hier mal mein Versuch extrem gekürzt:

Code: Alles auswählen

Global test
!MOV [v_test], Esp
Debug test
OpenLibrary(0,"c:\purebasic full\greeem\data\fmod.dll")
Sid = CallFunction(0,"_FSOUND_Stream_Open@16","C:\downloads\Musik\fav\fav__maybe.mp3",0,0,0)
Debug Sid
!MOV [v_test], Esp
Debug test
Debug CallFunction(0,"_FSOUND_Stream_PlaySong@8",1,Sid)
!MOV [v_test], Esp
Debug test
CloseLibrary(0)
!MOV [v_test], Esp
Debug test
Was mich außerdem verwundert is, dass sich der StackPoiter verändert..
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Sry, hatte garnicht bemerkt das ich garkein Init drin hatte, das war aber nicht der Fehler.
Der Fehler war, dass ich nicht FSOUND_Stream_PlaySong sonder FSOUND_Stream_Play aufrufen muss... thx@traumatic :)

Hier der funktionierende Code:

Code: Alles auswählen

Global test 
!MOV [v_test], Esp 
Debug test 
OpenLibrary(0,"c:\purebasic full\greeem\data\fmod.dll") 
Debug CallFunction(0,"_FSOUND_Init@12",44100,32,0)
Sid = CallFunction(0,"_FSOUND_Stream_Open@16","C:\downloads\Musik\fav\fav__maybe.mp3",0,0,0) 
Debug Sid 
Debug CallFunction(0,"_FSOUND_Stream_Play@8",1,Sid) 
!MOV [v_test], Esp 
Debug test 

Repeat
  Delay(10)
ForEver
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Hast Du eine Hauptschleife, oder einfach z.B. ein Delay(5000) im weiteren Programm ?
!UD2
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ich hab 'ne Hauptschleife, wieso fragst du?

Ich hab allerdings noch ein Prob mit der fmod.dll
Und zwar gibt bei mir FMUSIC_IsPlaying und FMUSIC_IsFinished immer einen Wert zurück der weder #false noch #true entspricht und der sich auch nicht ändert wenn das Lied zuende ist...

Code: Alles auswählen

OpenLibrary(0,"c:\purebasic full\greeem\data\fmod.dll") 
Debug CallFunction(0,"_FSOUND_Init@12",44100,32,0)
hMusic = CallFunction(0,"_FMUSIC_LoadSong@4","c:\purebasic full\greeem\data\music\2.mod")
Debug hMusic
Debug CallFunction(0,"_FMUSIC_PlaySong@4",hMusic)
    
Repeat
  Debug CallFunction(0,"_FMUSIC_IsFinished@4",hMusic)
  Delay(1000)
ForEver
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Hm, ok hab gemerkt das ein char (byte) zurück gegeben wird, aber nu funktioniert SetLooping auf einmal nichtmehr.... :|

Code: Alles auswählen

OpenLibrary(0,"c:\purebasic full\greeem\data\fmod.dll") 
Debug CallFunction(0,"_FSOUND_Init@12",44100,32,0)
hMusic = CallFunction(0,"_FMUSIC_LoadSong@4","c:\purebasic full\greeem\data\music\2.mod")
Debug hMusic
Debug CallFunction(0,"_FMUSIC_SetLooping@8",hMusic,#False)&$FF
Debug CallFunction(0,"_FMUSIC_PlaySong@4",hMusic)
    
Repeat
  Debug CallFunction(0,"_FMUSIC_GetTime@4",hMusic)
  Debug CallFunction(0,"_FMUSIC_IsFinished@4",hMusic)&$FF
  Delay(1000)
ForEver
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Ich hatte deine Antwort noch nicht gesehen, als ich meine Antwort gab.
Es hätte ja sein können, dass sich Dein Programm einfach sofort beendet, bevor man etwas hört, diesen Fehler hatte schonmal jemand gemacht.

Bzgl SetLooping, folgendes funktioniert bei mir ohne Probleme:
(ich nutze allerdings den FMOD-Import, müßtest Du also noch auf Callfunction umschreiben, oder Dir ebenfalls den aktuellen import holen.)

Code: Alles auswählen

FSOUND_Init(44100,32,0)
hMusic = FMUSIC_LoadSong("test.mod")

Debug FMUSIC_SetLooping(hMusic,#True) & $FF
Debug FMUSIC_PlaySong(hMusic)

Repeat 
  Debug FMUSIC_GetTime(hMusic) 
  Debug FMUSIC_IsFinished(hMusic)&$FF 
  Delay(1000) 
ForEver
Nach einem Durchlauf loopt der Song, IsFinished springt auf 1 und die GetTime läuft immer weiter.
!UD2
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ich habs jetzt einfach mal mit einer anderen Datei versucht weil dein Bsp. auch nicht funktionierte und jetzt hats funktioniert ...
Blöde fmod.dll /:->
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Blöde fmod.dll
...falls es daran lag (was ich bezweifle). Aber bald gibt's fmod Ex := fmod 4.0 , damit wird alles anders und hoffentlich alles (noch) besser (es gibt dann z.B. für den Anwender keinen Unterschied zwischen Samples und Streams mehr - was vieles vereinfacht)
!UD2
Antworten