Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.1 / plugins / freeverb / Components / revmodel.hpp
diff --git a/cinelerra-5.1/plugins/freeverb/Components/revmodel.hpp b/cinelerra-5.1/plugins/freeverb/Components/revmodel.hpp
new file mode 100644 (file)
index 0000000..a332e25
--- /dev/null
@@ -0,0 +1,90 @@
+// Reverb model declaration\r
+//\r
+// Written by Jezar at Dreampoint, June 2000\r
+// http://www.dreampoint.co.uk\r
+// This code is public domain\r
+\r
+#ifndef _revmodel_\r
+#define _revmodel_\r
+\r
+#include "comb.hpp"\r
+#include "allpass.hpp"\r
+#include "tuning.h"\r
+\r
+class revmodel\r
+{\r
+public:\r
+                                       revmodel();\r
+                       void    mute();\r
+                       void    processmix(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip);\r
+                       void    processreplace(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip);\r
+                       void    setroomsize(float value);\r
+                       float   getroomsize();\r
+                       void    setdamp(float value);\r
+                       float   getdamp();\r
+                       void    setwet(float value);\r
+                       float   getwet();\r
+                       void    setdry(float value);\r
+                       float   getdry();\r
+                       void    setwidth(float value);\r
+                       float   getwidth();\r
+                       void    setmode(float value);\r
+                       float   getmode();\r
+private:\r
+                       void    update();\r
+private:\r
+       float   gain;\r
+       float   roomsize,roomsize1;\r
+       float   damp,damp1;\r
+       float   wet,wet1,wet2;\r
+       float   dry;\r
+       float   width;\r
+       float   mode;\r
+\r
+       // The following are all declared inline \r
+       // to remove the need for dynamic allocation\r
+       // with its subsequent error-checking messiness\r
+\r
+       // Comb filters\r
+       comb    combL[numcombs];\r
+       comb    combR[numcombs];\r
+\r
+       // Allpass filters\r
+       allpass allpassL[numallpasses];\r
+       allpass allpassR[numallpasses];\r
+\r
+       // Buffers for the combs\r
+       float   bufcombL1[combtuningL1];\r
+       float   bufcombR1[combtuningR1];\r
+       float   bufcombL2[combtuningL2];\r
+       float   bufcombR2[combtuningR2];\r
+       float   bufcombL3[combtuningL3];\r
+       float   bufcombR3[combtuningR3];\r
+       float   bufcombL4[combtuningL4];\r
+       float   bufcombR4[combtuningR4];\r
+       float   bufcombL5[combtuningL5];\r
+       float   bufcombR5[combtuningR5];\r
+       float   bufcombL6[combtuningL6];\r
+       float   bufcombR6[combtuningR6];\r
+       float   bufcombL7[combtuningL7];\r
+       float   bufcombR7[combtuningR7];\r
+       float   bufcombL8[combtuningL8];\r
+       float   bufcombR8[combtuningR8];\r
+\r
+       // Buffers for the allpasses\r
+       float   bufallpassL1[allpasstuningL1];\r
+       float   bufallpassR1[allpasstuningR1];\r
+       float   bufallpassL2[allpasstuningL2];\r
+       float   bufallpassR2[allpasstuningR2];\r
+       float   bufallpassL3[allpasstuningL3];\r
+       float   bufallpassR3[allpasstuningR3];\r
+       float   bufallpassL4[allpasstuningL4];\r
+       float   bufallpassR4[allpasstuningR4];\r
+};\r
+\r
+#endif//_revmodel_\r
+\r
+//ends\r
+\r
+\r
+\r