Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB2005, VB2008, VB2010, VB2012 | 29.08.14 |
Einfache Class zum Aufnehmen Mit dieser Klasse können Sie kinderleicht Sound aufnehmen, der vom Mikrofon Eingang kommt. | ||
Autor: Samir Ben Kheder | Bewertung: | Views: 7.836 |
www.bk-software.de | System: 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