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; }
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; }
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(); } }
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); }
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; }