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

https://www.vbarchiv.net
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB2005, VB2008, VB2010, VB201229.08.14
Einfache Class zum Aufnehmen

Mit dieser Klasse können Sie kinderleicht Sound aufnehmen, der vom Mikrofon Eingang kommt.

Autor:   Samir Ben KhederBewertung:  Views:  7.836 
www.bk-software.deSystem:  Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgende Klasse stellt alle Funktionen zur Sound-Aufnahme am angeschlossenen Mikrofon, sowie eine Abspiel-Funktion zur Verfügung.

Option Strict On
Public Class clsAufnahme
 
  Private Declare Function mciSendString Lib "winmm.dll" _
    Alias "mciSendStringA" ( _
    ByVal Command As String, _
    ByVal ReturnString As String, _
    ByVal ReturnLenght As Integer, _
    ByVal Callback As Integer) As Long
 
  Private rs As String
  Private cb As String
  Private m_Pfad As String
  Private m_Alias As String = "aufnahme"
 
  Public Event Aufnahme_Gestartet()
  Public Event Aufnahme_Beendet()
  Public Event Aufnahme_Abspielen()
  Public Event Aufnahme_Fehler(ByVal msg As String)
 
  Public Sub New(ByVal sPfad As String, ByVal sAlias As String)
    Pfad = sPfad
    Me.Alias = sAlias
  End Sub
 
  Public Property Pfad() As String
    Get
      Return m_Pfad
    End Get
    Set(ByVal Value As String)
      m_Pfad = Value
    End Set
  End Property
 
  Public Property [Alias]() As String
    Get
      Return m_Alias
    End Get
    Set(ByVal Value As String)
      m_Alias = Value
    End Set
  End Property
 
  Public Sub Starten()
    Try
      rs = New String(CChar(" "), 128)
      mciSendString("Open New Type waveaudio Alias " & m_Alias, rs, 128, CInt(cb))
      mciSendString("record " & m_Alias, rs, 128, CInt(cb))
    Catch ex As Exception
      RaiseEvent Aufnahme_Fehler(ex.Message)
      Exit Sub
    End Try
 
    RaiseEvent Aufnahme_Gestartet()
  End Sub
 
  Public Sub Beenden()
    Try
      mciSendString("Stop " & m_Alias, rs, 128, CInt(cb))
      mciSendString("save " & m_Alias & " " & m_Pfad, rs, 128, CInt(cb))
      mciSendString("Close " & m_Alias, rs, 128, CInt(cb))
    Catch ex As Exception
      RaiseEvent Aufnahme_Fehler(ex.Message)
      Exit Sub
    End Try
 
    RaiseEvent Aufnahme_Beendet()
  End Sub
 
  Public Sub Abspielen()
    Try
      My.Computer.Audio.Play(Pfad, AudioPlayMode.Background)
    Catch ex As Exception
      RaiseEvent Aufnahme_Fehler(ex.Message)
      Exit Sub
    End Try
 
    RaiseEvent Aufnahme_Abspielen()
  End Sub
 
End Class

Beispiel
Fügen Sie dem Projekt ein Formular hinzu und platzieren darauf 3 Schaltflächen (Button1, Button2, Button3). Benennen Sie die Schaltflächen wie folgt:

  • Button1: Aufnahme starten
  • Button2: Aufnahme beenden
  • Button3: Aufnahme abspielen

Public Class Form1
 
  Private Recording As Boolean = False
  Private WaveFile As String
  Private WithEvents Aufnahme As clsAufnahme
 
  Public Function FileExists(ByVal sFile As String) As Boolean
    ' Prüft, ob die angegeben Datei existiert
    Return (System.IO.File.Exists(sFile))
  End Function
 
  Private Sub ButtonUpdate()
    Button1.Enabled = Not Recording
    Button2.Enabled = Recording
    Button3.Enabled = Recording = False AndAlso FileExists(WaveFile) = True
  End Sub
 
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
 
    WaveFile = Application.StartupPath
    If Not WaveFile.EndsWith("\") Then WaveFile &= "\"
    WaveFile &= "test.wav"
 
    Aufnahme = New clsAufnahme(WaveFile, "Test")
 
    ButtonUpdate()
  End Sub
 
  Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    Aufnahme.Starten()
  End Sub
 
  Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click
    Aufnahme.Beenden()
  End Sub
 
  Private Sub Button3_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button3.Click
    Aufnahme.Abspielen()
  End Sub
 
  Private Sub Aufnahme_Aufnahme_Abspielen() Handles Aufnahme.Aufnahme_Abspielen
    ButtonUpdate()
  End Sub
 
  Private Sub Aufnahme_Aufnahme_Beendet() Handles Aufnahme.Aufnahme_Beendet
    Recording = False
    ButtonUpdate()
  End Sub
 
  Private Sub Aufnahme_Aufnahme_Fehler(ByVal msg As String) _
    Handles Aufnahme.Aufnahme_Fehler
    Recording = False
    ButtonUpdate()
  End Sub
 
  Private Sub Aufnahme_Aufnahme_Gestartet() Handles Aufnahme.Aufnahme_Gestartet
    Recording = True
    ButtonUpdate()
  End Sub
End Class



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.