|
|
@ -35,6 +35,10 @@ template <class T> |
|
|
|
void DigitalBiquadFilter<T>::compute_params(float sample_freq, float cutoff_freq, biquad_params &ret) { |
|
|
|
void DigitalBiquadFilter<T>::compute_params(float sample_freq, float cutoff_freq, biquad_params &ret) { |
|
|
|
ret.cutoff_freq = cutoff_freq; |
|
|
|
ret.cutoff_freq = cutoff_freq; |
|
|
|
ret.sample_freq = sample_freq; |
|
|
|
ret.sample_freq = sample_freq; |
|
|
|
|
|
|
|
if (!is_positive(ret.cutoff_freq)) { |
|
|
|
|
|
|
|
// zero cutoff means pass-thru
|
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
float fr = sample_freq/cutoff_freq; |
|
|
|
float fr = sample_freq/cutoff_freq; |
|
|
|
float ohm = tanf(M_PI/fr); |
|
|
|
float ohm = tanf(M_PI/fr); |
|
|
@ -83,6 +87,10 @@ float LowPassFilter2p<T>::get_sample_freq(void) const { |
|
|
|
|
|
|
|
|
|
|
|
template <class T> |
|
|
|
template <class T> |
|
|
|
T LowPassFilter2p<T>::apply(const T &sample) { |
|
|
|
T LowPassFilter2p<T>::apply(const T &sample) { |
|
|
|
|
|
|
|
if (!is_positive(_params.cutoff_freq)) { |
|
|
|
|
|
|
|
// zero cutoff means pass-thru
|
|
|
|
|
|
|
|
return sample; |
|
|
|
|
|
|
|
} |
|
|
|
return _filter.apply(sample, _params); |
|
|
|
return _filter.apply(sample, _params); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|