Exemple #1
0
 //Получение данных из входного буфера
 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)
     {
     }
 }
Exemple #3
0
 /// <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);
             }
         }
     }
 }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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();
        }