WAV ファイルを再生および録音できる単純な録音再生アプリケーションを実装しています。
要件は次のとおりです。
1) Windows 7、Visual Studio 2010 (または 2012)、C#
2) スペック情報を含む Wav ファイルの録音、再生: samplerate 22050、mono、bitspersample 16
3) 録音中にマイクロ サウンド レベルを表示可能
1) と 2) では、lib (winmm.dll) と mciSendString() を次のように使用できます。
[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
// Open file to play
public void open(string file)
{
string command = "open \"" + file + "\" type waveaudio alias MyWav";
mciSendString(command, null, 0, 0);
}
// Start playing
public void play()
{
string command = "play MyWav";
mciSendString(command, null, 0, 0);
}
// Stop playing
public void stop()
{
string command = "stop MyWav";
mciSendString(command, null, 0, 0);
command = "close MyWav";
mciSendString(command, null, 0, 0);
}
// Start recording
public void record()
{
string command = "open new Type waveaudio Alias MyRec";
mciSendString(command, "", 0, 0);
command = "set capture time format ms bitspersample 16 channels 1 samplespersec 22050 alignment 4";
mciSendString(command, "", 0, 0);
command = "record MyRec";
mciSendString(command, "", 0, 0);
}
// Stop recording
public void stoprec()
{
string fileName = @"""D:\Rec1.wav""";
string command = "stop MyRec";
mciSendString(command, "", 0, 0);
command = @"save MyRec " + fileName;
Debug.WriteLine(command);
mciSendString(command, "", 0, 0);
command = "close MyRec";
mciSendString(command, "", 0, 0);
}
3)では、mciSendStringも使いたいです。次のコマンド (ステータス) を見つけました。
string command = "status MyRec level ";
long mci_ret = mciSendString(command, "", 0, 0);
しかし、上記のコマンドからボリュームを取得する方法がわかりません。誰か教えてもらえますか?
参照: mciSendString() からのステータス コマンドは Microsoft doc にあります:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd798683%28v=vs.85%29.aspx
それは言う: レベル: 現在の PCM オーディオ サンプル値を返します。