Seite 2 von 2

Verfasst: 27.01.2008 02:44
von STARGÅTE
Tachchen, ich hätte da auch noch n kleine Erweiterung:

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.
; 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
Hier noch ein kleines Beispiel, einfach mal n kurzen Sound laden (1-2s)
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

Verfasst: 18.05.2008 23:20
von STARGÅTE
und wieder hat sich eine nützliche Include nutzlos gemacht, dank der neuen Beta hat ja Sound nun einen erweiterten Parameter:
Kanal