annotate include/IirFilter.h @ 151:e9c9404e3d1f ClockSync

Pff partially working. No PID. When setting the audio clock on the bbb to 44098 the master and slave clock keep diverging instead of converging ...
author Giulio Moro <giuliomoro@yahoo.it>
date Tue, 22 Sep 2015 04:10:07 +0100
parents 6cd38e261027
children
rev   line source
giuliomoro@148 1 /*
giuliomoro@148 2 * IirFilter.h
giuliomoro@148 3 *
giuliomoro@148 4 * Created on: 17 Sep 2015
giuliomoro@148 5 * Author: giulio
giuliomoro@148 6 */
giuliomoro@148 7
giuliomoro@148 8 #ifndef IIRFILTER_H_
giuliomoro@148 9 #define IIRFILTER_H_
giuliomoro@148 10
giuliomoro@148 11 #define IIR_FILTER_STAGE_COEFFICIENTS (5)
giuliomoro@148 12 #define IIR_FILTER_STAGE_STATES (IIR_FILTER_STAGE_COEFFICIENTS - 1)
giuliomoro@148 13
giuliomoro@148 14 class IirFilterStage{ //TODO : to save (some) memory we should only store the coefficients pointers here,
giuliomoro@148 15 //so that IirFilter can share them among multiple stages if needbe)
giuliomoro@148 16 private:
giuliomoro@148 17 double coefficients[IIR_FILTER_STAGE_COEFFICIENTS]; // these are b0,b1,b2,a1,a2
giuliomoro@148 18 double states[IIR_FILTER_STAGE_STATES]; // these are xprev, xprevprev, yprev, yprevprev
giuliomoro@148 19 public:
giuliomoro@148 20 IirFilterStage();
giuliomoro@148 21 void setCoefficients(double* newCoefficients);
giuliomoro@148 22 void setStates(double* newStates);
giuliomoro@148 23 double process(double in);
giuliomoro@148 24 void process(double* inout, int length);
giuliomoro@148 25 void process(double* in, double* out, int length);
giuliomoro@148 26 };
giuliomoro@148 27
giuliomoro@148 28 class IirFilter{
giuliomoro@148 29 private:
giuliomoro@148 30 struct IirFilterStage** stages;
giuliomoro@148 31 int numberOfStages;
giuliomoro@148 32 void dealloc();
giuliomoro@148 33 public:
giuliomoro@148 34 IirFilter();
giuliomoro@148 35 IirFilter(int newNumberOfStages);
giuliomoro@148 36 IirFilter(int newNumberOfStages, double *newCoefficients);
giuliomoro@148 37 void setCoefficients(double* newCoefficients);
giuliomoro@148 38 void setStates(double* newStates);
giuliomoro@148 39 void setNumberOfStages(int newNumberOfStages);
giuliomoro@148 40 double process(double in);
giuliomoro@148 41 void process(double* inout, int length);
giuliomoro@148 42 void process(double* in, double* out, int length);
giuliomoro@148 43 };
giuliomoro@148 44
giuliomoro@148 45 #endif /* IIRFILTER_H_ */