Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB2005, VB2008 | 13.07.09 |
WAVE-Dateien aufnehmen Ein Code-Ausschnitt, mit dem sich WAVE-Dateien in verschiedenen Aufnahmequalitäten aufnehmen lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 13.969 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute zeigen wir Ihnen, wie sich WAVE-Dateien in unterschiedlichen Qualitätsstufen aufnehmen lassen.
Von welchem Eingang der Soundkarte aufgenommen wird, richtet sich nach den Aufnahmeeinstellungen der Windows.Lautstärkeregelung.
' benötigte API-Deklaration Private Declare Auto Function mciSendString Lib "winmm.dll" ( _ ByVal lpstrCommand As String, _ ByVal lpstrRetrunString As String, _ ByVal dwReturnlength As Int16, _ ByVal hCallback As Int16) As Integer ' Aufnahmeformate Private Enum BitsPerSec Bits16 = 16 Bits8 = 8 End Enum Private Enum SampelsPerSec Sampels8000 = 8000 Sampels11025 = 11025 Sampels12000 = 12000 Sampels16000 = 16000 Sampels22050 = 22050 Sampels24000 = 24000 Sampels32000 = 32000 Sampels44100 = 44100 Sampels48000 = 48000 End Enum Private Enum Channels Mono = 1 Stereo = 2 End Enum
''' <summary> ''' Startet die WAVE-Aufnahme ''' </summary> ''' <param name="BitRate">Bits pro Sekunde</param> ''' <param name="SampleRate">Samples pro Sekunde</param> ''' <param name="Mode">Stereo oder Mono-Aufnahme</param> Private Function WAVE_RecordStart(Optional ByVal BitRate As BitsPerSec = BitsPerSec.Bits16, _ Optional ByVal SampleRate As SampelsPerSec = SampelsPerSec.Sampels11025, _ Optional ByVal Mode As Channels = Channels.Stereo) As Boolean Dim sReturn As String = Strings.Space(256) Dim cmd As String cmd = "open new type waveaudio alias recwave" If mciSendString(cmd, sReturn, 256, 0) <> 0 Then MsgBox("Fehler beim Anlegen der neuen Aufnahmedatei!", MsgBoxStyle.Exclamation) Return (False) End If ' Aufnahmeformat Dim ByteRate As Integer = (Mode * BitRate * SampleRate) / 8 mciSendString("set recwave time format milliseconds" & _ " bitspersample " & CStr(BitRate) & _ " samplespersec " & CStr(SampleRate) & _ " channels " & CStr(Mode) & _ " bytespersec " & CStr(ByteRate) & _ " alignment 4", sReturn, 256, 0) cmd = "record recwave" If mciSendString(cmd, sReturn, 256, 0) <> 0 Then MsgBox("Fehler bei der Aufnahme!", MsgBoxStyle.Exclamation) Return (False) End If Return (True) End Function
''' <summary> ''' Beendet die WAVE-Aufnahme ''' </summary> ''' <param name="Filename">Datei, unter der die Aufnahme gespeichert werden soll.</param> Private Function WAVE_RecordStop(ByVal Filename As String) As Boolean Dim sReturn As String = Strings.Space(256) Dim cmd As String Dim Result As Boolean = True cmd = "stop recwave" If mciSendString(cmd, sReturn, 256, 0) <> 0 Then MsgBox("Fehler beim Beenden der Aufnahme!", MsgBoxStyle.Exclamation) Return (False) End If If Filename.Length > 0 Then ' Aufnhame in Datei speichern cmd = "save recwave " & Filename If mciSendString(cmd, sReturn, 256, 0) <> 0 Then MsgBox("Fehler beim Speichern der Aufnahme.", MsgBoxStyle.Exclamation) Result = False End If End If cmd = "close recwave" If mciSendString(cmd, sReturn, 256, 0) <> 0 Then MsgBox("Fehler beim Schließen der Aufnahme...", MsgBoxStyle.Exclamation) End If Return (Result) End Function