Erweiterte Soundbefehle

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten