Eq4Band.cpp (2148B)
1 /* 2 ============================================================================== 3 4 Eq4Band 5 6 ============================================================================== 7 */ 8 9 #include "Eq4Band.h" 10 11 Eq4Band::Eq4Band() 12 { 13 setParameters(0.0, 0.0, 0.0, 0.0); 14 } 15 16 void Eq4Band::process (const float* inData, float* outData, 17 MidiBuffer& midiMessages, 18 const int numSamples, 19 const int numInputChannels, 20 const int sampleRate) 21 { 22 // Reset params if new sampleRate detected 23 if (srate != sampleRate) { 24 srate = sampleRate; 25 resetSampleRate(); 26 } 27 for (int sample = 0; sample < numSamples; ++sample) { 28 spl0 = inData[sample]; 29 s0 = spl0; 30 low0 = (tmplMID = a0MID * s0 - b1MID * tmplMID + cDenorm); 31 spl0 = (tmplLOW = a0LOW * low0 - b1LOW * tmplLOW + cDenorm); 32 lowS0 = low0 - spl0; 33 hi0 = s0 - low0; 34 midS0 = (tmplHI = a0HI * hi0 - b1HI * tmplHI + cDenorm); 35 highS0 = hi0 - midS0; 36 spl0 = (spl0 * lVol + lowS0 * lmVol + midS0 * hmVol + highS0 * hVol);// * outVol; 37 38 outData[sample] = spl0; 39 } 40 } 41 42 void Eq4Band::setParameters(float bass_slider, float mid_slider, float treble_slider, float presence_slider) 43 { 44 lVol = exp(bass_slider / cAmpDB); 45 lmVol = exp(mid_slider / cAmpDB); 46 hmVol = exp(treble_slider / cAmpDB); 47 hVol = exp(presence_slider / cAmpDB); 48 outVol = exp(0.0 / cAmpDB); 49 50 xHI = exp(-2.0 * pi * treble_frequency / srate); 51 a0HI = 1.0 - xHI; 52 b1HI = -xHI; 53 54 xMID = exp(-2.0 * pi * mid_frequency / srate); 55 a0MID = 1.0 - xMID; 56 b1MID = -xMID; 57 58 xLOW = exp(-2.0 * pi * bass_frequency / srate); 59 a0LOW = 1.0 - xLOW; 60 b1LOW = -xLOW; 61 } 62 63 void Eq4Band::resetSampleRate() 64 { 65 xHI = exp(-2.0 * pi * treble_frequency / srate); 66 a0HI = 1.0 - xHI; 67 b1HI = -xHI; 68 69 xMID = exp(-2.0 * pi * mid_frequency / srate); 70 a0MID = 1.0 - xMID; 71 b1MID = -xMID; 72 73 xLOW = exp(-2.0 * pi * bass_frequency / srate); 74 a0LOW = 1.0 - xLOW; 75 b1LOW = -xLOW; 76 }