vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
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:     [ Jetzt bewerten ]Views:  4.574 
www.bk-software.deSystem:  Vista, Win7, Win8, Win10 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

Dieser Tipp wurde bereits 4.574 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.

Neue Diskussion eröffnen

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-2018 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