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