private void OnSampleReceived(object sender, EventArgs e) { byte[] buffer = null; int bytesRead = _capture.ReadBuffer(out buffer); if (bytesRead > 0) { float peak = PcmHelper.GetPeak(buffer, bytesRead); if (_state == RecorderState.Recording && _isCapturing && _writer.CanWrite) { if ((SkipSilence && peak > 0.04) || !SkipSilence) { _size += _writer.Write(buffer, 0, bytesRead); _bytesCaptured += bytesRead; _duration = PcmHelper.GetDuration(_bytesCaptured, _sampleRate, _channels, _bitRate); } } RaiseSampleReceived(peak); } }