Tipp 0091 Sound-Dateien laden, abspielen, wiederholen
Autor/Einsender:
Datum:
  Alexander Csadek
08.10.2005
Entwicklungsumgebung: VB.Net 2003
DirectX-Version:   DirectX 9
Das Abspielen einer WAV-Datei ist in DirectX 9 sehr einfach. Dazu muss ein DirectSoundDevice erzeugt und der CooperativeLevel gesetzt werden. Danach wird die WAV-Datei ohne irgendwelche besonderen Flags in einen SecondaryBuffer geladen und die Methode Play verwendet.
Bei der Methode Play muss ein Flag mitgegeben werden, damit DSound weis, ob der Sound nur einmal oder wiederholt abgespielt werden soll (BufferPlayFlags.Looping oder BufferPlayFlags.Default). Angehalten wird das Abspielen mit der Methode Stop des Objekts SecondaryBuffer. Um festzustellen, ob der SoundBuffer aktuell noch abspielt, genügt es den Status des SecondaryBuffer abzufragen.
 
 'DirectSound Objekte
Private DSoundDevice As Device = Nothing
Private DSSecondaryBuffer As SecondaryBuffer = Nothing

Private Sub frmMain_Load(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles MyBase.Load
  Try
     'DirectSoundDevice erzeugen
    DSoundDevice = New Device
     'CooperativeLevel setzen
    DSoundDevice.SetCooperativeLevel( _
          Me, CooperativeLevel.Priority)
  Catch ex As Exception
    MsgBox("Fehler beim Erstellen des DSoundDevice." & _
          vbCrLf & ex.Message.ToString())
  End Try
End Sub

Private Sub cmd_Load_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmd_Load.Click
  Try
     'WAV-Datei ohne irgendwelche besonderen Flags laden
    DSSecondaryBuffer = New SecondaryBuffer( _
          Application.StartupPath & "\Sound.wav", DSoundDevice)
      cmd_Load.Enabled = False
      cmd_Play.Enabled = True
      Timer1.Enabled = True
  Catch ex As SoundException
    MsgBox("Fehler beim Laden der WAV-Datei." & vbCrLf & _
          ex.Message.ToString())
  End Try
End Sub

Private Sub cmd_Play_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmd_Play.Click
  If (Not DSoundDevice Is Nothing) Then
     'Abspielen der WAV-Datei
     'Je nachdem, ob die CheckBox True oder False ist,
     'also das WAV sich wiederholen soll oder nicht
    DSSecondaryBuffer.Play(0, IIf(chk_Loop.Checked, _
          BufferPlayFlags.Looping, BufferPlayFlags.Default))
    cmd_Play.Enabled = False
    cmd_Stop.Enabled = True
  End If
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Timer1.Tick
  If (Not DSoundDevice Is Nothing) Then
     'Prüfen, ob der SoundBuffer noch abspielt
    If (DSSecondaryBuffer.Status.Playing) Then
      cmd_Stop.Enabled = True
    Else
      cmd_Play.Enabled = True
      cmd_Stop.Enabled = False
    End If
  End If
End Sub

Private Sub cmd_Stop_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles cmd_Stop.Click
  If (Not DSoundDevice Is Nothing) Then
     'Abspielen stoppen
    DSSecondaryBuffer.Stop()
    cmd_Play.Enabled = True
    cmd_Stop.Enabled = False
  End If
End Sub
 
Hinweis
Um dieses Beispiel ausführen zu können, wird die DirectX 9 for Managed Code Runtime benötigt.

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (40,2 kB) Downloads bisher: [ 379 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

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

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 21. Januar 2012