private void UpdateSpectrum(object sender, EventArgs e) { if (Settings.SamplingRate > 0) { if (++timerTicks * dispatcherTimer.Interval.Milliseconds >= 1000 / Settings.SamplingRate) { SpectrumProcessorBase.Sample(Settings); timerTicks = 0; } } var spectrum = SpectrumProcessorBase.GetSmoothSpectrum(Settings); var color = ColorMixer.GetColor(Settings, spectrum).ToWMColor(); var data = new VisualizationData(spectrum, color); // Update devices. foreach (var device in VisualDevices) { device.Send(data); } // Update UI. VisualizationDrawer.Send(data); Background = new SolidColorBrush(color); }
public void Send(VisualizationData data, bool force = false) { var brush = new SolidColorBrush(data.Color); float step = data.Spectrum.Count / bars.Count; for (int i = 0; i < bars.Count; i++) { int si = (int)Math.Round((float)i / bars.Count * data.Spectrum.Count); if (si >= data.Spectrum.Count) { continue; } var d = data.Spectrum[si]; bars[i].Value = d > 2 ? d : 2; bars[i].Foreground = brush; } }