Browse Source

Update Lights

tags/v0.5.0
Andrew Belt 7 years ago
parent
commit
014fce14d9
5 changed files with 76 additions and 51 deletions
  1. +17
    -8
      src/ABC.cpp
  2. +14
    -7
      src/DualAtenuverter.cpp
  3. +9
    -5
      src/Mixer.cpp
  4. +20
    -17
      src/Rampage.cpp
  5. +16
    -14
      src/SpringReverb.cpp

+ 17
- 8
src/ABC.cpp View File

@@ -23,10 +23,15 @@ struct ABC : Module {
OUT2_OUTPUT,
NUM_OUTPUTS
};
enum LightIds {
OUT1_POS_LIGHT,
OUT1_NEG_LIGHT,
OUT2_POS_LIGHT,
OUT2_NEG_LIGHT,
NUM_LIGHTS
};

float lights[2] = {};

ABC() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
ABC() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {}
void step() override;
};

@@ -44,7 +49,7 @@ void ABC::step() {

float a2 = inputs[A2_INPUT].value;
float b2 = inputs[B2_INPUT].normalize(5.0) * 2.0*exponentialBipolar(80.0, params[B2_LEVEL_PARAM].value);
float c2 = inputs[C2_INPUT].normalize(20.0) * exponentialBipolar(80.0, params[C2_LEVEL_PARAM].value);
float c2 = inputs[C2_INPUT].normalize(10.0) * exponentialBipolar(80.0, params[C2_LEVEL_PARAM].value);
float out2 = a2 * b2 / 5.0 + c2;

// Set outputs
@@ -57,8 +62,12 @@ void ABC::step() {
if (outputs[OUT2_OUTPUT].active) {
outputs[OUT2_OUTPUT].value = clip(out2 / 10.0) * 10.0;
}
lights[0] = out1 / 5.0;
lights[1] = out2 / 5.0;

// Lights
lights[OUT1_POS_LIGHT].value = fmaxf(0.0, out1 / 5.0);
lights[OUT1_NEG_LIGHT].value = fmaxf(0.0, -out1 / 5.0);
lights[OUT2_POS_LIGHT].value = fmaxf(0.0, out2 / 5.0);
lights[OUT2_NEG_LIGHT].value = fmaxf(0.0, -out2 / 5.0);
}


@@ -91,6 +100,6 @@ ABCWidget::ABCWidget() {
addInput(createInput<PJ301MPort>(Vec(7, 279), module, ABC::C2_INPUT));
addOutput(createOutput<PJ301MPort>(Vec(7, 321), module, ABC::OUT2_OUTPUT));

addChild(createValueLight<SmallLight<GreenRedPolarityLight>>(Vec(38, 162), &module->lights[0]));
addChild(createValueLight<SmallLight<GreenRedPolarityLight>>(Vec(38, 330), &module->lights[1]));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(38, 162), module, ABC::OUT1_POS_LIGHT));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(38, 330), module, ABC::OUT2_POS_LIGHT));
}

+ 14
- 7
src/DualAtenuverter.cpp View File

@@ -19,10 +19,15 @@ struct DualAtenuverter : Module {
OUT2_OUTPUT,
NUM_OUTPUTS
};
enum LightIds {
OUT1_POS_LIGHT,
OUT1_NEG_LIGHT,
OUT2_POS_LIGHT,
OUT2_NEG_LIGHT,
NUM_LIGHTS
};

float lights[2] = {};

DualAtenuverter() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
DualAtenuverter() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {}
void step() override;
};

@@ -35,8 +40,10 @@ void DualAtenuverter::step() {

outputs[OUT1_OUTPUT].value = out1;
outputs[OUT2_OUTPUT].value = out2;
lights[0] = out1 / 5.0;
lights[1] = out2 / 5.0;
lights[OUT1_POS_LIGHT].value = fmaxf(0.0, out1 / 5.0);
lights[OUT1_NEG_LIGHT].value = fmaxf(0.0, -out1 / 5.0);
lights[OUT2_POS_LIGHT].value = fmaxf(0.0, out2 / 5.0);
lights[OUT2_NEG_LIGHT].value = fmaxf(0.0, -out2 / 5.0);
}


@@ -66,6 +73,6 @@ DualAtenuverterWidget::DualAtenuverterWidget() {
addInput(createInput<PJ301MPort>(Vec(7, 319), module, DualAtenuverter::IN2_INPUT));
addOutput(createOutput<PJ301MPort>(Vec(43, 319), module, DualAtenuverter::OUT2_OUTPUT));

addChild(createValueLight<SmallLight<GreenRedPolarityLight>>(Vec(33, 143), &module->lights[0]));
addChild(createValueLight<SmallLight<GreenRedPolarityLight>>(Vec(33, 311), &module->lights[1]));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(33, 143), module, DualAtenuverter::OUT1_POS_LIGHT));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(33, 311), module, DualAtenuverter::OUT2_POS_LIGHT));
}

