vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB622.04.02
Mehrere WAVE-Dateien gleichzeitig abspielen

Das Abspielen zweier oder mehrerer WAVE-Dateien stellt für viele ein Problem dar - bis jetzt ;-))

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  27.485 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das Abspielen von WAVE-Dateien kann entweder über das MCI-Control erfolgen oder auch per API-Funktion sndPlaySound. Das ganze klappt auch ganz gut - doch: Sollen zwei oder mehrere WAVE-Dateien gleichzeitig abgespielt werden, braucht man entweder mehrere MCI-Controls - die API-Funktion z.B. scheidet hier sofort aus!

Es gibt aber noch einen Weg, eine WAVE-Datei abzuspielen - wiederum per API-Funktion - aber diesmal mit Hilfe der universellen Funktion mciSendString. Und hiermit ist es dann auch möglich zwei oder noch mehr WAVE-Dateien gleichzeitig abzuspielen.

Alles was man beachten muss, ist daß man für jede abzuspielende WAVE-Datei ein eindeutigen AliasName benutzt, über den das Abspielen und Stoppen der Wiedergabe erfolgt.

Kopieren Sie nachfolgenden Code in ein Modul:

' benötigte API-Deklaration
Private Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" ( _
  ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength As Long, _
  ByVal hwndCallback As Long) As Long
 
Private Declare Function GetShortPathName Lib "kernel32" _
  Alias "GetShortPathNameA" ( _
  ByVal lpszLongPath As String, _
  ByVal lpszShortPath As String, _
  ByVal cchBuffer As Long) As Long
' WAVE-File abspielen
Public Function WAVE_Play(ByVal sFile As String, _
  ByVal sAlias As String) As Boolean
 
  Dim bResult As Boolean
 
  ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
  ' wie Leerzeichen Probleme machen
  Dim sBuffer As String
  Dim lResult As Long
 
  sBuffer = Space$(255)
  lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
 
  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
 
    ' MCI öffnen
    If mciSendString("open " & sFile & _
      " type WaveAudio alias " & sAlias, 0, 0, 0) = 0 Then
 
      ' WAVE abspielen
      mciSendString "play " & sAlias & " from 0", 0, 0, 0
    End If
  End If
 
  WAVE_Play = bResult
End Function
' Wiedergabe stoppen und MCI schließen
Public Sub WAVE_Stop(ByVal sAlias As String)
  mciSendString "stop " & sAlias, 0, 0, 0
  mciSendString "close " & sAlias, 0, 0, 0
End Sub

Beispiel für das Abspielen zweier WAVE-Files

Dim sFile1 As String
Dim sFile2 As String
 
sFile1 = "Wave_1.wav"
sFile2 = "Wave_2.wav"
 
' Wiedergabe starten
WAVE_Play sFile1, "MyWAVE_1"
WAVE_Play sFile2, "MyWAVE_2"
' Wiedergabe stoppen und MCI schließen
WAVE_Stop "MyWAVE_1"
WAVE_Stop "MyWAVE_2"

Dieser Tipp wurde bereits 27.485 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (1 Beitrag)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel