protected override void Render(RenderContext context)
        {
            var backBuffer  = context.BackBuffer;
            var height      = context.Height;
            var width       = context.Width;
            var waveForm    = PlayerService.GetWaveform(waveformLength.Value).Transform <float>(x => x > 1 ? 1 : x < -1 ? -1 : x);
            var xStep       = width / (double)waveForm.Length;
            var halfHeight  = height * 0.5d;
            var subLineStep = 1d / waveForm.Length;
            var pal         = palette.AsFrozen();

            for (var i = 1; i < waveForm.Length; ++i)
            {
                var x1     = (i - 1) * xStep;
                var x2     = i * xStep;
                var y1     = (halfHeight) * waveForm[i - 1];
                var y2     = (halfHeight) * waveForm[i];
                var sample = ((double)i / waveForm.Length + paletteOffset);
                backBuffer.DrawLineVector(new VectorD(x1, (height - halfHeight) - y1), new VectorD(x2, (height - halfHeight) - y2),
                                          (d, d1, position) => pal.GetColour(sample + position * subLineStep),
                                          width, height);
            }
        }