+ 9
- 5
src/Mixer.cpp View File

@@ -21,10 +21,13 @@ struct Mixer : Module {
OUT2_OUTPUT,
NUM_OUTPUTS
};
enum LightIds {
OUT_POS_LIGHT,
OUT_NEG_LIGHT,
NUM_LIGHTS
};

float lights[1] = {};

Mixer() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {}
Mixer() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {}
void step() override;
};

@@ -38,7 +41,8 @@ void Mixer::step() {
float out = in1 + in2 + in3 + in4;
outputs[OUT1_OUTPUT].value = out;
outputs[OUT2_OUTPUT].value = -out;
lights[0] = out / 5.0;
lights[OUT_POS_LIGHT].value = fmaxf(0.0, out / 5.0);
lights[OUT_NEG_LIGHT].value = fmaxf(0.0, -out / 5.0);
}


@@ -71,5 +75,5 @@ MixerWidget::MixerWidget() {
addOutput(createOutput<PJ301MPort>(Vec(7, 324), module, Mixer::OUT1_OUTPUT));
addOutput(createOutput<PJ301MPort>(Vec(43, 324), module, Mixer::OUT2_OUTPUT));

addChild(createValueLight<MediumLight<GreenRedPolarityLight>>(Vec(31, 309), &module->lights[0]));
addChild(createLight<MediumLight<GreenRedLight>>(Vec(31, 309), module, Mixer::OUT_POS_LIGHT));
}

+ 20
- 17
src/Rampage.cpp View File

