private void _waveIn_DataAvailable(object sender, WaveInEventArgs e) { float max = 0; for (int index = 0; index < e.BytesRecorded; index += 2) { short sample = (short)((e.Buffer[index + 1] << 8) | e.Buffer[index + 0]); float sample32 = sample / 32768f; if (Recording) { _audioBuffer.Add(sample32); } max = Math.Max(max, Math.Abs(sample32)); } if (Recording) { _waveWriter.Write(e.Buffer, 0, e.BytesRecorded); } AudioLevel = max; AudioLevelChanged?.Invoke(max); }
protected virtual void OnAudioLevelChanged(float level) { AudioLevelChanged.InvokeSafely(level); }