private void OnDataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
 {
     if (_writer != null)
     {
         _writer.Write(e.Buffer, 0, e.BytesRecorded);
     }
 }
Exemple #2
0
 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();
     }
 }
Exemple #6
0
 /// <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();
     }
 }
Exemple #7
0
        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();
        }
Exemple #8
0
        private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
        {
            if (waveFileWriter == null)
            {
                return;
            }

            waveFileWriter.Write(e.Buffer, 0, e.BytesRecorded);
            waveFileWriter.Flush();
        }
Exemple #9
0
            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);
            }
Exemple #10
0
        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);
        }
Exemple #11
0
        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();
        }
Exemple #13
0
 private void Capture_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
 {
     _waveFileWriter?.Write(e.Buffer, 0, e.BytesRecorded);
 }
Exemple #14
0
 private void sourceStream_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
 {
     waveWriter.Write(e.Buffer, 0, e.BytesRecorded); // LAST BYTES ARE NOT RECORDED.
     waveWriter.Flush();
 }