diff --git a/src/app/Knob.cpp b/src/app/Knob.cpp index 709f5eb1..4eb0a522 100644 --- a/src/app/Knob.cpp +++ b/src/app/Knob.cpp @@ -21,10 +21,14 @@ void Knob::onDragStart(EventDragStart &e) { } void Knob::onDragMove(EventDragMove &e) { - float range = maxValue - minValue; - float delta = KNOB_SENSITIVITY * -e.mouseRel.y * speed; - if (isfinite(range)) - delta *= range; + float range; + if (isfinite(minValue) && isfinite(maxValue)) { + range = maxValue - minValue; + } + else { + range = 1.0 - (-1.0); + } + float delta = KNOB_SENSITIVITY * -e.mouseRel.y * speed * range; // Drag slower if Mod is held if (windowIsModPressed()) diff --git a/src/app/SVGKnob.cpp b/src/app/SVGKnob.cpp index a1e0fd6b..6517e7f6 100644 --- a/src/app/SVGKnob.cpp +++ b/src/app/SVGKnob.cpp @@ -28,9 +28,14 @@ void SVGKnob::setSVG(std::shared_ptr svg) { void SVGKnob::step() { // Re-transform TransformWidget if dirty if (dirty) { - float angle = 0.0; - if (isfinite(minValue) && isfinite(maxValue)) + float angle; + if (isfinite(minValue) && isfinite(maxValue)) { angle = rescale(value, minValue, maxValue, minAngle, maxAngle); + } + else { + angle = rescale(value, -1.0, 1.0, minAngle, maxAngle); + angle = fmodf(angle, 2*M_PI); + } tw->identity(); // Rotate SVG Vec center = sw->box.getCenter();