コード例 #1
0
ファイル: DelayLine.cs プロジェクト: wesgrant/CloudSeed
 public void SetDiffuserFeedback(double feedb)
 {
     diffuser.SetFeedback(feedb);
 }
コード例 #2
0
        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;
            }
        }