VB.Net を使用してオーディオ レコーダーを作成しようとしています。
これが私がやっている方法です:
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0)
mciSendString("set recsound samplespersec 11025 channels 2 bitspersample 16 alignment 4 bytespersec 44100", vbNullString, 0, 0)
mciSendString("record capture", vbNullString, 0, 0)
Label1.Text = "Recording..."
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
mciSendString("save recsound c:\recsound.wav", "", 0, 0)
mciSendString("close recsound", "", 0, 0)
Label1.Text = "Stopped."
End Sub
問題なく動作します。唯一の問題は、マイクが 2 つあることです。1 つは内蔵型で、もう 1 つは USB 経由で接続されています。2 つ目の方が録音品質がはるかに優れていますが、このアプリケーションは常に内蔵マイクから録音します。
インターネットで検索しましたが、録音デバイスを選択する方法が見つかりません。私が見つけることができた唯一のものは次のとおりです。
Dim DeviceId As Integer = 2
mciSendString("set recsound input " & DeviceId.ToString())
さまざまな値を試してみましたが、役に立ちませんでした。
また、コンピューターで見つかったすべての録音デバイスのすべてのプロパティを正常に一覧表示する次のコードを試しましたが、役立つものは何も見つかりませんでした:
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
Dim objSearcher As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_SoundDevice")
Dim objCollection As System.Management.ManagementObjectCollection = objSearcher.Get()
Me.TextBox1.Text = ""
For Each obj As ManagementObject In objCollection
Me.TextBox1.Text &= "---------------------------------" & vbCrLf
For Each myProperty As PropertyData In obj.Properties
Me.TextBox1.Text &= myProperty.Name & " - " & myProperty.Value & vbCrLf
Next
Next
End Sub
任意の提案をいただければ幸いです。