public SfxrParams MutateClone(double mutation)
        {
            var p = new SfxrParams(this);

            p.Mutate(mutation);
            return(p);
        }
        public SfxrParams(SfxrParams p)
        {
            WaveShape = p.WaveShape;

            MasterVolume = p.MasterVolume;

            AttackTime   = p.AttackTime;
            SustainTime  = p.SustainTime;
            SustainPunch = p.SustainPunch;
            DecayTime    = p.DecayTime;

            StartFrequency = p.StartFrequency;
            MinFrequency   = p.MinFrequency;

            Slide      = p.Slide;
            DeltaSlide = p.DeltaSlide;

            VibratoDepth = p.VibratoDepth;
            VibratoSpeed = p.VibratoSpeed;

            ChangeAmount = p.ChangeAmount;
            ChangeSpeed  = p.ChangeSpeed;

            SquareDuty = p.SquareDuty;
            DutySweep  = p.DutySweep;

            RepeatSpeed = p.RepeatSpeed;

            PhaserOffset = p.PhaserOffset;
            PhaserSweep  = p.PhaserSweep;

            LowPassCutoff      = p.LowPassCutoff;
            LowPassCutoffSweep = p.LowPassCutoffSweep;
            LowPassResonance   = p.LowPassResonance;

            HighPassCutoff      = p.HighPassCutoff;
            HighPassCutoffSweep = p.HighPassCutoffSweep;
        }