private void load(OsuConfigManager config)
        {
            switch (config.Get <SpeedChangeVisualisationMethod>(OsuSetting.SpeedChangeVisualisation))
            {
            case SpeedChangeVisualisationMethod.Sequential:
                speedChangeVisualiser = new SequentialSpeedChangeVisualiser(ControlPoints);
                break;

            case SpeedChangeVisualisationMethod.Overlapping:
                speedChangeVisualiser = new OverlappingSpeedChangeVisualiser(ControlPoints);
                break;
            }
        }
        public ScrollingHitObjectContainer(SpeedChangeVisualisationMethod visualisationMethod)
        {
            RelativeSizeAxes = Axes.Both;

            TimeRange.ValueChanged += _ => initialStateCache.Invalidate();
            Direction.ValueChanged += _ => initialStateCache.Invalidate();

            switch (visualisationMethod)
            {
            case SpeedChangeVisualisationMethod.Sequential:
                speedChangeVisualiser = new SequentialSpeedChangeVisualiser(ControlPoints);
                break;

            case SpeedChangeVisualisationMethod.Overlapping:
                speedChangeVisualiser = new OverlappingSpeedChangeVisualiser(ControlPoints);
                break;

            case SpeedChangeVisualisationMethod.Constant:
                speedChangeVisualiser = new ConstantSpeedChangeVisualiser();
                break;
            }
        }