private void ProcessAwaitInput(SpectrumProcessor sink) { CurrentActivityDescription = "Awaiting signal..."; var allInputSingnalsPresent = _testSignalPresentMap.Values.All(v => v == true); if (!allInputSingnalsPresent) { var expectedLoopbackDelay = Math.Max( (AppSettings.Current.Device.InputDevice.LatencyMilliseconds + AppSettings.Current.Device.OutputDevice.LatencyMilliseconds), 2.0 * 1000.0 * Settings.Fft.Value.WindowSize / AppSettings.Current.Device.SampleRate ); if (Elapsed.TotalMilliseconds > expectedLoopbackDelay) { var channel = Sinks.First(s => s.Value == sink).Key; _testSignalPresentMap[channel] = CheckSignalPresent(sink.Data); if (!_testSignalPresentMap[channel]) { var channels = _testSignalPresentMap.Where(m => m.Value == false).Select(m => m.Key.ToString()).OrderBy(k => k); var message = $"No test signal detected in channels {channels.Aggregate((a, b) => (a + ", " + b))}."; OnError(new Exception(message)); Stop(true); return; } _inputSignalReceivedAt = DateTime.Now; if (Settings is IWarmable warmable) { _phase = Phase.WarmUp; } else { SetGatheringPhase(sink); } sink.Data.Reset(); } } }