public ChorusEffect(int minDelay, int maxDelay, double rate, ChorusEffector.DelayType delayType, Effect prior) : base(prior) { this.minDelay = minDelay; this.maxDelay = maxDelay; this.rate = rate; this.delayType = delayType; }
private Effect BuildChorusEffect(string[] effectArguments, Effect lastEffect) { if (effectArguments.Length == 2 || effectArguments.Length > 5) { throw new EffectParsingException( $"Incorrect argument count for ChorusEffect. Expected: 0, 2, or 3, Received: {effectArguments.Length - 1}"); } int minDelay = SafeParseAndVerifyInt( effectData: effectArguments, position: 0, minValue: 0, maxValue: 200, defaultValue: 40, parameterName: "ChorusEffect MinDelay"); int maxDelay = SafeParseAndVerifyInt( effectData: effectArguments, position: 1, minValue: 0, maxValue: 200, defaultValue: 60, parameterName: "ChorusEffect MaxDelay"); if (maxDelay < minDelay) { //swap (maxDelay, minDelay) = (minDelay, maxDelay); } double rate = SafeParseAndVerifyDouble( effectData: effectArguments, position: 2, minValue: 0.125, maxValue: 100.0, defaultValue: 0.25, parameterName: "ChorusEffect Rate"); ChorusEffector.DelayType delayType = SafeParseAndVerifyEnum( effectData: effectArguments, position: 3, translationDelegate: ChorusEffect.TranslateDelayType, isValidDelegate: x => x != ChorusEffector.DelayType.MAX, defaultValue: ChorusEffector.DelayType.Sine, notValidError: "Must be \"Sine\" or \"Triangle\"", parameterName: "ChorusEffect DelayType"); return(new ChorusEffect(minDelay, maxDelay, rate, delayType, lastEffect)); }