MultiSound
MultiSound lädt einen Sound mehrfach und ermöglicht damit das der selbe Sound mehrmals abgespielt werden kann, ohne das der den vorigen vorgänger abbricht.
Hier noch ein kleines Beispiel, einfach mal n kurzen Sound laden (1-2s); Gibt den Status des Sounds zurück
Procedure SoundStatus(Sound)
*DSB.IDirectSoundBuffer=PeekL(IsSound(Sound))
*DSB\GetCurrentPosition(@Status,0)
ProcedureReturn Status
EndProcedure
; Initialisiert die MultiSound umgebung,
; damit wird die maximale Anzahl der gleichen Sounds angegeben,
; Standard 10
Procedure InitMultiSound(Menge=10)
Global MultiSound_Menge = Menge-1
ProcedureReturn #True
EndProcedure
; Lädt ein MultiSound
Procedure LoadMultiSound(Sound, FileName$)
For n = 0 To MultiSound_Menge
Ergebnis = LoadSound(Sound+n, FileName$)
Next n
ProcedureReturn Ergebnis
EndProcedure
; Spielt ein freien MultiSound ab und gibt deren SoundID zurück
; Wenn alle belegt sind, wird der 0te abgespielt
Procedure PlayMultiSound(Sound)
For Nr = 0 To MultiSound_Menge
If Not SoundStatus(Sound+Nr)
PlaySound(Sound+Nr)
ProcedureReturn Sound+Nr
EndIf
Next Nr
PlaySound(Sound)
ProcedureReturn Sound
EndProcedure
InitSound()
UseOGGSoundDecoder()
InitMultiSound()
DateiName$ = OpenFileRequester("Musik", "*.*", "*.*", 0)
If DateiName$
LoadMultiSound(0, DateiName$)
MessageRequester("Echo", "Nun folgt ein mehrfaches Echo")
Repeat
PlayMultiSound(0)
Delay(Random(500))
ForEver
EndIf