Browse Source

Update light setting calls, only update knobs every 16 samples

pull/120/head
hemmer 3 years ago
parent
commit
47519859b1
1 changed files with 24 additions and 8 deletions
  1. +24
    -8
      src/Peaks.cpp

+ 24
- 8
src/Peaks.cpp View File

@@ -102,6 +102,10 @@ struct Peaks : Module {

dsp::SchmittTrigger switches_[2];

// update descriptions/knobs every 16 samples
static const int cvUpdateFrequency = 16;
dsp::ClockDivider cvDivider;

peaks::GateFlags gate_flags[2] = {0, 0};

dsp::SampleRateConverter<2> outputSrc;
@@ -201,6 +205,9 @@ struct Peaks : Module {
configButton(TRIG_1_PARAM, "Trigger 1");
configButton(TRIG_2_PARAM, "Trigger 2");

getParamQuantity(BUTTON_1_PARAM)->description = "Long press to enter/leave Expert Mode";
getParamQuantity(BUTTON_2_PARAM)->description = "Long press to enable/disable Easter Egg Modes";

settings_.edit_mode = EDIT_MODE_TWIN;
settings_.function[0] = FUNCTION_ENVELOPE;
settings_.function[1] = FUNCTION_ENVELOPE;
@@ -211,6 +218,8 @@ struct Peaks : Module {
memset(&processors[1], 0, sizeof(processors[1]));
processors[0].Init(0);
processors[1].Init(1);

cvDivider.setDivision(cvUpdateFrequency);
}

void onReset() override {
@@ -458,9 +467,12 @@ struct Peaks : Module {
}

void process(const ProcessArgs& args) override {
poll();
pollPots();
updateKnobDescriptions();
// only update knobs / lights every 16 samples
if (cvDivider.process()) {
poll();
pollPots();
updateKnobDescriptions();
}

// Initialize "secret" number station mode.
if (initNumberStation) {
@@ -778,26 +790,30 @@ void Peaks::saveState() {
}

void Peaks::refreshLeds() {

// refreshLeds() is only updated every N samples, so make sure setBrightnessSmooth methods account for this
const float sampleTime = APP->engine->getSampleTime() * cvUpdateFrequency;

uint8_t flash = (getSystemTimeMs() >> 7) & 7;
switch (edit_mode_) {
case EDIT_MODE_FIRST:
lights[TWIN_MODE_LIGHT].value = (flash == 1) ? 1.0f : 0.0f;
lights[TWIN_MODE_LIGHT].setBrightnessSmooth((flash == 1) ? 1.0f : 0.0f, sampleTime);
break;
case EDIT_MODE_SECOND:
lights[TWIN_MODE_LIGHT].value = (flash == 1 || flash == 3) ? 1.0f : 0.0f;
lights[TWIN_MODE_LIGHT].setBrightnessSmooth((flash == 1 || flash == 3) ? 1.0f : 0.0f, sampleTime);
break;
default:
lights[TWIN_MODE_LIGHT].value = (edit_mode_ & 1) ? 1.0f : 0.0f;
lights[TWIN_MODE_LIGHT].setBrightnessSmooth((edit_mode_ & 1) ? 1.0f : 0.0f, sampleTime);
break;
}
if ((getSystemTimeMs() & 256) && function() >= FUNCTION_FIRST_ALTERNATE_FUNCTION) {
for (size_t i = 0; i < 4; ++i) {
lights[FUNC_1_LIGHT + i].value = 0.0f;
lights[FUNC_1_LIGHT + i].setBrightnessSmooth(0.0f, sampleTime);
}
}
else {
for (size_t i = 0; i < 4; ++i) {
lights[FUNC_1_LIGHT + i].value = ((function() & 3) == i) ? 1.0f : 0.0f;
lights[FUNC_1_LIGHT + i].setBrightnessSmooth(((function() & 3) == i) ? 1.0f : 0.0f, sampleTime);
}
}



Loading…
Cancel
Save