public void QuickSetup(int sampleRate, int note, float velocity, FilterDescriptor filterInfo) { CoeffNeedsUpdating = false; CutOff = filterInfo.CutOff; Resonance = filterInfo.Resonance; FilterMethod = filterInfo.FilterMethod; _a1 = 0; _a2 = 0; _b1 = 0; _b2 = 0; _m1 = 0; _m2 = 0; _m3 = 0; if (CutOff <= 0 || Resonance <= 0) { FilterMethod = FilterType.None; } if (FilterMethod != FilterType.None) { CutOff *= SynthHelper.CentsToPitch((note - filterInfo.RootKey) * filterInfo.KeyTrack + (int)(velocity * filterInfo.VelTrack)); UpdateCoefficients(sampleRate); } }
private void LoadFilter(Sf2Region region) { fltr = new FilterDescriptor(); fltr.FilterMethod = FilterType.BiquadLowpass; fltr.CutOff = (float)SynthHelper.KeyToFrequency(region.Generators[(int)GeneratorEnum.InitialFilterCutoffFrequency] / 100.0, 69); fltr.Resonance = (float)SynthHelper.DBtoLinear(region.Generators[(int)GeneratorEnum.InitialFilterQ] / 10.0); }