Exemple #1
0
        private void Visualizer_Draw(AudioVisualizer.IVisualizer sender, AudioVisualizer.VisualizerDrawEventArgs args)
        {
            var drawingSession = (CanvasDrawingSession)args.DrawingSession;

            var spectrum = args.Data != null?args.Data.Spectrum.TransformLinearFrequency(20) : _emptySpectrum;

            _previousSpectrum     = spectrum.ApplyRiseAndFall(_previousSpectrum, _rmsRiseTime, _rmsFallTime, _frameDuration);
            _previousPeakSpectrum = spectrum.ApplyRiseAndFall(_previousPeakSpectrum, _peakRiseTime, _peakFallTime, _frameDuration);

            // This is temp hack. once visualizer passes in dimensions won't be necessary
            float w = 0f, h = 0f;

            lock (_sizeLock)
            {
                w = _visualizerWidth;
                h = _visualizerHeight;
            }

            // There are bugs in ConverToLogAmplitude. It is returning 0 if max is not 0 and min negative.
            // The heightScale is a workaround for this
            var s = _previousSpectrum.ConvertToLogAmplitude(-50, 0);
            var p = _previousPeakSpectrum.ConvertToLogAmplitude(-50, 0);

            DrawSpectrumSpline(p[0], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x38, 0x38, 0x38));
            DrawSpectrumSpline(p[1], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x38, 0x38, 0x38), true);
            DrawSpectrumSpline(s[0], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x30, 0x30, 0x30));
            DrawSpectrumSpline(s[1], drawingSession, Vector2.Zero, w, h, -0.02f, Color.FromArgb(0xff, 0x30, 0x30, 0x30), true);
        }