Пример #1
0
        void OnDataAvailable(object sender, WaveInEventArgs e)
        {
            bwp.AddSamples(e.Buffer, 0, e.BytesRecorded);

            byte[] buffer        = e.Buffer;
            int    bytesRecorded = e.BytesRecorded;

            //WriteToFile(buffer, bytesRecorded);

            _sampleAggregator?.OnDataAvailable(buffer, bytesRecorded);

            for (int index = 0; index < e.BytesRecorded; index += 2)
            {
                short sample   = (short)((buffer[index + 1] << 8) | buffer[index + 0]);
                float sample32 = sample / 32768f;
                _sampleAggregator?.Add(sample32);
            }

            int frameSize = BUFFERSIZE;

            byte[] frames = new byte[frameSize];

            bwp.Read(frames, 0, frameSize);
            _sampleAggregator?.Calculate(frames, frameSize);
        }