AlphaSynth.Bank.Patch.Sf2Patch.LoadEnvelopes C# (CSharp) Method

LoadEnvelopes() private method

private LoadEnvelopes ( AlphaSynth.Sf2.Sf2Region region ) : void
region AlphaSynth.Sf2.Sf2Region
return void
        private void LoadEnvelopes(Sf2Region region)
        {
            //
            //mod env
            mod_env = new EnvelopeDescriptor();
            mod_env.AttackTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.AttackModulationEnvelope] / 1200.0);
            mod_env.AttackGraph = 3;
            mod_env.DecayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DecayModulationEnvelope] / 1200.0);
            mod_env.DelayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DelayModulationEnvelope] / 1200.0);
            mod_env.HoldTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.HoldModulationEnvelope] / 1200.0);
            mod_env.PeakLevel = 1;
            mod_env.ReleaseTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.ReleaseModulationEnvelope] / 1200.0);
            mod_env.StartLevel = 0;
            mod_env.SustainLevel = 1f - SynthHelper.ClampS(region.Generators[(int)GeneratorEnum.SustainModulationEnvelope], (short)0, (short)1000) / 1000f;
            //checks
            if (mod_env.AttackTime < 0.001f)
                mod_env.AttackTime = 0.001f;
            else if (mod_env.AttackTime > 100f)
                mod_env.AttackTime = 100f;
            if (mod_env.DecayTime < 0.001f)
                mod_env.DecayTime = 0;
            else if (mod_env.DecayTime > 100f)
                mod_env.DecayTime = 100f;
            if (mod_env.DelayTime < 0.001f)
                mod_env.DelayTime = 0;
            else if (mod_env.DelayTime > 20f)
                mod_env.DelayTime = 20f;
            if (mod_env.HoldTime < 0.001f)
                mod_env.HoldTime = 0;
            else if (mod_env.HoldTime > 20f)
                mod_env.HoldTime = 20f;
            if (mod_env.ReleaseTime < 0.001f)
                mod_env.ReleaseTime = 0.001f;
            else if (mod_env.ReleaseTime > 100f)
                mod_env.ReleaseTime = 100f;

            //
            // volume env
            vel_env = new EnvelopeDescriptor();
            vel_env.AttackTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.AttackVolumeEnvelope] / 1200.0);
            vel_env.AttackGraph = 3;
            vel_env.DecayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DecayVolumeEnvelope] / 1200.0);
            vel_env.DelayTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.DelayVolumeEnvelope] / 1200.0);
            vel_env.HoldTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.HoldVolumeEnvelope] / 1200.0);
            vel_env.PeakLevel = 0;
            vel_env.ReleaseTime = (float)Math.Pow(2, region.Generators[(int)GeneratorEnum.ReleaseVolumeEnvelope] / 1200.0);
            vel_env.StartLevel = -100;
            vel_env.SustainLevel = SynthHelper.ClampS(region.Generators[(int)GeneratorEnum.SustainVolumeEnvelope], (short)0, (short)1000) / -10f;
            // checks
            if (vel_env.AttackTime < 0.001f)
                vel_env.AttackTime = 0.001f;
            else if (vel_env.AttackTime > 100f)
                vel_env.AttackTime = 100f;
            if (vel_env.DecayTime < 0.001f)
                vel_env.DecayTime = 0;
            else if (vel_env.DecayTime > 100f)
                vel_env.DecayTime = 100f;
            if (vel_env.DelayTime < 0.001f)
                vel_env.DelayTime = 0;
            else if (vel_env.DelayTime > 20f)
                vel_env.DelayTime = 20f;
            if (vel_env.HoldTime < 0.001f)
                vel_env.HoldTime = 0;
            else if (vel_env.HoldTime > 20f)
                vel_env.HoldTime = 20f;
            if (vel_env.ReleaseTime < 0.001f)
                vel_env.ReleaseTime = 0.001f;
            else if (vel_env.ReleaseTime > 100f)
                vel_env.ReleaseTime = 100f;
        }