| 
							- /**
 -  * One-pole LPF for smooth parameter changes
 -  *
 -  * https://www.musicdsp.org/en/latest/Filters/257-1-pole-lpf-for-smooth-parameter-changes.html
 -  */
 - 
 - #ifndef C_PARAM_SMOOTH_H
 - #define C_PARAM_SMOOTH_H
 - 
 - #include <math.h>
 - 
 - #define TWO_PI 6.283185307179586476925286766559f
 - 
 - class CParamSmooth {
 - public:
 -     CParamSmooth(float smoothingTimeMs, float samplingRate)
 -         : t(smoothingTimeMs)
 -     {
 -         setSampleRate(samplingRate);
 -     }
 - 
 -     ~CParamSmooth() { }
 - 
 -     void setSampleRate(float samplingRate) {
 -         if (samplingRate != fs) {
 -             fs = samplingRate;
 -             a = exp(-TWO_PI / (t * 0.001f * samplingRate));
 -             b = 1.0f - a;
 -             z = 0.0f;
 -         }
 -     }
 - 
 -     inline void flush() {
 -         z = 0.0f;
 -     }
 - 
 -     inline float process(float in) {
 -         return z = (in * b) + (z * a);
 -     }
 - private:
 -     float a, b, t, z;
 -     double fs = 0.0;
 - };
 - 
 - #endif  // #ifndef C_PARAM_SMOOTH_H
 
 
  |