Seite 1 von 1

LoadSound / PlaySound - Länge der Audiodatei

Verfasst: 19.03.2012 16:57
von tim
Hallo,

gibt es einen Weg die Länge einer Audiodatei (z.B. in Millisekunden) zu ermitteln?

Alternativ:
Kann ich feststellen wann PlaySound eine Datei fertig abgespielt hat?

Grund:
...ich will mehrere Audiodateien hintereinander laufen lassen.
Die Nächste soll natürlich erst abspielen wenn die davor fertig ist.


Gruß
Tim

Re: LoadSound / PlaySound - Länge der Audiodatei

Verfasst: 19.03.2012 17:50
von - chris -
Hiermit kann festgestellt werden, ob die Datei noch abgespielt wird:

Code: Alles auswählen


EnableExplicit

Define FileName$, sound.i, s.i

If InitSound() = 0
  End
EndIf

Procedure IsSoundPlaying(Sound.i)
  Protected Address.i, *DSB.IDirectSoundBuffer, Status.i
  Address = IsSound(Sound)
  If Address = 0
    ProcedureReturn 0
  EndIf
  *DSB.IDirectSoundBuffer = PeekI(Address)
  *DSB\GetStatus(@Status)
  If Status = 1 Or Status = 5
    ProcedureReturn 1
  EndIf
  ProcedureReturn 0
EndProcedure

FileName$ = "sound01.wav"

sound = LoadSound(#PB_Any, FileName$)

If sound

  If IsSound(sound)

    PlaySound(sound)

    Repeat
      s = IsSoundPlaying(sound)
      Delay(10)
    Until s = 0

    FreeSound(sound)

  EndIf

EndIf


Re: LoadSound / PlaySound - Länge der Audiodatei

Verfasst: 19.03.2012 17:55
von Drago
Hier eine Version von Stargate:

Code: Alles auswählen

 Procedure SoundStatus(Sound)   
  *DSB.IDirectSoundBuffer=PeekL(IsSound(Sound))
  *DSB\GetCurrentPosition(@Status,0)
  ProcedureReturn Status
EndProcedure 
Gibt 0 zurück, wenn die Musik zuende ist....

Re: LoadSound / PlaySound - Länge der Audiodatei

Verfasst: 19.03.2012 17:59
von tim
Hi,

danke für die Hilfe. Hab in der Zwischenzeit auch noch etwas
weitergesucht und herausgefunden dass es mit "PlayMovie" auch
geht.

Darin ist eine Funktion "MovieStatus" schon enthalten.


Aber wer sucht schon nach "Movie" wenn er "Sound" abspielen will...



Gruß & Danke
Tim