diff options
author | Torbjörn Andersson | 2004-10-22 15:59:11 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2004-10-22 15:59:11 +0000 |
commit | 1a36eeda0ee85a37c24962be8fd3e94463585175 (patch) | |
tree | 5f782735431f6d0151db7d6b22b8c6f964d9fd3c /backends/midi/mt32 | |
parent | 5c53a3e260e8208cf9917b74f934b01629c47328 (diff) | |
download | scummvm-rg350-1a36eeda0ee85a37c24962be8fd3e94463585175.tar.gz scummvm-rg350-1a36eeda0ee85a37c24962be8fd3e94463585175.tar.bz2 scummvm-rg350-1a36eeda0ee85a37c24962be8fd3e94463585175.zip |
ScummVM style (partial)
svn-id: r15653
Diffstat (limited to 'backends/midi/mt32')
-rw-r--r-- | backends/midi/mt32/freeverb.cpp | 3 | ||||
-rw-r--r-- | backends/midi/mt32/freeverb.h | 246 |
2 files changed, 120 insertions, 129 deletions
diff --git a/backends/midi/mt32/freeverb.cpp b/backends/midi/mt32/freeverb.cpp index 0b6f280660..df3e3bf2a2 100644 --- a/backends/midi/mt32/freeverb.cpp +++ b/backends/midi/mt32/freeverb.cpp @@ -310,6 +310,3 @@ float revmodel::getmode() { else return 0; } - -//ends - diff --git a/backends/midi/mt32/freeverb.h b/backends/midi/mt32/freeverb.h index b0d32c8f3f..d618f79670 100644 --- a/backends/midi/mt32/freeverb.h +++ b/backends/midi/mt32/freeverb.h @@ -31,77 +31,74 @@ // Based on IS_DENORMAL macro by Jon Watte // This code is public domain -#ifndef _freeverb_h_ -#define _freeverb_h_ +#ifndef FREEVERB_H +#define FREEVERB_H -#define undenormalise(sample) if(((*(unsigned int*)&sample)&0x7f800000)==0) sample=0.0f +#define undenormalise(sample) if (((*(unsigned int*)&sample) & 0x7f800000) == 0) sample = 0.0f // Comb filter class declaration -class comb -{ +class comb { public: - comb(); - void setbuffer(float *buf, int size); - inline float process(float inp); - void mute(); - void setdamp(float val); - float getdamp(); - void setfeedback(float val); - float getfeedback(); + comb(); + void setbuffer(float *buf, int size); + inline float process(float inp); + void mute(); + void setdamp(float val); + float getdamp(); + void setfeedback(float val); + float getfeedback(); private: - float feedback; - float filterstore; - float damp1; - float damp2; - float *buffer; - int bufsize; - int bufidx; + float feedback; + float filterstore; + float damp1; + float damp2; + float *buffer; + int bufsize; + int bufidx; }; // Big to inline - but crucial for speed -inline float comb::process(float input) -{ +inline float comb::process(float input) { float output; output = buffer[bufidx]; undenormalise(output); - filterstore = (output*damp2) + (filterstore*damp1); + filterstore = (output * damp2) + (filterstore * damp1); undenormalise(filterstore); - buffer[bufidx] = input + (filterstore*feedback); + buffer[bufidx] = input + (filterstore * feedback); - if(++bufidx>=bufsize) bufidx = 0; + if (++bufidx >= bufsize) + bufidx = 0; return output; } // Allpass filter declaration -class allpass -{ +class allpass { public: - allpass(); - void setbuffer(float *buf, int size); - inline float process(float inp); - void mute(); - void setfeedback(float val); - float getfeedback(); -// private: - float feedback; - float *buffer; - int bufsize; - int bufidx; + allpass(); + void setbuffer(float *buf, int size); + inline float process(float inp); + void mute(); + void setfeedback(float val); + float getfeedback(); +private: + float feedback; + float *buffer; + int bufsize; + int bufidx; }; // Big to inline - but crucial for speed -inline float allpass::process(float input) -{ +inline float allpass::process(float input) { float output; float bufout; @@ -109,9 +106,10 @@ inline float allpass::process(float input) undenormalise(bufout); output = -input + bufout; - buffer[bufidx] = input + (bufout*feedback); + buffer[bufidx] = input + (bufout * feedback); - if(++bufidx>=bufsize) bufidx = 0; + if (++bufidx >= bufsize) + bufidx = 0; return output; } @@ -119,22 +117,22 @@ inline float allpass::process(float input) // Reverb model tuning values -const int numcombs = 8; +const int numcombs = 8; const int numallpasses = 4; -const float muted = 0; -const float fixedgain = 0.015f; -const float scalewet = 3; -const float scaledry = 2; -const float scaledamp = 0.4f; -const float scaleroom = 0.28f; -const float offsetroom = 0.7f; -const float initialroom = 0.5f; -const float initialdamp = 0.5f; -const float initialwet = 1/scalewet; -const float initialdry = 0; -const float initialwidth = 1; -const float initialmode = 0; -const float freezemode = 0.5f; +const float muted = 0; +const float fixedgain = 0.015f; +const float scalewet = 3; +const float scaledry = 2; +const float scaledamp = 0.4f; +const float scaleroom = 0.28f; +const float offsetroom = 0.7f; +const float initialroom = 0.5f; +const float initialdamp = 0.5f; +const float initialwet = 1 / scalewet; +const float initialdry = 0; +const float initialwidth = 1; +const float initialmode = 0; +const float freezemode = 0.5f; const int stereospread = 23; // These values assume 44.1KHz sample rate @@ -142,105 +140,101 @@ const int stereospread = 23; // but would need scaling for 96KHz (or other) sample rates. // The values were obtained by listening tests. const int combtuningL1 = 1116; -const int combtuningR1 = 1116+stereospread; +const int combtuningR1 = 1116 + stereospread; const int combtuningL2 = 1188; -const int combtuningR2 = 1188+stereospread; +const int combtuningR2 = 1188 + stereospread; const int combtuningL3 = 1277; -const int combtuningR3 = 1277+stereospread; +const int combtuningR3 = 1277 + stereospread; const int combtuningL4 = 1356; -const int combtuningR4 = 1356+stereospread; +const int combtuningR4 = 1356 + stereospread; const int combtuningL5 = 1422; -const int combtuningR5 = 1422+stereospread; +const int combtuningR5 = 1422 + stereospread; const int combtuningL6 = 1491; -const int combtuningR6 = 1491+stereospread; +const int combtuningR6 = 1491 + stereospread; const int combtuningL7 = 1557; -const int combtuningR7 = 1557+stereospread; +const int combtuningR7 = 1557 + stereospread; const int combtuningL8 = 1617; -const int combtuningR8 = 1617+stereospread; +const int combtuningR8 = 1617 + stereospread; const int allpasstuningL1 = 556; -const int allpasstuningR1 = 556+stereospread; +const int allpasstuningR1 = 556 + stereospread; const int allpasstuningL2 = 441; -const int allpasstuningR2 = 441+stereospread; +const int allpasstuningR2 = 441 + stereospread; const int allpasstuningL3 = 341; -const int allpasstuningR3 = 341+stereospread; +const int allpasstuningR3 = 341 + stereospread; const int allpasstuningL4 = 225; -const int allpasstuningR4 = 225+stereospread; +const int allpasstuningR4 = 225 + stereospread; // Reverb model declaration -class revmodel -{ +class revmodel { public: - revmodel(); - void mute(); - void processmix(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip); - void processreplace(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip); - void setroomsize(float value); - float getroomsize(); - void setdamp(float value); - float getdamp(); - void setwet(float value); - float getwet(); - void setdry(float value); - float getdry(); - void setwidth(float value); - float getwidth(); - void setmode(float value); - float getmode(); -private: - void update(); + revmodel(); + void mute(); + void processmix(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip); + void processreplace(float *inputL, float *inputR, float *outputL, float *outputR, long numsamples, int skip); + void setroomsize(float value); + float getroomsize(); + void setdamp(float value); + float getdamp(); + void setwet(float value); + float getwet(); + void setdry(float value); + float getdry(); + void setwidth(float value); + float getwidth(); + void setmode(float value); + float getmode(); private: - float gain; - float roomsize,roomsize1; - float damp,damp1; - float wet,wet1,wet2; - float dry; - float width; - float mode; + void update(); + + float gain; + float roomsize, roomsize1; + float damp, damp1; + float wet, wet1, wet2; + float dry; + float width; + float mode; // The following are all declared inline // to remove the need for dynamic allocation // with its subsequent error-checking messiness // Comb filters - comb combL[numcombs]; - comb combR[numcombs]; + comb combL[numcombs]; + comb combR[numcombs]; // Allpass filters allpass allpassL[numallpasses]; allpass allpassR[numallpasses]; // Buffers for the combs - float bufcombL1[combtuningL1]; - float bufcombR1[combtuningR1]; - float bufcombL2[combtuningL2]; - float bufcombR2[combtuningR2]; - float bufcombL3[combtuningL3]; - float bufcombR3[combtuningR3]; - float bufcombL4[combtuningL4]; - float bufcombR4[combtuningR4]; - float bufcombL5[combtuningL5]; - float bufcombR5[combtuningR5]; - float bufcombL6[combtuningL6]; - float bufcombR6[combtuningR6]; - float bufcombL7[combtuningL7]; - float bufcombR7[combtuningR7]; - float bufcombL8[combtuningL8]; - float bufcombR8[combtuningR8]; + float bufcombL1[combtuningL1]; + float bufcombR1[combtuningR1]; + float bufcombL2[combtuningL2]; + float bufcombR2[combtuningR2]; + float bufcombL3[combtuningL3]; + float bufcombR3[combtuningR3]; + float bufcombL4[combtuningL4]; + float bufcombR4[combtuningR4]; + float bufcombL5[combtuningL5]; + float bufcombR5[combtuningR5]; + float bufcombL6[combtuningL6]; + float bufcombR6[combtuningR6]; + float bufcombL7[combtuningL7]; + float bufcombR7[combtuningR7]; + float bufcombL8[combtuningL8]; + float bufcombR8[combtuningR8]; // Buffers for the allpasses - float bufallpassL1[allpasstuningL1]; - float bufallpassR1[allpasstuningR1]; - float bufallpassL2[allpasstuningL2]; - float bufallpassR2[allpasstuningR2]; - float bufallpassL3[allpasstuningL3]; - float bufallpassR3[allpasstuningR3]; - float bufallpassL4[allpasstuningL4]; - float bufallpassR4[allpasstuningR4]; + float bufallpassL1[allpasstuningL1]; + float bufallpassR1[allpasstuningR1]; + float bufallpassL2[allpasstuningL2]; + float bufallpassR2[allpasstuningR2]; + float bufallpassL3[allpasstuningL3]; + float bufallpassR3[allpasstuningR3]; + float bufallpassL4[allpasstuningL4]; + float bufallpassR4[allpasstuningR4]; }; -#endif//_freeverb_h_ - -//ends - +#endif |