I have an application to which I want to add the ability to import small audio snippets directly from a microphone device of some sort.
I already allow importing of
this might help. It will use open source NAuodio project...
http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder
:)
Probably the easiest is to use mciSendString function:
public class Program
{
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
static void Main(string[] args)
{
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);
Console.WriteLine("recording, press Enter to stop and save ...");
Console.ReadLine();
mciSendString("save recsound c:\\work\\result.wav", "", 0, 0);
mciSendString("close recsound ", "", 0, 0);
}
}
Another option is to use the DirectShowNet library (there's a sample called PlayCap
).
You might also find this CodeProject article useful.
mciSendString function records only microphone sound. if no mic is connected it will record nothing.
I'm using the this library: http://www.codeproject.com/KB/cs/Streaming_wave_audio.aspx Mainly due to the simple api. But I don't like this code too much. For example it fixes it's buffers in memory for a long time instead of allocating unmanaged buffers.