public AudioLoopbackViewModel()
        {
            loopbackRecorder = new LoopbackRecorder();
            loopbackRecorder.StartRecording(LoopbackRecorder.GetDevices().defaultDevice, (ArraySegment <byte> dataToSend, WaveFormat format) =>
            {
                RecordingDataAvailable?.Invoke(dataToSend, format);

                if (Analyzer != null)
                {
                    var dataSize = dataToSend.Count;
                    var tempData = ArrayPool <byte> .Shared.Rent(dataSize);
                    Buffer.BlockCopy(dataToSend.Array, dataToSend.Offset, tempData, 0, dataSize);
                    var tempDataView = new ArraySegment <byte>(tempData, 0, dataSize);

                    Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() =>
                    {
                        Analyzer.AddData(tempDataView, format);

                        ArrayPool <byte> .Shared.Return(tempData);
                    }));
                }
            });

            Analyzer              = new AnalyzerViewModel(loopbackRecorder.WaveFormat);
            Analyzer.BinsUpdated += Analyzer_BinsUpdated;
        }
Example #2
0
 private void startToolStripMenuItem_Click(object sender, EventArgs e)
 {
     Recorder = new LoopbackRecorder();
     Recorder.StartRecording();
     stopToolStripMenuItem.Enabled    = true;
     processToolStripMenuItem.Enabled = true;
     startToolStripMenuItem.Enabled   = false;
     openToolStripMenuItem.Enabled    = false;
 }
Example #3
0
 private void ToggleRecord_Click(object sender, RoutedEventArgs e)
 {
     if (LoopbackRecorder.Recording)
     {
         (sender as Button).Content = "Circle";
         LoopbackRecorder.StopRecording(true);
     }
     else
     {
         (sender as Button).Content = "Stop";
         LoopbackRecorder.BeginRecording();
     }
 }
Example #4
0
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            AudioManager.instance.Close();
            if (LoopbackRecorder.Recording)
            {
                LoopbackRecorder.StopRecording(false);
            }

            if (this.MuteOutput.IsChecked != null)
            {
                Properties.Settings.Default.Muted = (bool)this.MuteOutput.IsChecked;
            }
            KeyboardHook.Unhook();

            Properties.Settings.Default.Save = GenerateJson();
            Properties.Settings.Default.Save();
        }
        public void TestRecording()
        {
            asyncEvent = new AutoResetEvent(false);

            var loopbackRecorder = new LoopbackRecorder(new Logger());

            dataRecorded = null;
            loopbackRecorder.Start(null, DataAvailable, null);
            asyncEvent.WaitOne(100);

            Assert.IsTrue(dataRecorded != null && dataRecorded.Length > 0);

            dataRecorded = null;
            loopbackRecorder.StopRecording();
            asyncEvent.WaitOne(100);

            Assert.IsTrue(dataRecorded == null);
        }
Example #6
0
        private void clearToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Wave != null)
            {
                Wave.Close();
                Wave.Dispose();
                Wave = null;
            }

            if (Recorder != null)
            {
                Recorder.StopRecording();
                Recorder = null;
            }

            SetupChart();

            processToolStripMenuItem.Enabled = false;
            startToolStripMenuItem.Enabled   = true;
            stopToolStripMenuItem.Enabled    = false;
            openToolStripMenuItem.Enabled    = true;
            clearToolStripMenuItem.Enabled   = false;
            saveToolStripMenuItem.Enabled    = false;
        }