コード例 #1
0
ファイル: Filter.cs プロジェクト: eriser/alphaSynth
 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);
     }
 }
コード例 #2
0
ファイル: Sf2Patch.cs プロジェクト: CoderLine/alphaSynth
 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);
 }