Proteus

Guitar amp and pedal capture plugin using neural networks
Log | Files | Refs | Submodules | README

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 }