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

Start() public method

public Start ( AlphaSynth.Synthesis.VoiceParameters voiceparams ) : bool
voiceparams AlphaSynth.Synthesis.VoiceParameters
return bool
        public override bool Start(VoiceParameters voiceparams)
        {
            int note = keyOverride > -1 ? keyOverride : voiceparams.Note;
            int vel = velOverride > -1 ? velOverride : voiceparams.Velocity;
            //setup generator
            voiceparams.GeneratorParams[0].QuickSetup(gen);
            //setup envelopes
            voiceparams.Envelopes[0].QuickSetupSf2(voiceparams.SynthParams.Synth.SampleRate, note, keynumToModEnvHold, keynumToModEnvDecay, false, mod_env);
            voiceparams.Envelopes[1].QuickSetupSf2(voiceparams.SynthParams.Synth.SampleRate, note, keynumToVolEnvHold, keynumToVolEnvDecay, true, vel_env);
            //setup filter
            //voiceparams.pData[0].int1 = iniFilterFc - (int)(2400 * CalculateModulator(SourceTypeEnum.Linear, TransformEnum.Linear, DirectionEnum.MaxToMin, PolarityEnum.Unipolar, voiceparams.velocity, 0, 127));
            //if (iniFilterFc >= 13500 && fltr.Resonance <= 1)
            voiceparams.Filters[0].Disable();
            //else
            //    voiceparams.filters[0].QuickSetup(voiceparams.synthParams.synth.SampleRate, note, 1f, fltr);
            //setup lfos
            voiceparams.Lfos[0].QuickSetup(voiceparams.SynthParams.Synth.SampleRate, mod_lfo);
            voiceparams.Lfos[1].QuickSetup(voiceparams.SynthParams.Synth.SampleRate, vib_lfo);
            //calculate initial pitch
            voiceparams.PitchOffset = (note - gen.RootKey) * gen.KeyTrack + gen.Tune;
            voiceparams.PitchOffset += (int)(100.0 * (voiceparams.SynthParams.MasterCoarseTune + (voiceparams.SynthParams.MasterFineTune.Combined - 8192.0) / 8192.0));
            //calculate initial volume
            voiceparams.VolOffset = initialAttn;
            voiceparams.VolOffset -= 96.0f * (float)CalculateModulator(SourceTypeEnum.Concave, TransformEnum.Linear, DirectionEnum.MaxToMin, PolarityEnum.Unipolar, voiceparams.Velocity, 0, 127);
            voiceparams.VolOffset -= 96.0f * (float)CalculateModulator(SourceTypeEnum.Concave, TransformEnum.Linear, DirectionEnum.MaxToMin, PolarityEnum.Unipolar, voiceparams.SynthParams.Volume.Coarse, 0, 127);
            //check if we have finished before we have begun
            return voiceparams.GeneratorParams[0].CurrentState != GeneratorState.Finished && voiceparams.Envelopes[1].CurrentStage != EnvelopeState.None;
        }