vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB2005, VB200816.04.09
DirectX9 AudioPlayback

Wiedergabe von wav, mp3, ogg und co. mit Hilfe von DirectX9 AudioPlayback.

Autor:   Jan SchwienBewertung:  Views:  11.724 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Es gibt natürlich noch andere Möglichkeiten Musik mit DirectX9 abzuspielen, aber das hier ist die leichteste und effektivste Variante, wenn es um längere Musik geht bzw. um besondere Datentypen wie z.B. Mp3, wma, ogg.

Fügen Sie Ihrem Projekt zunächst den Verweis "Microsoft.DirectX.AudioVideoPlayback" hinzu.

Erstellen Sie ein neues Klassenmodul mit folgendem Code:

Imports Microsoft.DirectX
Public Class AudioPlayback
  ' Musik ist zu Ende Event
  Public Event AudioEnd(ByVal sender As Object, ByVal e As EventArgs)
 
  ' DirectX9 Audio
  Public WithEvents m_Audio As AudioVideoPlayback.Audio = Nothing
 
  ' Variable : Läuft die Musik noch ?
  Private m_AudioPlaying As Boolean = False
  ''' <summary>
  ''' Lädt die angegebene Audio-Datei
  ''' </summary>
  ''' <param name="Filename">Dateiname der Audio-Datei</param>
  Public Sub Load(ByVal Filename As String)
    m_Audio = New AudioVideoPlayback.Audio(Filename)
  End Sub
  ''' <summary>
  ''' Spielt die Audio-Datei ab
  ''' </summary>
  Public Sub Play()
    Try
      m_Audio.Play()
      m_AudioPlaying = True
    Catch
      m_AudioPlaying = False
    End Try
  End Sub
  ''' <summary>
  ''' Abspielvorgang stoppen
  ''' </summary>
  Public Sub [Stop]()
    m_Audio.Stop()
    m_AudioPlaying = False
  End Sub
  ''' <summary>
  ''' Pause-Funktion für den Abspielvorgang
  ''' </summary>
  Public Sub Pause()
    m_Audio.Pause()
  End Sub
  ' Gibt die Ressourcen frei
  Private Sub Dispose()
    m_Audio.Dispose()
  End Sub
  ''' <summary>
  ''' Beendet die Wiedergabe und gibt die Ressourcen frei
  ''' </summary>
  Public Sub Beenden()
    [Stop]()
    Dispose()
  End Sub
  ''' <summary>
  ''' Legt die Lautstärke fest oder gibt diese zurück
  ''' </summary>
  Public Property Volume() As Integer
    Get
      Return m_Audio.Volume
    End Get
    Set(ByVal value As Integer)
      m_Audio.Volume = value
    End Set
  End Property
  ''' <summary>
  ''' Gibt zurück, ob aktuell ein Abspielvorgang läuft
  ''' </summary>
  Public ReadOnly Property IsPlaying() As Boolean
    Get
      Return m_AudioPlaying
    End Get
  End Property
  ' Löst ein Event aus, wenn der Abspielvorgang beendet ist
  Private Sub Ending(ByVal sender As Object, _
    ByVal e As EventArgs) Handles m_Audio.Ending
 
    m_AudioPlaying = False
 
    ' Event auslösen
    RaiseEvent AudioEnd(sender, e)
  End Sub
End Class

Anwendungsbeispiel:

' Verweis auf unsere AudioPlayback-Klasse
Dim WithEvents Playback As New AudioPlayback
' MP3 abspielen
Playback.Load("d:\temp\MyAudio.mp3")
' Wiedergabe stoppen
Playback.Stop()
' Benachrichtung, wenn Abspielvorgang beendet ist
Private Sub Playback_AudioEnd(ByVal sender As Object, _
  ByVal e As System.EventArgs) Handles Playback.AudioEnd
 
  ' Abspielvorgang beenden
  MsgBox "Wiedergabe beendet!"
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.