|
@@ -1,6 +1,9 @@ |
|
|
#include "plugin.hpp" |
|
|
#include "plugin.hpp" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using simd::float_4; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T> |
|
|
template <typename T> |
|
|
struct LowFrequencyOscillator { |
|
|
struct LowFrequencyOscillator { |
|
|
T phase = 0.f; |
|
|
T phase = 0.f; |
|
@@ -98,7 +101,7 @@ struct LFO : Module { |
|
|
NUM_LIGHTS |
|
|
NUM_LIGHTS |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
LowFrequencyOscillator<simd::float_4> oscillators[4]; |
|
|
|
|
|
|
|
|
LowFrequencyOscillator<float_4> oscillators[4]; |
|
|
dsp::ClockDivider lightDivider; |
|
|
dsp::ClockDivider lightDivider; |
|
|
|
|
|
|
|
|
LFO() { |
|
|
LFO() { |
|
@@ -114,15 +117,13 @@ struct LFO : Module { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void process(const ProcessArgs &args) override { |
|
|
void process(const ProcessArgs &args) override { |
|
|
using simd::float_4; |
|
|
|
|
|
|
|
|
|
|
|
float freqParam = params[FREQ_PARAM].getValue(); |
|
|
float freqParam = params[FREQ_PARAM].getValue(); |
|
|
float fm1Param = params[FM1_PARAM].getValue(); |
|
|
float fm1Param = params[FM1_PARAM].getValue(); |
|
|
float fm2Param = params[FM2_PARAM].getValue(); |
|
|
float fm2Param = params[FM2_PARAM].getValue(); |
|
|
float pwParam = params[PW_PARAM].getValue(); |
|
|
float pwParam = params[PW_PARAM].getValue(); |
|
|
float pwmParam = params[PWM_PARAM].getValue(); |
|
|
float pwmParam = params[PWM_PARAM].getValue(); |
|
|
|
|
|
|
|
|
int channels = std::max(inputs[FM1_INPUT].getChannels(), inputs[FM2_INPUT].getChannels()); |
|
|
|
|
|
|
|
|
int channels = std::max(1, inputs[FM1_INPUT].getChannels()); |
|
|
|
|
|
|
|
|
for (int c = 0; c < channels; c += 4) { |
|
|
for (int c = 0; c < channels; c += 4) { |
|
|
auto *oscillator = &oscillators[c / 4]; |
|
|
auto *oscillator = &oscillators[c / 4]; |
|
@@ -253,7 +254,7 @@ struct LFO2 : Module { |
|
|
NUM_LIGHTS |
|
|
NUM_LIGHTS |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
LowFrequencyOscillator<simd::float_4> oscillators[4]; |
|
|
|
|
|
|
|
|
LowFrequencyOscillator<float_4> oscillators[4]; |
|
|
dsp::ClockDivider lightDivider; |
|
|
dsp::ClockDivider lightDivider; |
|
|
|
|
|
|
|
|
LFO2() { |
|
|
LFO2() { |
|
@@ -267,13 +268,11 @@ struct LFO2 : Module { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void process(const ProcessArgs &args) override { |
|
|
void process(const ProcessArgs &args) override { |
|
|
using simd::float_4; |
|
|
|
|
|
|
|
|
|
|
|
float freqParam = params[FREQ_PARAM].getValue(); |
|
|
float freqParam = params[FREQ_PARAM].getValue(); |
|
|
float waveParam = params[WAVE_PARAM].getValue(); |
|
|
float waveParam = params[WAVE_PARAM].getValue(); |
|
|
float fmParam = params[FM_PARAM].getValue(); |
|
|
float fmParam = params[FM_PARAM].getValue(); |
|
|
|
|
|
|
|
|
int channels = inputs[FM_INPUT].getChannels(); |
|
|
|
|
|
|
|
|
int channels = std::max(1, inputs[FM_INPUT].getChannels()); |
|
|
|
|
|
|
|
|
for (int c = 0; c < channels; c += 4) { |
|
|
for (int c = 0; c < channels; c += 4) { |
|
|
auto *oscillator = &oscillators[c / 4]; |
|
|
auto *oscillator = &oscillators[c / 4]; |
|
|