2023-03-25 20:24:10 +00:00
|
|
|
#include "Effect.h"
|
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
Effect::Effect(std::shared_ptr<EffectApplication> effectApplication, std::vector<EffectDetails> details) : effectApplication(effectApplication), details(details) {}
|
|
|
|
|
2023-07-13 19:11:24 +00:00
|
|
|
Effect::Effect(std::function<Vector2(int, Vector2, std::vector<EffectDetails>, double)> application, std::vector<EffectDetails> details) : application(application), details(details) {}
|
2023-07-11 12:32:52 +00:00
|
|
|
|
|
|
|
Effect::Effect(std::shared_ptr<EffectApplication> effectApplication, juce::String name, juce::String id) {
|
|
|
|
this->effectApplication = effectApplication;
|
|
|
|
details = std::vector<EffectDetails>(1, EffectDetails{name, id, 0.0});
|
2023-03-28 12:44:46 +00:00
|
|
|
}
|
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
Effect::Effect(juce::String name, juce::String id, double value) {
|
|
|
|
details = std::vector<EffectDetails>(1, EffectDetails{name, id, value});
|
|
|
|
}
|
2023-07-04 19:47:54 +00:00
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
Effect::Effect(juce::String name, juce::String id) {
|
|
|
|
details = std::vector<EffectDetails>(1, EffectDetails{name, id, 0.0});
|
|
|
|
}
|
2023-07-04 19:47:54 +00:00
|
|
|
|
2023-07-13 19:11:24 +00:00
|
|
|
Effect::Effect(std::function<Vector2(int, Vector2, std::vector<EffectDetails> values, double)> application, juce::String name, juce::String id, double value) {
|
2023-07-11 12:32:52 +00:00
|
|
|
details = std::vector<EffectDetails>(1, EffectDetails{name, id, value});
|
2023-07-05 11:02:28 +00:00
|
|
|
this->application = application;
|
|
|
|
};
|
|
|
|
|
2023-03-28 12:44:46 +00:00
|
|
|
Vector2 Effect::apply(int index, Vector2 input) {
|
2023-07-05 11:02:28 +00:00
|
|
|
if (application) {
|
2023-07-13 19:11:24 +00:00
|
|
|
return application(index, input, details, sampleRate);
|
2023-07-05 11:02:28 +00:00
|
|
|
} else if (effectApplication != nullptr) {
|
2023-07-13 19:11:24 +00:00
|
|
|
return effectApplication->apply(index, input, details, sampleRate);
|
2023-07-04 19:47:54 +00:00
|
|
|
}
|
2023-07-05 11:02:28 +00:00
|
|
|
return input;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Effect::apply() {
|
|
|
|
apply(0, Vector2());
|
2023-03-28 12:44:46 +00:00
|
|
|
}
|
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
double Effect::getValue(int index) {
|
|
|
|
return details[index].value;
|
|
|
|
}
|
|
|
|
|
2023-03-28 12:44:46 +00:00
|
|
|
double Effect::getValue() {
|
2023-07-11 12:32:52 +00:00
|
|
|
return getValue(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
std::vector<EffectDetails> Effect::getDetails() {
|
|
|
|
return details;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Effect::setValue(int index, double value) {
|
|
|
|
details[index].value = value;
|
2023-03-28 12:44:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void Effect::setValue(double value) {
|
2023-07-11 12:32:52 +00:00
|
|
|
setValue(0, value);
|
2023-03-28 12:44:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int Effect::getPrecedence() {
|
|
|
|
return precedence;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Effect::setPrecedence(int precedence) {
|
|
|
|
this->precedence = precedence;
|
|
|
|
}
|
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
juce::String Effect::getId() {
|
|
|
|
return details[0].id;
|
2023-03-28 12:44:46 +00:00
|
|
|
}
|
2023-03-25 20:24:10 +00:00
|
|
|
|
2023-07-11 12:32:52 +00:00
|
|
|
juce::String Effect::getName() {
|
|
|
|
return details[0].name;
|
2023-03-25 20:24:10 +00:00
|
|
|
}
|