00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef FILTER_H
00020 #define FILTER_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00070 class Filter {
00071 protected:
00072
00073 int _channelCount;
00074 int _length;
00075
00076
00077 MatrixXR _ina;
00078 MatrixXR _inb;
00079
00080 MatrixXR _a;
00081 MatrixXR _b;
00082
00083 MatrixXR _z;
00084 MatrixXR _samples;
00085
00086 void setupState();
00087 void setupCoeffs();
00088
00089 public:
00094 Filter(int channelCount = 1);
00095 Filter(const MatrixXR& b, const MatrixXR& a, int channelCount);
00096
00097 void setup();
00098 void reset();
00099
00115 void process(const MatrixXR& samples, MatrixXR* filtered);
00116
00134 void a( MatrixXR* a ) const;
00135
00151 void setA( const MatrixXR& a, bool callSetup = true );
00152
00170 void b( MatrixXR* b ) const;
00171
00187 void setB( const MatrixXR& b, bool callSetup = true );
00188
00198 int channelCount() const;
00199
00207 void setChannelCount( int count, bool callSetup = true );
00208
00209
00215 int length() const;
00216 };
00217
00218 #endif