void RecreateFilter() { if (filter != null) { source.RemoveFilter(filter); } source.AddFilter(filter = (lastFilter = FilterType) switch { FilterTypes.Lowpass => new Lowpass(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.Highpass => new Highpass(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.Bandpass => new Bandpass(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.Notch => new Notch(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.Allpass => new Allpass(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.PeakingEQ => new PeakingEQ(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.LowShelf => new LowShelf(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), FilterTypes.HighShelf => new HighShelf(AudioListener3D.Current.SampleRate, CenterFreq, Q, Gain), _ => throw new FilterNotExistsException(), });
/// <summary> /// Translates Cavern filter classes to MultEQ-X filter IDs. /// </summary> static int FilterTypeID(BiquadFilter filter) { if (filter is Highpass) { return(highpassEQType); } if (filter is HighShelf) { return(highShelfEQType); } if (filter is Lowpass) { return(lowpassEQType); } if (filter is LowShelf) { return(lowShelfEQType); } if (filter is PeakingEQ) { return(peakingEQType); } throw new UnsupportedFilterException(); }