Tipp 0193 Sound-Dateien laden, abspielen, wiederholen
Autor/Einsender:
Datum:
  Alexander Csadek
27.01.2002
Entwicklungsumgebung:
DirectX-Version:
  VB 6
DirectX 7
Mit diesem Beispiel können Sound (z.B. WAV-Dateien geladen und abgespielt werden. Dazu gibt es zwei Möglichkeiten, ein einmaliger Durchlauf bis zum Ende des Sounds oder ein wiederholtes Abspielen (loop).
Zu diesem Tipp finden Sie eine ausführliche Beschreibung in unserer DirectX-Rubrik zu DirectSound unter Sound laden und abspielen.
Der abgebildete Code bezieht sich nur auf die eigentliche Funktion. Da der Code für die Initialisierung von DirectX meist immer gleich bleibt, wurde dieser hier nicht gesondert abgebildet.
 
Option Explicit

Dim DX As New DirectX7
Dim DS As DirectSound
Dim dsWavDatei As DirectSoundBuffer

Private Sub Form_Load()
  On Local Error GoTo ErrorHandler
 
  Set DS = DX.DirectSoundCreate("")
  DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
 
  Me.Show
 
  Exit Sub
ErrorHandler:
  MsgBox "DirectSound-Objekt konnte nicht initialisiert " & _
         "werden." & vbCrLf & "Prüfe, ob eine Soundkarte " & _
         "installiert ist und ob sie funktioniert." & vbCr & _
         Err.Number & "/" & Err.Description
  End
End Sub
 
Private Sub cmd_Load_Click()
  Dim dsBDesc As DSBUFFERDESC
  Dim s As WAVEFORMATEX
 
  On Error GoTo ErrorHandler
 
  With dsBDesc
    .lFlags = DSBCAPS_STATIC
  End With
  
  Set dsWavDatei = DS.CreateSoundBufferFromFile _
        (App.Path & "\Sound.wav", dsBDesc, s)
 
  cmd_Load.Enabled = False
  cmd_Play.Enabled = True
  Timer1.Enabled = True
 
  Exit Sub
ErrorHandler:
  MsgBox "Fehler beim Laden der Wav-Datei." & vbCr & _
      Err.Number & "/" & Err.Description
  End
End Sub
 
Private Sub cmd_Play_Click()
  If chk_Loop.Value = 0 Then
    dsWavDatei.Play DSBPLAY_DEFAULT
  Else
    dsWavDatei.Play DSBPLAY_LOOPING
  End If
 
  cmd_Play.Enabled = False
  chk_Loop.Enabled = False
End Sub
 
Private Sub cmd_Stop_Click()
  dsWavDatei.Stop
  dsWavDatei.SetCurrentPosition 0
 
  cmd_Play.Enabled = True
  chk_Loop.Enabled = True
End Sub
 
Private Sub cmd_Close_Click()
  Set dsWavDatei = Nothing
  Set DS = Nothing
  Set DX = Nothing
  End
End Sub

Private Sub Timer1_Timer()
  Dim dsc As DSCURSORS

  dsWavDatei.GetCurrentPosition dsc
  If dsc.lPlay > 0 Then
    cmd_Stop.Enabled = True
  Else
    cmd_Stop.Enabled = False
    cmd_Play.Enabled = True
    chk_Loop.Enabled = True
  End If
End Sub
 
Weitere Links zum Thema
Lautstärke, Balance, Frequenz & Cursorposition
Sounds binär in SoundBuffer laden
Hinweis
Um dieses Beispiel ausführen zu können, wird die DirectX 7 for Visual Basic Type Library benötigt (siehe dazu die Erläuterungen in der DirectX-Rubrik).

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (36 kB) Downloads bisher: [ 4176 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 23. September 2011