#pragma once #include "../shape/Vector2.h" #include #include "EffectApplication.h" class Effect { public: Effect(std::shared_ptr effectApplication, std::vector details); Effect(std::shared_ptr effectApplication, EffectDetails details); Effect(std::function&, double)> application, std::vector details); Effect(std::function&, double)> application, EffectDetails details); Vector2 apply(int index, Vector2 input); void apply(); double getValue(int index); double getValue(); void setValue(int index, double value); void setValue(double value); int getPrecedence(); void setPrecedence(int precedence); juce::String getId(); juce::String getName(); std::vector details; private: std::vector smoothValues; double frequency = 1.0; int precedence = -1; int sampleRate = 192000; std::function&, double)> application; std::shared_ptr effectApplication; };