summaryrefslogtreecommitdiff
path: root/synth/filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'synth/filter.h')
-rw-r--r--synth/filter.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/synth/filter.h b/synth/filter.h
new file mode 100644
index 0000000..10db5d7
--- /dev/null
+++ b/synth/filter.h
@@ -0,0 +1,27 @@
+#ifndef __FILTER_H__
+#define __FILTER_H__
+
+#include "fixed.h"
+
+/**
+ * A 24 dB/octave resonant low-pass filter.
+ **/
+class LowPassFilter
+{
+public:
+ LowPassFilter();
+
+ /**
+ * Reset the filter - clear anything in the delay units of the filter.
+ */
+ void reset();
+ void set_params(float fc, float res);
+ void process_sample(fixed_t* smp);
+private:
+ float rate;
+ float nyquist;
+ double d1, d2, d3, d4;
+ double a0, a1, a2, b1, b2;
+};
+
+#endif