wie kann ich die Länge in ms von den o.g. Dateien ermitteln?
Habe in Fmod nur den Befehl für die Laufzeit gefunden ein passender befehl wie "FSOUND_Stream_GetLengthMs()" fehlt bei FMUSIC ganz.
Danke für eure Hilfe
Lukaso
Ich weiß zwar keine direkte Antwort auf Deine Frage, möchte aber folgendesLukaso hat geschrieben:Hallo,
wie kann ich die Länge in ms von den o.g. Dateien ermitteln?
Habe in Fmod nur den Befehl für die Laufzeit gefunden ein passender befehl wie "FSOUND_Stream_GetLengthMs()" fehlt bei FMUSIC ganz.
Danke für eure Hilfe![]()
Lukaso
Super Danke!Froggerprogger hat geschrieben:In mods/midis, etc. ist die Spielzeit nicht gespeichert.
Auch kann man sie nicht so einfach bestimmen, da zwischendrin Tempoänderungen auftauchen können, loops, etc. Bei mods gehen sogar Endlosschleifen.
Einige Workarounds finden sich hier:
(Entweder Spielzeit aus Anzahl der Orders berechnen, was wohl ganz gut klappen soll, oder einmal komplett auf leise und in schnell durchspielen)
http://www.fmod.org/forum/viewtopic.php?t=1089
Hmmm. Seltsam. Liegt vielleicht daran, dass fmod das Midis-Abspielen nicht selbst übernimmt, sondern auch nur ans System weiterleitet. Was heißt den langsam ?Lukaso hat geschrieben:Nochwas: Mir ist gerade aufgefallen, bei MIDI Dateien (*.mid) dauert die Prüfung ob etwas Abgespielt wird durch "FMUSIC_IsPlaying(hmusic) & $FF = #True" extrem lange. Da ich in einer Schleife jeden durchlauf checke ob etwas abgespielt wird, merke ich einen hohen Performanceeinbruch bei allen anderen Formaten außer MIDIs gehts ohne probs ....
Mit FMUSIC_IsFinished kann ich leider nix anfangen.Froggerprogger hat geschrieben:Hmmm. Seltsam. Liegt vielleicht daran, dass fmod das Midis-Abspielen nicht selbst übernimmt, sondern auch nur ans System weiterleitet. Was heißt den langsam ?
Vielleicht ist FMUSIC_IsFinished da geeigneter ?
Code: Alles auswählen
; Achtung: Pseudocode, per Copy&Paste sicherlich nicht lauffähig.
Global IsPlaying.l
Procedure Thread_IsPlaying(*ch)
While IsPlaying
IsPlaying = FMUSIC_IsPlaying(*ch) & $FF
Wend
EndProcedure
*ch = FMUSIC_Play(...)
IsPlaying = 1
CreateThread(@Thread_IsPlaying(*ch))
While IsPlaying
; Rest Code
Wend