cd4efdae7822a8f35aee8c2f84ad6b5fb8c96cf4
[vlc.git] / modules / audio_filter / spatializer / revmodel.hpp
1 // Reverb model declaration
2 //
3 // Google Summer of Code 2007
4 // 
5 // Authors: Biodun Osunkunle <biodun@videolan.org> 
6 // 
7 // Mentor : Jean-Baptiste Kempf <jb@videolan.org>
8 //
9 // Original written by Jezar at Dreampoint, June 2000
10
11 #ifndef _revmodel_
12 #define _revmodel_
13
14 #include "comb.hpp"
15 #include "allpass.hpp"
16 #include "tuning.h"
17
18 class revmodel
19 {
20 public:
21                 revmodel();
22         void    mute();
23         void    processreplace(float *inputL, float *outputL, long numsamples, int skip);
24         void    processmix(float *inputL, float *outputL, long numsamples, int skip);
25         void    setroomsize(float value);
26         float   getroomsize();
27         void    setdamp(float value);
28         float   getdamp();
29         void    setwet(float value);
30         float   getwet();
31         void    setdry(float value);
32         float   getdry();
33         void    setwidth(float value);
34         float   getwidth();
35         void    setmode(float value);
36         float   getmode();
37 private:
38         void    update();
39 private:
40         float   gain;
41         float   roomsize,roomsize1;
42         float   damp,damp1;
43         float   wet,wet1,wet2;
44         float   dry;
45         float   width;
46         float   mode;
47
48 // The following are all declared inline 
49 // to remove the need for dynamic allocation
50 // with its subsequent error-checking messiness
51
52 // Comb filters
53         comb    combL[numcombs];
54         comb    combR[numcombs];
55
56         // Allpass filters
57         allpass allpassL[numallpasses];
58         allpass allpassR[numallpasses];
59
60         // Buffers for the combs
61         float   bufcombL1[combtuningL1];
62         float   bufcombR1[combtuningR1];
63         float   bufcombL2[combtuningL2];
64         float   bufcombR2[combtuningR2];
65         float   bufcombL3[combtuningL3];
66         float   bufcombR3[combtuningR3];
67         float   bufcombL4[combtuningL4];
68         float   bufcombR4[combtuningR4];
69         float   bufcombL5[combtuningL5];
70         float   bufcombR5[combtuningR5];
71         float   bufcombL6[combtuningL6];
72         float   bufcombR6[combtuningR6];
73         float   bufcombL7[combtuningL7];
74         float   bufcombR7[combtuningR7];
75         float   bufcombL8[combtuningL8];
76         float   bufcombR8[combtuningR8];
77
78         // Buffers for the allpasses
79         float   bufallpassL1[allpasstuningL1];
80         float   bufallpassR1[allpasstuningR1];
81         float   bufallpassL2[allpasstuningL2];
82         float   bufallpassR2[allpasstuningR2];
83         float   bufallpassL3[allpasstuningL3];
84         float   bufallpassR3[allpasstuningR3];
85         float   bufallpassL4[allpasstuningL4];
86         float   bufallpassR4[allpasstuningR4];
87 };
88
89 #endif//_revmodel_
90
91 //ends