private void AddToSampleAggregator(byte[] buffer, int bytesRecorded, bool isFloatingPointAudio) { var buff = new WaveBuffer(buffer); if (isFloatingPointAudio) { for (var index = 0; index < bytesRecorded / 4; ++index) { var sample = buff.FloatBuffer[index]; _sampleAggregator?.Add(sample); } } else { for (var index = 0; index < bytesRecorded / 2; ++index) { var sample = buff.ShortBuffer[index]; _sampleAggregator?.Add(sample / 32768F); } } }
private void WaveSourceDataAvailableHandler(object sender, WaveInEventArgs waveInEventArgs) { // as audio samples are provided by WaveIn, we hook in here // and write them to disk, encoding to MP3 on the fly // using the _mp3Writer... byte[] buffer = waveInEventArgs.Buffer; int bytesRecorded = waveInEventArgs.BytesRecorded; if (_fader != null && _fader.Active) { // we're fading out... _fader.FadeBuffer(buffer, bytesRecorded); } for (int index = 0; index < bytesRecorded; index += 2) { short sample = (short)((buffer[index + 1] << 8) | buffer[index + 0]); float sample32 = sample / 32768F; _sampleAggregator.Add(sample32); } _mp3Writer.Write(buffer, 0, bytesRecorded); }
private void SampleRead(object sender, SampleEventArgs e) { sampleAggregator.Add(e.Left, e.Right); }
void waveStream_Sample(object sender, SampleEventArgs e) { waveformAggregator.Add(e.Left, e.Right); }