public void StartCapture(int sampleRate, Capture captureDevice)
{
StopCapture();
EmptyRequest();
this.sampleRate = sampleRate;
readPos = 0;
IsRecording = false;
record = null;
recordTime = 0;
noRecordTime = 0;
lastSample = null;
lastSize = 0;
capture = (captureDevice == null) ? new Capture() : captureDevice;
WaveFormat waveFormat = new WaveFormat();// Load the sound
waveFormat.BitsPerSample = 16;
waveFormat.BlockAlign = 2;
waveFormat.Channels = 1;
waveFormat.AverageBytesPerSecond = sampleRate * 2;
waveFormat.SamplesPerSecond = sampleRate;
waveFormat.FormatTag = WaveFormatTag.Pcm;
CaptureBufferDescription captureBuffDesc = new CaptureBufferDescription();
captureBuffDesc.BufferBytes = bufferSize;
captureBuffDesc.Format = waveFormat;
captureBuffer = new CaptureBuffer(captureBuffDesc, capture);
captureBuffer.Start(true);
captureThread = new Thread(captureLoop);
captureThread.Start();
new Thread(EmptyRequest).Start();
}