Exemple #1
0
        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;
            }
        }