1 #pragma once 2 3 #include <QMap> 4 5 #include "control/controlproxy.h" 6 #include "effects/effect.h" 7 #include "effects/effectprocessor.h" 8 #include "engine/effects/engineeffect.h" 9 #include "engine/effects/engineeffectparameter.h" 10 #include "engine/filters/enginefilterbiquad1.h" 11 #include "util/class.h" 12 #include "util/defs.h" 13 #include "util/sample.h" 14 #include "util/types.h" 15 16 class GraphicEQEffectGroupState : public EffectState { 17 public: 18 GraphicEQEffectGroupState(const mixxx::EngineParameters& bufferParameters); 19 virtual ~GraphicEQEffectGroupState(); 20 21 void setFilters(int sampleRate); 22 23 EngineFilterBiquad1LowShelving* m_low; 24 QList<EngineFilterBiquad1Peaking*> m_bands; 25 EngineFilterBiquad1HighShelving* m_high; 26 QList<CSAMPLE*> m_pBufs; 27 QList<double> m_oldMid; 28 double m_oldLow; 29 double m_oldHigh; 30 float m_centerFrequencies[8]; 31 }; 32 33 class GraphicEQEffect : public EffectProcessorImpl<GraphicEQEffectGroupState> { 34 public: 35 GraphicEQEffect(EngineEffect* pEffect); 36 virtual ~GraphicEQEffect(); 37 38 static QString getId(); 39 static EffectManifestPointer getManifest(); 40 41 void processChannel(const ChannelHandle& handle, 42 GraphicEQEffectGroupState* pState, 43 const CSAMPLE* pInput, CSAMPLE *pOutput, 44 const mixxx::EngineParameters& bufferParameters, 45 const EffectEnableState enableState, 46 const GroupFeatureState& groupFeatureState); 47 48 private: debugString()49 QString debugString() const { 50 return getId(); 51 } 52 53 EngineEffectParameter* m_pPotLow; 54 QList<EngineEffectParameter*> m_pPotMid; 55 EngineEffectParameter* m_pPotHigh; 56 mixxx::audio::SampleRate m_oldSampleRate; 57 58 DISALLOW_COPY_AND_ASSIGN(GraphicEQEffect); 59 }; 60