Ich habe etwas umgearbeitet und trotzdem geht das mike leider nicht aus.
VB.NET-Quellcode
- Imports System.ComponentModel
- Imports Un4seen.Bass
- Imports Un4seen.Bass.AddOn.Enc
- Public Class Form1
- Private MicroRecordingProc As RECORDPROC
- Private MicroInput, MicroOutput As Integer
- Dim PushToTalk As Integer = 0
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Try
- If PushToTalk = 0 Then
- PushToTalk = 1
- Else
- PushToTalk = 0
- End If
- If PushToTalk = 1 Then
- Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_SPEAKERS, IntPtr.Zero, Nothing)
- Bass.BASS_RecordInit(-1)
- MicroRecordingProc = New RECORDPROC(AddressOf MicroRecordingCallback)
- MicroOutput = Bass.BASS_StreamCreate(44100, 1, BASSFlag.BASS_DEFAULT, BASSStreamProc.STREAMPROC_PUSH)
- MicroInput = Bass.BASS_RecordStart(44100, 1, BASSFlag.BASS_STREAM_DECODE, MicroRecordingProc, IntPtr.Zero)
- BassEnc.BASS_Encode_Start(MicroInput, "D:\micro_record.wav", BASSEncode.BASS_ENCODE_PCM Or BASSEncode.BASS_ENCODE_AUTOFREE, Nothing, Nothing)
- End If
- Bass.BASS_StreamPutData(MicroOutput, 0, 0)
- Bass.BASS_ChannelPlay(MicroOutput, False)
- BassEnc.BASS_Encode_Stop(MicroInput)
- Bass.BASS_ChannelStop(MicroOutput)
- Bass.BASS_StreamFree(MicroOutput)
- BassEnc.FreeMe()
- Bass.BASS_Free()
- If PushToTalk = 0 Then
- End If
- Catch ex As Exception
- End Try
- End Sub
- Public Function MicroRecordingCallback(ByVal handle As Integer, ByVal buffer As IntPtr, ByVal length As Integer, ByVal user As IntPtr) As Boolean
- Bass.BASS_StreamPutData(MicroOutput, buffer, length)
- Bass.BASS_ChannelPlay(MicroOutput, False)
- Return True
- End Function
- Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
- Try
- BassEnc.BASS_Encode_Stop(MicroInput)
- Bass.BASS_ChannelStop(MicroOutput)
- Bass.BASS_StreamFree(MicroOutput)
- BassEnc.FreeMe()
- Bass.BASS_Free()
- Catch ex As Exception
- End Try
- End Sub
- End Class