public void Stop() { if (AudioMeter == null) { Logger.Log("Attempted to Stop an already stopped AudioMeterEvent"); return; } AudioMeter audioMeter; KeepaliveTimers keepaliveTimers; lock (Mutex) { audioMeter = AudioMeter; AudioMeter = null; Logger.Log("Stopped audio meter monitoring"); if (CurrentKeepaliveTimers != null) { EventQueue.EnqueueEvent(() => { StoppedSounding(this, System.EventArgs.Empty); }); } keepaliveTimers = CurrentKeepaliveTimers; CurrentKeepaliveTimers = null; } audioMeter.Dispose(); if (keepaliveTimers != null) { keepaliveTimers.Dispose(); } }
public void Start() { if (AudioMeter != null) { Logger.Log("Attempted to Start an already started AudioMeterEvent"); return; } Logger.Log("Starting audio meter monitoring"); var audioMeter = new AudioMeter(IAudioMeterInformation, MinimumLevel, MinimumDuration, Period); lock (Mutex) { AudioMeter = audioMeter; } AudioMeter.SoundDetected += AudioMeter_SoundDetected; }
/// <summary> /// Load any general settings from the programs settings file /// e.g. the write directory /// </summary> public void LoadSettings() { // Write Directory this._writeDir = Properties.Settings.Default.writeDir; this.previousRecordings.writeDir = this._writeDir; CheckWriteDirectory(); // Capture Device var inputDeviceGUID = Properties.Settings.Default.inputDevice; try { _captureDevice = new CaptureDevice(inputDeviceGUID); _audioMeter = AudioMeter.FromDevice(_captureDevice.Device); _recorder?.Dispose(); // Get rid of the old recorder. _recorder = new Recorder(_captureDevice.Device, _captureDevice.CaptureMode); _recorder.NotificationStream.SingleBlockRead += UpdateMainVisualization; } catch (Exception) {} }