summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/plugins/freeverb/comb.h
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
commite40fc849149dd97c248866a4a1d026dda5e57b62 (patch)
treeb12b358f3b3a0608001d30403358f8443118ec5f /attic/muse2-oom/muse2/plugins/freeverb/comb.h
parent1bd4f2e8d9745cabb667b043171cad22c8577768 (diff)
clean3
Diffstat (limited to 'attic/muse2-oom/muse2/plugins/freeverb/comb.h')
-rw-r--r--attic/muse2-oom/muse2/plugins/freeverb/comb.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/attic/muse2-oom/muse2/plugins/freeverb/comb.h b/attic/muse2-oom/muse2/plugins/freeverb/comb.h
new file mode 100644
index 00000000..d2e0f871
--- /dev/null
+++ b/attic/muse2-oom/muse2/plugins/freeverb/comb.h
@@ -0,0 +1,66 @@
+// Comb filter class declaration
+//
+// Written by Jezar at Dreampoint, June 2000
+// http://www.dreampoint.co.uk
+// This code is public domain
+
+#ifndef _comb_
+#define _comb_
+
+#include "denormals.h"
+
+
+//---------------------------------------------------------
+// comb
+//---------------------------------------------------------
+
+class comb
+ {
+ float feedback;
+ float filterstore;
+ float damp1;
+ float damp2;
+ float *buffer;
+ int bufsize;
+ int bufidx;
+
+public:
+ comb() {
+ filterstore = 0;
+ bufidx = 0;
+ }
+ void setbuffer(float *buf, int size) {
+ buffer = buf;
+ bufsize = size;
+ }
+ float process(float input) {
+ float output = buffer[bufidx];
+ undenormalise(output);
+ filterstore = (output*damp2) + (filterstore*damp1);
+ undenormalise(filterstore);
+ buffer[bufidx] = input + (filterstore*feedback);
+ if (++bufidx >= bufsize)
+ bufidx = 0;
+// bufidx = ++bufidx % bufsize;
+ return output;
+ }
+ void mute() {
+ for (int i=0; i<bufsize; i++)
+ buffer[i]=0;
+ }
+ void setdamp(float val) {
+ damp1 = val;
+ damp2 = 1-val;
+ }
+ float getdamp() { return damp1; }
+ void setfeedback(float val) { feedback = val; }
+ float getfeedback() { return feedback; }
+ };
+
+
+// Big to inline - but crucial for speed
+
+
+#endif //_comb_
+
+//ends