@@ -46,6 +46,9 @@ struct Rampage : Module {
COMPARATOR_OUTPUT,
MIN_OUTPUT,
MAX_OUTPUT,
NUM_OUTPUTS
};
enum LightIds {
COMPARATOR_LIGHT,
MIN_LIGHT,
MAX_LIGHT,
@@ -55,7 +58,7 @@ struct Rampage : Module {
RISING_B_LIGHT,
FALLING_A_LIGHT,
FALLING_B_LIGHT,
NUM_OUTPUTS
NUM_LIGHTS
};

float out[2] = {};
@@ -63,7 +66,7 @@ struct Rampage : Module {
SchmittTrigger trigger[2];
PulseGenerator endOfCyclePulse[2];

Rampage() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {
Rampage() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
for (int c = 0; c < 2; c++) {
trigger[c].setThresholds(0.0, 4.0);
}
@@ -144,11 +147,11 @@ void Rampage::step() {

outputs[RISING_A_OUTPUT + c].value = (rising ? 10.0 : 0.0);
outputs[FALLING_A_OUTPUT + c].value = (falling ? 10.0 : 0.0);
outputs[RISING_A_LIGHT + c].value = (rising ? 1.0 : 0.0);
outputs[FALLING_A_LIGHT + c].value = (falling ? 1.0 : 0.0);
lights[RISING_A_LIGHT + c].value = (rising ? 1.0 : 0.0);
lights[FALLING_A_LIGHT + c].value = (falling ? 1.0 : 0.0);
outputs[EOC_A_OUTPUT + c].value = (endOfCyclePulse[c].process(1.0 / engineGetSampleRate()) ? 10.0 : 0.0);
outputs[OUT_A_OUTPUT + c].value = out[c];
outputs[OUT_A_LIGHT + c].value = out[c] / 10.0;
lights[OUT_A_LIGHT + c].value = out[c] / 10.0;
}

// Logic
@@ -163,9 +166,9 @@ void Rampage::step() {
outputs[MIN_OUTPUT].value = fminf(a, b);
outputs[MAX_OUTPUT].value = fmaxf(a, b);
// Lights
outputs[COMPARATOR_LIGHT].value = outputs[COMPARATOR_OUTPUT].value / 10.0;
outputs[MIN_LIGHT].value = outputs[MIN_OUTPUT].value / 10.0;
outputs[MAX_LIGHT].value = outputs[MAX_OUTPUT].value / 10.0;
lights[COMPARATOR_LIGHT].value = outputs[COMPARATOR_OUTPUT].value / 10.0;
lights[MIN_LIGHT].value = outputs[MIN_OUTPUT].value / 10.0;
lights[MAX_LIGHT].value = outputs[MAX_OUTPUT].value / 10.0;
}


@@ -225,13 +228,13 @@ RampageWidget::RampageWidget() {
addOutput(createOutput<PJ301MPort>(Vec(89, 157), module, Rampage::MIN_OUTPUT));
addOutput(createOutput<PJ301MPort>(Vec(155, 157), module, Rampage::MAX_OUTPUT));

addChild(createValueLight<SmallLight<RedValueLight>>(Vec(131, 167), &module->outputs[Rampage::COMPARATOR_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(122, 174), &module->outputs[Rampage::MIN_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(140, 174), &module->outputs[Rampage::MAX_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(125, 185), &module->outputs[Rampage::OUT_A_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(137, 185), &module->outputs[Rampage::OUT_B_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(17, 312), &module->outputs[Rampage::RISING_A_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(77, 312), &module->outputs[Rampage::FALLING_A_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(186, 312), &module->outputs[Rampage::RISING_B_LIGHT].value));
addChild(createValueLight<SmallLight<RedValueLight>>(Vec(246, 312), &module->outputs[Rampage::FALLING_B_LIGHT].value));
addChild(createLight<SmallLight<RedLight>>(Vec(131, 167), module, Rampage::COMPARATOR_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(122, 174), module, Rampage::MIN_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(140, 174), module, Rampage::MAX_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(125, 185), module, Rampage::OUT_A_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(137, 185), module, Rampage::OUT_B_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(17, 312), module, Rampage::RISING_A_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(77, 312), module, Rampage::FALLING_A_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(186, 312), module, Rampage::RISING_B_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(246, 312), module, Rampage::FALLING_B_LIGHT));
}

+ 16
- 14
src/SpringReverb.cpp View File

@@ -158,6 +158,11 @@ struct SpringReverb : Module {
WET_OUTPUT,
NUM_OUTPUTS
};
enum LightIds {
PEAK_LIGHT,
VU1_LIGHT,
NUM_LIGHTS = VU1_LIGHT + 7
};

RealTimeConvolver *convolver = NULL;
SampleRateConverter<1> inputSrc;
@@ -168,8 +173,6 @@ struct SpringReverb : Module {
RCFilter dryFilter;
PeakFilter vuFilter;
PeakFilter lightFilter;
float vuLights[7] = {};
float lights[1] = {};

SpringReverb();
~SpringReverb();
@@ -177,7 +180,7 @@ struct SpringReverb : Module {
};


SpringReverb::SpringReverb() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS) {
SpringReverb::SpringReverb() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {
convolver = new RealTimeConvolver(BLOCKSIZE);
convolver->setKernel(springReverbIR, springReverbIRLen);
}
@@ -253,9 +256,9 @@ void SpringReverb::step() {
float vuValue = vuFilter.peak();
for (int i = 0; i < 7; i++) {
float light = powf(1.413, i) * vuValue / 10.0 - 1.0;
vuLights[i] = clampf(light, 0.0, 1.0);
lights[VU1_LIGHT + i].value = clampf(light, 0.0, 1.0);
}
lights[0] = lightFilter.peak();
lights[PEAK_LIGHT].value = lightFilter.peak();
}


@@ -292,13 +295,12 @@ SpringReverbWidget::SpringReverbWidget() {
addInput(createInput<PJ301MPort>(Vec(47, 324), module, SpringReverb::MIX_CV_INPUT));
addOutput(createOutput<PJ301MPort>(Vec(88, 317), module, SpringReverb::WET_OUTPUT));

addChild(createValueLight<SmallLight<RedValueLight>>(Vec(56, 114), &module->vuLights[0]));
addChild(createValueLight<SmallLight<YellowValueLight>>(Vec(56, 127), &module->vuLights[1]));
addChild(createValueLight<SmallLight<YellowValueLight>>(Vec(56, 139), &module->vuLights[2]));
addChild(createValueLight<SmallLight<GreenValueLight>>(Vec(56, 151), &module->vuLights[3]));
addChild(createValueLight<SmallLight<GreenValueLight>>(Vec(56, 164), &module->vuLights[4]));
addChild(createValueLight<SmallLight<GreenValueLight>>(Vec(56, 176), &module->vuLights[5]));
addChild(createValueLight<SmallLight<GreenValueLight>>(Vec(56, 189), &module->vuLights[6]));

addChild(createValueLight<SmallLight<GreenRedPolarityLight>>(Vec(56, 270), &module->lights[0]));
addChild(createLight<SmallLight<GreenRedLight>>(Vec(56, 270), module, SpringReverb::PEAK_LIGHT));
addChild(createLight<SmallLight<RedLight>>(Vec(56, 114), module, SpringReverb::VU1_LIGHT + 0));
addChild(createLight<SmallLight<YellowLight>>(Vec(56, 127), module, SpringReverb::VU1_LIGHT + 1));
addChild(createLight<SmallLight<YellowLight>>(Vec(56, 139), module, SpringReverb::VU1_LIGHT + 2));
addChild(createLight<SmallLight<GreenLight>>(Vec(56, 151), module, SpringReverb::VU1_LIGHT + 3));
addChild(createLight<SmallLight<GreenLight>>(Vec(56, 164), module, SpringReverb::VU1_LIGHT + 4));
addChild(createLight<SmallLight<GreenLight>>(Vec(56, 176), module, SpringReverb::VU1_LIGHT + 5));
addChild(createLight<SmallLight<GreenLight>>(Vec(56, 189), module, SpringReverb::VU1_LIGHT + 6));
}

Loading…
Cancel
Save