Seite 1 von 1
FMOD -> *.mod Includen?!
Verfasst: 26.10.2004 16:55
von Lukaso
Hallo,
ich suche ein Example, wo gezeigt wird wie ich eine Includete Mod Datei zu abspielen bringe ausm Speicher heraus. Ich habe zwar ein Beispiel gefunden, dass war aber für MP3 Dateien (FSOUND_*) ich bräuchte das ganze für (FMUSIC_*) habe es schon mit FMUSIC_LoadSongEx probiert, nur rasselt mein Prog dabei ab
Würde mich über Tips freuen, habe es noch nicht so drauf mit "Memory"
MFG Lukaso
Verfasst: 26.10.2004 23:37
von Froggerprogger
Folgender Code läuft bei mir.
Der Trick ist, FMUSIC_LoadSongEx existiert - genau wie z.B. auch FSOUND_Stream_Open - in zwei Versionen.
FMUSIC_LoadSongEx erwartet einen String als 1sten Parameter.
FMUSIC_LoadSongEx2 erwartet einen Pointer (zusammen mit #FSOUND_LOADMEMORY gesetzt). Durch die 2. Funktion läßt sich die Typprüfung zur Kompilierzeit umgehen. Alternative wäre gewesen, immer nur einen Pointer zu übergeben, dann müßte man aber Strings ebenfalls als Pointer übergeben.
Code: Alles auswählen
FSOUND_Init(44100, 32, 0)
*hSong = FMUSIC_LoadSongEx2(?startinclude, 0, ?endinclude - ?startinclude, #FSOUND_LOADMEMORY, 0, 0)
If *hSong
FMUSIC_PlaySong(*hSong)
Else
Debug "error"
EndIf
Delay(5000)
FSOUND_Close()
End
startinclude:
IncludeBinary "70sgrove.mod"
endinclude:
Verfasst: 27.10.2004 20:48
von Lukaso
@Froggerprogger
Danke Funktionert Super
Der Befehl "FMUSIC_LoadSongEx2" hat mir gefehlt

Verfasst: 27.10.2004 21:08
von Lukaso
@Froggerprogger
da duch dich so super mit FMOD auskennst, habe ich noch 2 Fragen an dich
1. Wie kann ich mir FSOUND_IsPlaying(1) auslesen ob etwas Abgespielt ist, bei mir bekomme ich immer einen Rückgabe wert, der ungefähr so aussieht: "19595776" wenn nix abgespielt wird, und "19595777" wenn etwas abgespielt wird, dass problem ist aber, dass sich der Rückgabert nach einter zeit (z.b. 1Tag) ändert! ( = #True geht deswegen nicht

)
2. Ich Vergleiche mit
Code: Alles auswählen
FSOUND_Stream_GetLength(hstream) = FSOUND_Stream_GetPosition(hstream)
ob ein Lied zu ende ist, aber bei OGG Dateien geht dass nicht zu 100%, er erkennt fast nie das Ende. Habe es schon mit
Code: Alles auswählen
FSOUND_Stream_GetLength(hstream)-10 < FSOUND_Stream_GetPosition(hstream)
versucht wegen potenzieller messungenauigkeit, bring aber genauso wenig erfolg, dass Problem ist nur bei OGG Dateien anzutreffen, WMV MP3 WMA gehen alle ohne Probleme!
Danke für die Hilfe

Verfasst: 28.10.2004 00:27
von Froggerprogger
Zu 1.
FSOUND_IsPlaying liefert ein 'signed char', also unter PB ein Wert vom Typ Byte. Daher kann in den restlichen 3 Bytes des Registers irgendein Unsinn stehen. Korrekt empfängst Du den Wert per:
oder direkt
Zu 2.
Weiss ich nix zu, aber wenn ich morgen Zeit habe(n sollte

), dann schau ich mir das mal an.