1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
// Music 256a / CS 476a | fall 2016
// CCRMA, Stanford University
//
// Author: Romain Michon (rmichonATccrmaDOTstanfordDOTedu)
// Description: Exponential smoothing by a unity-dc-gain one-pole lowpass
#ifndef SMOOTH_H_INCLUDED
#define SMOOTH_H_INCLUDED
class Smooth{
private:
double delay,s;
public:
Smooth():delay(0.0),s(0.0){}
~Smooth(){}
void reset(){
delay = 0;
}
// set the smoothing (pole)
void setSmooth(double smooth){
s = smooth;
}
// compute one sample
double tick(double input){
double currentSample = input*(1.0-s);
currentSample = currentSample + delay;
delay = currentSample*s;
return currentSample;
}
};
#endif // SMOOTH_H_INCLUDED
|