1 /* 2 ** Surge Synthesizer is Free and Open Source Software 3 ** 4 ** Surge is made available under the Gnu General Public License, v3.0 5 ** https://www.gnu.org/licenses/gpl-3.0.en.html 6 ** 7 ** Copyright 2004-2020 by various individuals as described by the Git transaction log 8 ** 9 ** All source at: https://github.com/surge-synthesizer/surge.git 10 ** 11 ** Surge was a commercial product from 2004-2018, with Copyright and ownership 12 ** in that period held by Claes Johanson at Vember Audio. Claes made Surge 13 ** open source in September 2018. 14 */ 15 16 #pragma once 17 #include "Effect.h" 18 #include "BiquadFilter.h" 19 #include "DspUtilities.h" 20 #include "AllpassFilter.h" 21 22 #include "VectorizedSvfFilter.h" 23 24 #include <vt_dsp/halfratefilter.h> 25 #include <vt_dsp/lipol.h> 26 27 class Eq3BandEffect : public Effect 28 { 29 lipol_ps gain alignas(16); 30 lipol_ps mix alignas(16); 31 32 float L alignas(16)[BLOCK_SIZE], R alignas(16)[BLOCK_SIZE]; 33 34 public: 35 enum eq3_params 36 { 37 eq3_gain1 = 0, 38 eq3_freq1, 39 eq3_bw1, 40 41 eq3_gain2, 42 eq3_freq2, 43 eq3_bw2, 44 45 eq3_gain3, 46 eq3_freq3, 47 eq3_bw3, 48 49 eq3_gain, 50 eq3_mix, 51 52 eq3_num_ctrls, 53 }; 54 55 Eq3BandEffect(SurgeStorage *storage, FxStorage *fxdata, pdata *pd); 56 virtual ~Eq3BandEffect(); get_effectname()57 virtual const char *get_effectname() override { return "EQ"; } 58 virtual void init() override; 59 virtual void process(float *dataL, float *dataR) override; 60 virtual void suspend() override; 61 void setvars(bool init); 62 virtual void init_ctrltypes() override; 63 virtual void init_default_values() override; 64 virtual const char *group_label(int id) override; 65 virtual int group_label_ypos(int id) override; 66 67 virtual void handleStreamingMismatches(int streamingRevision, 68 int currentSynthStreamingRevision) override; 69 70 private: 71 BiquadFilter band1, band2, band3; 72 int bi; // block increment (to keep track of events not occurring every n blocks) 73 }; 74