#pragma once #include #include "../Resources.h" #include "../Params.h" namespace serum { // =========================================================================== // Approximate filter frequency-response view (magnitude vs log frequency). // =========================================================================== class FilterDisplay : public juce::Component, public juce::SettableTooltipClient { public: FilterDisplay() { setTooltip ("Approximate response preview; slope, drive and modulation are not modelled."); } void setParams (int type, float cutoff, float res, float drive, int slope); void setEnabled (bool e) { if (enabled != e) { enabled = e; repaint(); } } void paint (juce::Graphics& g) override; static float magnitude (float freqHz, float cutoffHz, float res, int type); private: int type = 0; float cutoff = 0.5f, res = 0.0f, drive = 0.0f; int slope = 2; bool enabled = true; }; } // namespace serum