//Получение данных из входного буфера async void waveIn_DataAvailable(object sender, WaveInEventArgs e) { //Записываем данные из буфера в файл //writer.WriteData(e.Buffer, 0, e.BytesRecorded); //writer.WriteData(e.Buffer, 0, e.BytesRecorded); await writer.WriteAsync(e.Buffer, 0, e.BytesRecorded); }
private async void Capture_DataAvailable(object sender, WaveInEventArgs e) { try { await writer.WriteAsync(e.Buffer, 0, e.BytesRecorded); } catch (Exception) { } }
/// <summary> /// Processes the reader, exporting the results to the writer. /// </summary> /// <param name="reader">WAV stream to read.</param> /// <param name="writer">WAV stream to write.</param> /// <param name="startPos">Start position.</param> /// <param name="endPos">End position.</param> /// <returns></returns> private static async Task TrimWavFile(WaveFileReader reader, WaveFileWriter writer, int startPos, int endPos) { reader.Position = startPos; byte[] buffer = new byte[1024]; while (reader.Position < endPos) { int bytesRequired = (int)(endPos - reader.Position); if (bytesRequired > 0) { int bytesToRead = Math.Min(bytesRequired, buffer.Length); int bytesRead = reader.Read(buffer, 0, bytesToRead); if (bytesRead > 0) { await writer.WriteAsync(buffer, 0, bytesRead); } } } }
public async Task SaveAsync(string path, int loopCount = 2, MidiFile mf = null) { CorePlayer.Stop(); if (mf != null) { CorePlayer.Load(mf); } CorePlayer.Play(loopCount); using (var wfw = new WaveFileWriter(path, new WaveFormat())) { while (CorePlayer.IsPlaying) { byte[] b = ToByte(CorePlayer.GetBuffer(_buffer)); await wfw.WriteAsync(b, 0, b.Length); } } }
public async void Record(byte[] data, int count) { if (!recording) { return; } try { await writer.WriteAsync(data, 0, data.Length); } catch (Exception ex) { systemLog.WarnFormat("{0} Could not write data", prefix); systemLog.Debug(ex.Message); systemLog.Debug(ex.StackTrace); } }
private void RecordButton_Click(object sender, EventArgs e) { var dialog = new SaveFileDialog(); dialog.Filter = "Wave files | *.wav"; if (dialog.ShowDialog() != DialogResult.OK) { return; } outputFileName = dialog.FileName; RecordButton.Enabled = false; StopButton.Enabled = true; capture = new WasapiLoopbackCapture(); var writer = new WaveFileWriter(outputFileName, capture.WaveFormat); capture.DataAvailable += async(s, e) => { if (writer != null) { await writer.WriteAsync(e.Buffer, 0, e.BytesRecorded); await writer.FlushAsync(); } }; capture.RecordingStopped += (s, e) => { if (writer != null) { writer.Dispose(); writer = null; } RecordButton.Enabled = true; capture.Dispose(); }; capture.StartRecording(); }
private void StartButton_Click(object sender, EventArgs e) { StartButton.Enabled = false; StopButton.Enabled = true; stopwatch.Start(); //-------------------SystemSoundRecord--------------------------- var dialog = new SaveFileDialog(); dialog.Filter = "Wave files | *.wav"; if (dialog.ShowDialog() != DialogResult.OK) { return; } outputFileNameSounds = dialog.FileName; capture = new WasapiLoopbackCapture(); var writer = new WaveFileWriter(outputFileNameSounds, capture.WaveFormat); capture.DataAvailable += async(s, ee) => { if (writer != null) { await writer.WriteAsync(ee.Buffer, 0, ee.BytesRecorded); await writer.FlushAsync(); } }; capture.RecordingStopped += (s, ee) => { if (writer != null) { writer.Dispose(); writer = null; } StartButton.Enabled = true; capture.Dispose(); }; capture.StartRecording(); //------------------MicRecord---------------------------------- var micFileDialog = new SaveFileDialog(); micFileDialog.Filter = "Wave files | *.wav"; if (micFileDialog.ShowDialog() != DialogResult.OK) { return; } outputFileNameMic = micFileDialog.FileName; wave = new WaveIn(); wave.WaveFormat = new WaveFormat(8000, 1); //44100, 1 wave.DeviceNumber = InputDeviceCombo.SelectedIndex; wave.DataAvailable += Wave_DataAvailable; wave.RecordingStopped += Wave_RecordingStopped; writerMic = new WaveFileWriter(outputFileNameMic, wave.WaveFormat); wave.StartRecording(); }