diff --git a/src/Delay.cpp b/src/Delay.cpp index 83f6116..9e722fc 100644 --- a/src/Delay.cpp +++ b/src/Delay.cpp @@ -28,16 +28,16 @@ struct Delay : Module { dsp::DoubleRingBuffer historyBuffer; dsp::DoubleRingBuffer outBuffer; SRC_STATE *src; - float lastWet = 0.0f; + float lastWet = 0.f; dsp::RCFilter lowpassFilter; dsp::RCFilter highpassFilter; Delay() { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS); - params[TIME_PARAM].config(0.0f, 1.0f, 0.5f, "Time"); - params[FEEDBACK_PARAM].config(0.0f, 1.0f, 0.5f, "Feedback"); - params[COLOR_PARAM].config(0.0f, 1.0f, 0.5f, "Color"); - params[MIX_PARAM].config(0.0f, 1.0f, 0.5f, "Mix", "%", 0, 100); + params[TIME_PARAM].config(0.f, 1.f, 0.5f, "Time"); + params[FEEDBACK_PARAM].config(0.f, 1.f, 0.5f, "Feedback"); + params[COLOR_PARAM].config(0.f, 1.f, 0.5f, "Color"); + params[MIX_PARAM].config(0.f, 1.f, 0.5f, "Mix", "%", 0, 100); src = src_new(SRC_SINC_FASTEST, 1, NULL); assert(src); @@ -50,11 +50,11 @@ struct Delay : Module { void process(const ProcessArgs &args) override { // Get input to delay block float in = inputs[IN_INPUT].getVoltage(); - float feedback = clamp(params[FEEDBACK_PARAM].getValue() + inputs[FEEDBACK_INPUT].getVoltage() / 10.0f, 0.0f, 1.0f); + float feedback = clamp(params[FEEDBACK_PARAM].getValue() + inputs[FEEDBACK_INPUT].getVoltage() / 10.f, 0.f, 1.f); float dry = in + lastWet * feedback; // Compute delay time in seconds - float delay = 1e-3 * std::pow(10.0f / 1e-3, clamp(params[TIME_PARAM].getValue() + inputs[TIME_INPUT].getVoltage() / 10.0f, 0.0f, 1.0f)); + float delay = 1e-3 * std::pow(10.f / 1e-3, clamp(params[TIME_PARAM].getValue() + inputs[TIME_INPUT].getVoltage() / 10.f, 0.f, 1.f)); // Number of delay samples float index = delay * args.sampleRate; @@ -84,26 +84,26 @@ struct Delay : Module { outBuffer.endIncr(srcData.output_frames_gen); } - float wet = 0.0f; + float wet = 0.f; if (!outBuffer.empty()) { wet = outBuffer.shift(); } // Apply color to delay wet output // TODO Make it sound better - float color = clamp(params[COLOR_PARAM].getValue() + inputs[COLOR_INPUT].getVoltage() / 10.0f, 0.0f, 1.0f); - float lowpassFreq = 10000.0f * std::pow(10.0f, clamp(2.0f*color, 0.0f, 1.0f)); + float color = clamp(params[COLOR_PARAM].getValue() + inputs[COLOR_INPUT].getVoltage() / 10.f, 0.f, 1.f); + float lowpassFreq = 10000.f * std::pow(10.f, clamp(2.f*color, 0.f, 1.f)); lowpassFilter.setCutoff(lowpassFreq / args.sampleRate); lowpassFilter.process(wet); wet = lowpassFilter.lowpass(); - float highpassFreq = 10.0f * std::pow(100.0f, clamp(2.0f*color - 1.0f, 0.0f, 1.0f)); + float highpassFreq = 10.f * std::pow(100.f, clamp(2.f*color - 1.f, 0.f, 1.f)); highpassFilter.setCutoff(highpassFreq / args.sampleRate); highpassFilter.process(wet); wet = highpassFilter.highpass(); lastWet = wet; - float mix = clamp(params[MIX_PARAM].getValue() + inputs[MIX_INPUT].getVoltage() / 10.0f, 0.0f, 1.0f); + float mix = clamp(params[MIX_PARAM].getValue() + inputs[MIX_INPUT].getVoltage() / 10.f, 0.f, 1.f); float out = crossfade(in, wet, mix); outputs[OUT_OUTPUT].setVoltage(out); } diff --git a/src/SEQ3.cpp b/src/SEQ3.cpp index a381aff..47722be 100644 --- a/src/SEQ3.cpp +++ b/src/SEQ3.cpp @@ -49,15 +49,15 @@ struct SEQ3 : Module { SEQ3() { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); - params[CLOCK_PARAM].config(-2.0f, 6.0f, 2.0f); - params[RUN_PARAM].config(0.0f, 1.0f, 0.0f); - params[RESET_PARAM].config(0.0f, 1.0f, 0.0f); - params[STEPS_PARAM].config(1.0f, 8.0f, 8.0f); + params[CLOCK_PARAM].config(-2.f, 6.f, 2.f); + params[RUN_PARAM].config(0.f, 1.f, 0.f); + params[RESET_PARAM].config(0.f, 1.f, 0.f); + params[STEPS_PARAM].config(1.f, 8.f, 8.f); for (int i = 0; i < 8; i++) { - params[ROW1_PARAM + i].config(0.0f, 10.0f, 0.0f); - params[ROW2_PARAM + i].config(0.0f, 10.0f, 0.0f); - params[ROW3_PARAM + i].config(0.0f, 10.0f, 0.0f); - params[GATE_PARAM + i].config(0.0f, 1.0f, 0.0f); + params[ROW1_PARAM + i].config(0.f, 10.f, 0.f); + params[ROW2_PARAM + i].config(0.f, 10.f, 0.f); + params[ROW3_PARAM + i].config(0.f, 10.f, 0.f); + params[GATE_PARAM + i].config(0.f, 1.f, 0.f); } @@ -110,7 +110,7 @@ struct SEQ3 : Module { } void setIndex(int index) { - int numSteps = (int) clamp(std::round(params[STEPS_PARAM].getValue() + inputs[STEPS_INPUT].getVoltage()), 1.0f, 8.0f); + int numSteps = (int) clamp(std::round(params[STEPS_PARAM].getValue() + inputs[STEPS_INPUT].getVoltage()), 1.f, 8.f); phase = 0.f; this->index = index; if (this->index >= numSteps) @@ -134,9 +134,9 @@ struct SEQ3 : Module { } else { // Internal clock - float clockTime = std::pow(2.0f, params[CLOCK_PARAM].getValue() + inputs[CLOCK_INPUT].getVoltage()); + float clockTime = std::pow(2.f, params[CLOCK_PARAM].getValue() + inputs[CLOCK_INPUT].getVoltage()); phase += clockTime * args.sampleTime; - if (phase >= 1.0f) { + if (phase >= 1.f) { setIndex(index + 1); } gateIn = (phase < 0.5f); @@ -153,7 +153,7 @@ struct SEQ3 : Module { if (gateTriggers[i].process(params[GATE_PARAM + i].getValue())) { gates[i] = !gates[i]; } - outputs[GATE_OUTPUT + i].setVoltage((running && gateIn && i == index && gates[i]) ? 10.0f : 0.0f); + outputs[GATE_OUTPUT + i].setVoltage((running && gateIn && i == index && gates[i]) ? 10.f : 0.f); lights[GATE_LIGHTS + i].setSmoothBrightness((gateIn && i == index) ? (gates[i] ? 1.f : 0.33) : (gates[i] ? 0.66 : 0.0), args.sampleTime); } @@ -161,13 +161,13 @@ struct SEQ3 : Module { outputs[ROW1_OUTPUT].setVoltage(params[ROW1_PARAM + index].getValue()); outputs[ROW2_OUTPUT].setVoltage(params[ROW2_PARAM + index].getValue()); outputs[ROW3_OUTPUT].setVoltage(params[ROW3_PARAM + index].getValue()); - outputs[GATES_OUTPUT].setVoltage((gateIn && gates[index]) ? 10.0f : 0.0f); + outputs[GATES_OUTPUT].setVoltage((gateIn && gates[index]) ? 10.f : 0.f); lights[RUNNING_LIGHT].value = (running); lights[RESET_LIGHT].setSmoothBrightness(resetTrigger.isHigh(), args.sampleTime); lights[GATES_LIGHT].setSmoothBrightness(gateIn, args.sampleTime); - lights[ROW_LIGHTS].value = outputs[ROW1_OUTPUT].value / 10.0f; - lights[ROW_LIGHTS + 1].value = outputs[ROW2_OUTPUT].value / 10.0f; - lights[ROW_LIGHTS + 2].value = outputs[ROW3_OUTPUT].value / 10.0f; + lights[ROW_LIGHTS].value = outputs[ROW1_OUTPUT].value / 10.f; + lights[ROW_LIGHTS + 1].value = outputs[ROW2_OUTPUT].value / 10.f; + lights[ROW_LIGHTS + 2].value = outputs[ROW3_OUTPUT].value / 10.f; } }; diff --git a/src/Scope.cpp b/src/Scope.cpp index abd135b..a051d50 100644 --- a/src/Scope.cpp +++ b/src/Scope.cpp @@ -39,40 +39,40 @@ struct Scope : Module { int bufferIndex = 0; float frameIndex = 0; - dsp::SchmittTrigger sumTrigger; - dsp::SchmittTrigger extTrigger; + dsp::BooleanTrigger sumTrigger; + dsp::BooleanTrigger extTrigger; bool lissajous = false; bool external = false; dsp::SchmittTrigger resetTrigger; Scope() { config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); - params[X_SCALE_PARAM].config(-2.0f, 8.0f, 0.0f); - params[X_POS_PARAM].config(-10.0f, 10.0f, 0.0f); - params[Y_SCALE_PARAM].config(-2.0f, 8.0f, 0.0f); - params[Y_POS_PARAM].config(-10.0f, 10.0f, 0.0f); - params[TIME_PARAM].config(6.0f, 16.0f, 14.0f); - params[LISSAJOUS_PARAM].config(0.0f, 1.0f, 0.0f); - params[TRIG_PARAM].config(-10.0f, 10.0f, 0.0f); - params[EXTERNAL_PARAM].config(0.0f, 1.0f, 0.0f); + params[X_SCALE_PARAM].config(-2.f, 8.f, 0.f); + params[X_POS_PARAM].config(-10.f, 10.f, 0.f); + params[Y_SCALE_PARAM].config(-2.f, 8.f, 0.f); + params[Y_POS_PARAM].config(-10.f, 10.f, 0.f); + params[TIME_PARAM].config(6.f, 16.f, 14.f); + params[LISSAJOUS_PARAM].config(0.f, 1.f, 0.f); + params[TRIG_PARAM].config(-10.f, 10.f, 0.f); + params[EXTERNAL_PARAM].config(0.f, 1.f, 0.f); } void process(const ProcessArgs &args) override { // Modes - if (sumTrigger.process(params[LISSAJOUS_PARAM].getValue())) { + if (sumTrigger.process(params[LISSAJOUS_PARAM].getValue() > 0.f)) { lissajous = !lissajous; } - lights[PLOT_LIGHT].value = lissajous ? 0.0f : 1.0f; - lights[LISSAJOUS_LIGHT].value = lissajous ? 1.0f : 0.0f; + lights[PLOT_LIGHT].value = lissajous ? 0.f : 1.f; + lights[LISSAJOUS_LIGHT].value = lissajous ? 1.f : 0.f; - if (extTrigger.process(params[EXTERNAL_PARAM].getValue())) { + if (extTrigger.process(params[EXTERNAL_PARAM].getValue() > 0.f)) { external = !external; } - lights[INTERNAL_LIGHT].value = external ? 0.0f : 1.0f; - lights[EXTERNAL_LIGHT].value = external ? 1.0f : 0.0f; + lights[INTERNAL_LIGHT].value = external ? 0.f : 1.f; + lights[EXTERNAL_LIGHT].value = external ? 1.f : 0.f; // Compute time - float deltaTime = std::pow(2.0f, -params[TIME_PARAM].getValue()); + float deltaTime = std::pow(2.f, -params[TIME_PARAM].getValue()); int frameCount = (int) std::ceil(deltaTime * args.sampleRate); // Add frame to buffer @@ -151,7 +151,7 @@ struct ScopeDisplay : TransparentWidget { float vmin = 0.f; float vmax = 0.f; void calculate(float *values) { - vrms = 0.0f; + vrms = 0.f; vmax = -INFINITY; vmin = INFINITY; for (int i = 0; i < BUFFER_SIZE; i++) { @@ -181,23 +181,23 @@ struct ScopeDisplay : TransparentWidget { for (int i = 0; i < BUFFER_SIZE; i++) { float x, y; if (valuesY) { - x = valuesX[i] / 2.0f + 0.5f; - y = valuesY[i] / 2.0f + 0.5f; + x = valuesX[i] / 2.f + 0.5f; + y = valuesY[i] / 2.f + 0.5f; } else { x = (float)i / (BUFFER_SIZE - 1); - y = valuesX[i] / 2.0f + 0.5f; + y = valuesX[i] / 2.f + 0.5f; } Vec p; p.x = b.pos.x + b.size.x * x; - p.y = b.pos.y + b.size.y * (1.0f - y); + p.y = b.pos.y + b.size.y * (1.f - y); if (i == 0) nvgMoveTo(args.vg, p.x, p.y); else nvgLineTo(args.vg, p.x, p.y); } nvgLineCap(args.vg, NVG_ROUND); - nvgMiterLimit(args.vg, 2.0f); + nvgMiterLimit(args.vg, 2.f); nvgStrokeWidth(args.vg, 1.5f); nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER); nvgStroke(args.vg); @@ -209,8 +209,8 @@ struct ScopeDisplay : TransparentWidget { Rect b = Rect(Vec(0, 15), box.size.minus(Vec(0, 15*2))); nvgScissor(args.vg, b.pos.x, b.pos.y, b.size.x, b.size.y); - value = value / 2.0f + 0.5f; - Vec p = Vec(box.size.x, b.pos.y + b.size.y * (1.0f - value)); + value = value / 2.f + 0.5f; + Vec p = Vec(box.size.x, b.pos.y + b.size.y * (1.f - value)); // Draw line nvgStrokeColor(args.vg, nvgRGBA(0xff, 0xff, 0xff, 0x10)); @@ -260,8 +260,8 @@ struct ScopeDisplay : TransparentWidget { if (!module) return; - float gainX = std::pow(2.0f, std::round(module->params[Scope::X_SCALE_PARAM].getValue())); - float gainY = std::pow(2.0f, std::round(module->params[Scope::Y_SCALE_PARAM].getValue())); + float gainX = std::pow(2.f, std::round(module->params[Scope::X_SCALE_PARAM].getValue())); + float gainY = std::pow(2.f, std::round(module->params[Scope::Y_SCALE_PARAM].getValue())); float offsetX = module->params[Scope::X_POS_PARAM].getValue(); float offsetY = module->params[Scope::Y_POS_PARAM].getValue(); @@ -272,8 +272,8 @@ struct ScopeDisplay : TransparentWidget { // Lock display to buffer if buffer update deltaTime <= 2^-11 if (module->lissajous) j = (i + module->bufferIndex) % BUFFER_SIZE; - valuesX[i] = (module->bufferX[j] + offsetX) * gainX / 10.0f; - valuesY[i] = (module->bufferY[j] + offsetY) * gainY / 10.0f; + valuesX[i] = (module->bufferX[j] + offsetX) * gainX / 10.f; + valuesY[i] = (module->bufferY[j] + offsetY) * gainY / 10.f; } // Draw waveforms @@ -297,7 +297,7 @@ struct ScopeDisplay : TransparentWidget { drawWaveform(args, valuesX, NULL); } - float valueTrig = (module->params[Scope::TRIG_PARAM].getValue() + offsetX) * gainX / 10.0f; + float valueTrig = (module->params[Scope::TRIG_PARAM].getValue() + offsetX) * gainX / 10.f; drawTrig(args, valueTrig); } diff --git a/src/VCF.cpp b/src/VCF.cpp index 5123473..2b57a79 100644 --- a/src/VCF.cpp +++ b/src/VCF.cpp @@ -7,7 +7,7 @@ static float clip(float x) { struct LadderFilter { float omega0; - float resonance = 1.0f; + float resonance = 1.f; float state[4]; float input; float lowpass;