「record」を呼び出す前に「set」を呼び出す必要があります。
MSDNから:
波形オーディオ データのいくつかのプロパティは、データを格納するファイルの作成時に定義されます。これらのプロパティは、ファイル内でデータがどのように構造化されているかを示しており、記録が開始されると変更できません
補足として; 私の経験では、すべてのパラメーターを一度に設定する必要があります。チャンネルを単独で設定してから、bitspersample を設定することはできません。これはどこにも文書化されていませんが、試行錯誤+グーグルはそう言っています。
これが私がやった方法です:
string command = "set recsound time format ms";
command += " bitspersample " + WaveBitsPerSample;
command += " channels " + WaveChannels;
command += " samplespersec " + WaveSamplesPerSec;
command += " bytespersec " + WaveBytesPerSec;
command += " alignment " + WaveAlignment;
error = mciSendString(command, _mciReturnData, 0, IntPtr.Zero);
bytespersec は、bitspersample、channels、および samplespersec に対して相対的であり、アライメントは、bitspersample および channels に対して相対的です。
bytespersec = bitspersample * channels * samplespersec / 8
alignment = bitspersample * channels / 8