private void OnDataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (_writer != null) { _writer.Write(e.Buffer, 0, e.BytesRecorded); } }
void capture_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (recording) { waveWriter.Write(e.Buffer, 0, e.BytesRecorded); } }
} // End Sub Main // https://ourcodeworld.com/articles/read/702/how-to-record-the-audio-from-the-sound-card-system-audio-with-c-using-naudio-in-winforms // https://stackoverflow.com/questions/18812224/c-sharp-recording-audio-from-soundcard static void TestAudioRecording() { // Define the output wav file of the recorded audio string outputFilePath = @"D:\username\Desktop\system_recorded_audio.wav"; // Redefine the capturer instance with a new instance of the LoopbackCapture class NAudio.Wave.WasapiLoopbackCapture CaptureInstance = new NAudio.Wave.WasapiLoopbackCapture(); // Redefine the audio writer instance with the given configuration NAudio.Wave.WaveFileWriter RecordedAudioWriter = new NAudio.Wave.WaveFileWriter(outputFilePath, CaptureInstance.WaveFormat); // When the capturer receives audio, start writing the buffer into the mentioned file CaptureInstance.DataAvailable += (s, a) => { // Write buffer into the file of the writer instance RecordedAudioWriter.Write(a.Buffer, 0, a.BytesRecorded); }; // When the Capturer Stops, dispose instances of the capturer and writer CaptureInstance.RecordingStopped += (s, a) => { RecordedAudioWriter.Dispose(); RecordedAudioWriter = null; CaptureInstance.Dispose(); }; // Start audio recording ! CaptureInstance.StartRecording(); System.Console.WriteLine(" --- Press any key to stop recording --- "); System.Console.ReadKey(); CaptureInstance.StopRecording(); } // End Sub Main
//what happens when the sourcestream receives data private void SourceStream_DataAvailuable(object sender, NAudio.Wave.WaveInEventArgs e) { if (waveWriter == null) return; //exit method if wavewriter hasnt been set up yet waveWriter.Write(e.Buffer, 0, e.BytesRecorded); //write the contents to the savefile using the wavewriter waveWriter.Flush(); //flush the wavewriters contents after }
//Event args to check if Data is available private void wavSource_DataAvail(object sender, NAudio.Wave.WaveInEventArgs e) { if (wavFile != null) { wavFile.Write(e.Buffer, 0, e.BytesRecorded); wavFile.Flush(); } }
/// <summary> /// input stream event for recording /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void waveIn_DataAvailableRecording(object sender, NAudio.Wave.WaveInEventArgs e) { // if sound is recorded, it is written to file if (waveFile != null) { waveFile.Write(e.Buffer, 0, e.BytesRecorded); waveFile.Flush(); } }
private void SourceStreamDataAvailableEvent(object sender, NAudio.Wave.WaveInEventArgs e) { if (m_oWaveWriter == null) { return; } m_oWaveWriter.Write(e.Buffer, 0, e.BytesRecorded); m_oWaveWriter.Flush(); }
private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (waveFileWriter == null) { return; } waveFileWriter.Write(e.Buffer, 0, e.BytesRecorded); waveFileWriter.Flush(); }
public Task Process() { Task t = new Task(() => { int fCount = Directory.GetFiles(this.InputPath, "*.flac").Length; //Conversion List <Task> tasks = new List <Task>(); foreach (string flacFile in Directory.GetFiles(this.InputPath, "*.flac")) { Task t = new Task(() => { Stopwatch sWatch = new Stopwatch(); Log.Information("[Encode][WAVE][Process] Processing \"" + Path.GetFileNameWithoutExtension(flacFile) + "\""); sWatch.Start(); //Main Conversion Process using NAudio.Flac.FlacReader flacReader = new FlacReader(flacFile); byte[] flacBuffer; using (StreamReader streamReader = new StreamReader(flacReader)) { flacBuffer = new byte[streamReader.BaseStream.Length]; streamReader.BaseStream.Read(flacBuffer, 0, flacBuffer.Length); } using (NAudio.Wave.WaveFileWriter waveFileWriter = new NAudio.Wave.WaveFileWriter(Path.Combine(this.OutputPath, Path.GetFileNameWithoutExtension(flacFile) + ".wav"), new NAudio.Wave.WaveFormat())) { using StreamWriter streamWriter = new StreamWriter(waveFileWriter); waveFileWriter.Write(flacBuffer, 0, flacBuffer.Length); } flacBuffer = null; //# ### # sWatch.Stop(); Log.Information("[Encode][WAVE][Process] \"" + Path.GetFileNameWithoutExtension(flacFile) + "\" Processing finished - Duration: " + sWatch.Elapsed.ToString(@"hh\:mm\:ss\:fffffff")); }); tasks.Add(t); } tasks.All((x) => { x.Start(); return(true); }); Task.WaitAll(tasks.ToArray()); //# ### # //Copy Non Audio Files CopyNonAudioFiles(this.InputPath, this.OutputPath); //# ### # }); t.Start(); return(t); }
private Tape CreateTape(float sideLengthSeconds, string labelSideA, string labelSideB, Color color, IProgress <float> progress = null) { string filenameA, filenameB; do { var guid = Guid.NewGuid().ToString().Substring(24, 12); filenameA = guid + "_A.wav"; filenameB = guid + "_B.wav"; }while (File.Exists(filenameA) || File.Exists(filenameB)); Directory.CreateDirectory(TapesDirectory); var pathA = Path.Combine(TapesDirectory, filenameA); var pathB = Path.Combine(TapesDirectory, filenameB); int seconds = (int)sideLengthSeconds; byte[] buffer = new byte[Common.WaveFormat.AverageBytesPerSecond * seconds / 100]; using (var writerA = new NAudio.Wave.WaveFileWriter(pathA, Common.WaveFormat)) using (var writerB = new NAudio.Wave.WaveFileWriter(pathB, Common.WaveFormat)) { for (int i = 0; i < 100; ++i) { writerA.Write(buffer, 0, buffer.Length); writerB.Write(buffer, 0, buffer.Length); if (progress != null) { progress.Report((float)i / 100); } } } Tape tape = new Tape(); tape.SideA.Label = labelSideA; tape.SideA.FilePath = filenameA; tape.SideB.Label = labelSideB; tape.SideB.FilePath = filenameB; tape.Length = sideLengthSeconds; tape.Color = color; return(tape); }
private static void WaveIn_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { if (Options.options.debugLevel >= 4) { Log.WriteLine("Received buffer: length=" + e.BytesRecorded.ToString()); } else { Console.Write("*"); } // can't derive waveInFile from WaveInEvent so must use class property // add received wave audio to waveProvider buffer //if (waveInProvider != null) //waveInProvider.AddSamples(e.Buffer, 0, e.BytesRecorded); // add received wave audio to memory stream if (waveInFile != null) { waveInFile.Write(e.Buffer, 0, e.BytesRecorded); waveInFile.Flush(); } }
public override void HotkeyTriggered() { if (recorder == null) { if (audioDevice.Recorders.Count > 0) { recorder = audioDevice.Recorders[0]; } } if (recorder == null) { return; } int count = recorder.RecordedBytes.Count; byte[] audioData = recorder.RecordedBytes.Copy(); NAudio.Wave.WaveFileWriter waveWriter = new NAudio.Wave.WaveFileWriter(ExtraData1, recorder.WaveSource.WaveFormat); waveWriter.Write(audioData, 0, count); waveWriter.Flush(); waveWriter.Dispose(); }
private void Capture_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { _waveFileWriter?.Write(e.Buffer, 0, e.BytesRecorded); }
private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e) { waveWriter.Write(e.Buffer, 0, e.BytesRecorded); // LAST BYTES ARE NOT RECORDED. waveWriter.Flush(); }