コード例 #1
0
        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);
        }
コード例 #2
0
 protected virtual void OnAudioLevelChanged(float level)
 {
     AudioLevelChanged.InvokeSafely(level);
 }