public void SetDiffuserDelay(int delaySamples) { diffuser.SetDelay(delaySamples); }
public void SetParameter(Parameter para, double value) { parameters[para] = value; switch (para) { case Parameter.PreDelay: preDelay.SampleDelay = (int)Ms2Samples(value); break; case Parameter.HighPass: highPass.CutoffHz = value; break; case Parameter.LowPass: lowPass.CutoffHz = value; break; case Parameter.TapCount: multitap.SetTapCount((int)value); break; case Parameter.TapLength: multitap.SetTapLength((int)Ms2Samples(value)); break; case Parameter.TapGain: multitap.SetTapGain(value); break; case Parameter.TapDecay: multitap.SetTapDecay(value); break; case Parameter.DiffusionEnabled: diffuserEnabled = value >= 0.5; break; case Parameter.DiffusionStages: diffuser.Stages = (int)value; break; case Parameter.DiffusionDelay: diffuser.SetDelay((int)Ms2Samples(value)); break; case Parameter.DiffusionFeedback: diffuser.SetFeedback(value); break; case Parameter.LineCount: lineCount = (int)value; perLineGain = GetPerLineGain(); break; case Parameter.LineDelay: UpdateLines(); break; case Parameter.LineDecay: UpdateLines(); break; case Parameter.LateDiffusionEnabled: foreach (var line in lines) { line.DiffuserEnabled = value >= 0.5; } break; case Parameter.LateDiffusionStages: foreach (var line in lines) { line.SetDiffuserStages((int)value); } break; case Parameter.LateDiffusionDelay: foreach (var line in lines) { line.SetDiffuserDelay((int)Ms2Samples(value)); } break; case Parameter.LateDiffusionFeedback: foreach (var line in lines) { line.SetDiffuserFeedback(value); } break; case Parameter.PostLowShelfGain: foreach (var line in lines) { line.SetLowShelfGain(value); } break; case Parameter.PostLowShelfFrequency: foreach (var line in lines) { line.SetLowShelfFrequency(value); } break; case Parameter.PostHighShelfGain: foreach (var line in lines) { line.SetHighShelfGain(value); } break; case Parameter.PostHighShelfFrequency: foreach (var line in lines) { line.SetHighShelfFrequency(value); } break; case Parameter.PostCutoffFrequency: foreach (var line in lines) { line.SetCutoffFrequency(value); } break; case Parameter.EarlyDiffusionModAmount: diffuser.SetModAmount(Ms2Samples(value)); break; case Parameter.EarlyDiffusionModRate: diffuser.SetModRate(value); break; case Parameter.LineModAmount: UpdateLines(); break; case Parameter.LineModRate: UpdateLines(); break; case Parameter.LateDiffusionModAmount: UpdateLines(); break; case Parameter.LateDiffusionModRate: UpdateLines(); break; case Parameter.TapSeed: multitap.Seeds = rand.Generate((int)value, 100).ToArray(); break; case Parameter.DiffusionSeed: diffuser.Seeds = rand.Generate((int)value, AllpassDiffuser.MaxStageCount * 3).ToArray(); break; case Parameter.DelaySeed: delayLineSeeds = rand.Generate((int)value, lines.Length * 3).ToArray(); UpdateLines(); break; case Parameter.PostDiffusionSeed: for (int i = 0; i < lines.Length; i++) { lines[i].DiffuserSeeds = rand.Generate(((long)value) * (i + 1), AllpassDiffuser.MaxStageCount * 3).ToArray(); } break; case Parameter.DryOut: dryOut = value; break; case Parameter.PredelayOut: predelayOut = value; break; case Parameter.EarlyOut: earlyOut = value; break; case Parameter.MainOut: lineOut = value; break; case Parameter.HiPassEnabled: highPassEnabled = value >= 0.5; break; case Parameter.LowPassEnabled: lowPassEnabled = value >= 0.5; break; case Parameter.LowShelfEnabled: foreach (var line in lines) { line.LowShelfEnabled = value >= 0.5; } break; case Parameter.HighShelfEnabled: foreach (var line in lines) { line.HighShelfEnabled = value >= 0.5; } break; case Parameter.CutoffEnabled: foreach (var line in lines) { line.CutoffEnabled = value >= 0.5; } break; } }