BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit 3438b603c9622fd5c10cf608d64e49288ce430ac
parent 58948d398afaab5273f0fcc9340717d5c3d7d671
Author: Matt Demanett <matt@demanett.net>
Date:   Sat,  7 Apr 2018 15:13:13 -0400

Recalibrate LFO/8FO frequency knobs.

Diffstat:
Mres-src/EightFO-src.svg | 68+++++++++++++++++++++++++++++++++++++++-----------------------------
Mres-src/LFO-src.svg | 72+++++++++++++++++++++++++++++++++++++++++-------------------------------
Mres/EightFO.svg | 0
Mres/LFO.svg | 0
Msrc/EightFO.cpp | 25+++++++++++--------------
Msrc/EightFO.hpp | 4----
Msrc/LFO.cpp | 33+++++++++++++++------------------
Msrc/LFO.hpp | 4----
8 files changed, 106 insertions(+), 100 deletions(-)

diff --git a/res-src/EightFO-src.svg b/res-src/EightFO-src.svg @@ -47,45 +47,55 @@ </g> </symbol> - <symbol id="knobguide-frequency" viewBox="0 0 108px 108px"> - <g transform="translate(54 54)"> - <g transform="rotate(-240) translate(34 0)"> + <symbol id="knobguide-frequency" viewBox="0 0 128px 128px"> + <g transform="translate(64 64)"> + <g transform="rotate(-225.08) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" transform="translate(14 0) rotate(240) translate(-3 3.5)">1</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(225.08) translate(-10.5 3.5)">0.1</text> </g> - - <g transform="rotate(-213.57) translate(34 0)"> + <g transform="rotate(-171.49) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(213.57) translate(-9 3.5)">10</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(171.49) translate(-11 3.5)">0.5</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-176.66) translate(37 0)" /> - - <g transform="rotate(-148.96) translate(34 0)"> + <g transform="rotate(-148.42) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(148.96) translate(-15 3.5)">100</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(148.42) translate(-3 3.5)">1</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-109.49) translate(37 0)" /> - - <g transform="rotate(-90) translate(34 0)"> + <g transform="rotate(-94.83) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(16 0) rotate(90) translate(-6 3.5)">0V</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(94.83) translate(-3 3.5)">5</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-78.99) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-53.15) translate(37 0)" /> - - <g transform="rotate(-30.3) translate(34 0)"> + <g transform="rotate(-55.39) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(30.3) translate(-3 3.5)">500</text> + <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(55.39) translate(-1 3.5)">0V</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-9.58) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(9.53) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(27.35) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(44.11) translate(37 0)" /> - - <g transform="rotate(60) translate(34 0)"> + <g transform="rotate(-18.17) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(-60) translate(-3 3.5)">1KHZ</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(18.17) translate(-2 3.5)">50</text> </g> + <g transform="rotate(27.98) translate(34 0)"> + <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> + <text font-size="7.0pt" transform="translate(14 0) rotate(-27.98) translate(-2 3.5)">200</text> + </g> + <g transform="rotate(51.06) translate(34 0)"> + <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> + <text font-size="7.0pt" transform="translate(14 0) rotate(-51.06) translate(-2 3.5)">400HZ</text> + </g> + + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-240) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-216.92) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-193.85) translate(37 0)" /> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-170.77) translate(37 0)" /> --> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-147.69) translate(37 0)" /> --> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-124.62) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-101.54) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-78.46) translate(37 0)" /> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-55.38) translate(37 0)" /> --> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-32.31) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-9.23) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(13.85) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(36.92) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(60) translate(37 0)" /> </g> </symbol> @@ -235,11 +245,11 @@ <!-- <polyline points="54,54 54,354" stroke="#0f0" stroke-width="1" fill="none" /> --> <use id="FREQUENCY_PARAM" xlink:href="#knob-large" transform="translate(20 20)" /> </g> - <use xlink:href="#knobguide-frequency" transform="translate(20 25)" /> + <use xlink:href="#knobguide-frequency" transform="translate(10 15)" /> <!-- <rect width="20" height="10" fill="#0f0" transform="translate(20 130)" /> --> <!-- <rect width="20" height="10" fill="#0f0" transform="translate(108 130)" /> --> - <text font-size="6pt" letter-spacing="1px" transform="translate(44.5 137)">0V = 261.6HZ</text> + <text font-size="6pt" letter-spacing="1px" transform="translate(33 133)">0V = C0 = 16.35HZ</text> <g transform="translate(86 335)"> <!-- <rect width="230" height="15" fill="#0f0" transform="translate(-30 -17)" /> --> diff --git a/res-src/LFO-src.svg b/res-src/LFO-src.svg @@ -47,45 +47,55 @@ </g> </symbol> - <symbol id="knobguide-frequency" viewBox="0 0 108px 108px"> - <g transform="translate(54 54)"> - <g transform="rotate(-240) translate(34 0)"> + <symbol id="knobguide-frequency" viewBox="0 0 128px 128px"> + <g transform="translate(64 64)"> + <g transform="rotate(-225.08) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" transform="translate(14 0) rotate(240) translate(-3 3.5)">1</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(225.08) translate(-10.5 3.5)">0.1</text> </g> - - <g transform="rotate(-213.57) translate(34 0)"> + <g transform="rotate(-171.49) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(213.57) translate(-9 3.5)">10</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(171.49) translate(-11 3.5)">0.5</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-176.66) translate(37 0)" /> - - <g transform="rotate(-148.96) translate(34 0)"> + <g transform="rotate(-148.42) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(148.96) translate(-15 3.5)">100</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(148.42) translate(-3 3.5)">1</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-109.49) translate(37 0)" /> - - <g transform="rotate(-90) translate(34 0)"> + <g transform="rotate(-94.83) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(16 0) rotate(90) translate(-6 3.5)">0V</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(94.83) translate(-3 3.5)">5</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-78.99) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-53.15) translate(37 0)" /> - - <g transform="rotate(-30.3) translate(34 0)"> + <g transform="rotate(-55.39) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(30.3) translate(-3 3.5)">500</text> + <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(55.39) translate(-1 3.5)">0V</text> </g> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-9.58) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(9.53) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(27.35) translate(37 0)" /> - <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(44.11) translate(37 0)" /> - - <g transform="rotate(60) translate(34 0)"> + <g transform="rotate(-18.17) translate(34 0)"> <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> - <text font-size="7.0pt" letter-spacing="1px" transform="translate(14 0) rotate(-60) translate(-3 3.5)">1KHZ</text> + <text font-size="7.0pt" transform="translate(14 0) rotate(18.17) translate(-2 3.5)">50</text> </g> + <g transform="rotate(27.98) translate(34 0)"> + <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> + <text font-size="7.0pt" transform="translate(14 0) rotate(-27.98) translate(-2 3.5)">200</text> + </g> + <g transform="rotate(51.06) translate(34 0)"> + <polyline points="0,0 5,0" stroke-width="1" stroke="#333" transform="translate(3 0)" /> + <text font-size="7.0pt" transform="translate(14 0) rotate(-51.06) translate(-2 3.5)">400HZ</text> + </g> + + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-240) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-216.92) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-193.85) translate(37 0)" /> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-170.77) translate(37 0)" /> --> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-147.69) translate(37 0)" /> --> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-124.62) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-101.54) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-78.46) translate(37 0)" /> + <!-- <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-55.38) translate(37 0)" /> --> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-32.31) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(-9.23) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(13.85) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(36.92) translate(37 0)" /> + <polyline points="0,0 3,0" stroke-width="0.7" stroke="#333" transform="rotate(60) translate(37 0)" /> </g> </symbol> @@ -214,11 +224,11 @@ <!-- <polyline points="54,54 54,354" stroke="#0f0" stroke-width="1" fill="none" /> --> <use id="FREQUENCY_PARAM" xlink:href="#knob-large" transform="translate(20 20)" /> </g> - <use xlink:href="#knobguide-frequency" transform="translate(21 25)" /> + <use xlink:href="#knobguide-frequency" transform="translate(11 15)" /> <!-- <rect width="20" height="10" fill="#0f0" transform="translate(20 130)" /> --> <!-- <rect width="20" height="10" fill="#0f0" transform="translate(108 130)" /> --> - <text font-size="6pt" letter-spacing="1px" transform="translate(44.5 137)">0V = 261.6HZ</text> + <text font-size="6pt" letter-spacing="1px" transform="translate(33 133)">0V = C0 = 16.35HZ</text> <g transform="translate(111 240)"> <!-- <rect width="230" height="15" fill="#0f0" transform="translate(-30 -17)" /> --> @@ -228,7 +238,7 @@ <text font-size="6pt" letter-spacing="1px" transform="translate(9 6.1)">SLOW</text> </g> - <g transform="translate(10 152)"> + <g transform="translate(10 150)"> <g transform="translate(7 0)"> <!-- <rect width="52" height="38" fill="none" stroke="#0f0" transform="translate(0 -7)" /> --> <!-- <polyline points="0,0 0,354" stroke="#0f0" stroke-width="1" fill="none" transform="translate(33 0)" /> --> @@ -245,7 +255,7 @@ <use xlink:href="#knobguide-attenuverter" transform="translate(82.5 -9.6)" /> </g> - <g transform="translate(10 197)"> + <g transform="translate(10 196)"> <g transform="translate(7 0)"> <!-- <rect width="52" height="38" fill="none" stroke="#0f0" transform="translate(0 -7)" /> --> <text font-size="8pt" letter-spacing="2px" transform="translate(8 18) rotate(270)">OFF</text> diff --git a/res/EightFO.svg b/res/EightFO.svg Binary files differ. diff --git a/res/LFO.svg b/res/LFO.svg Binary files differ. diff --git a/src/EightFO.cpp b/src/EightFO.cpp @@ -33,20 +33,17 @@ void EightFO::step() { if (_modulationStep >= modulationSteps) { _modulationStep = 0; - float frequency = powf(params[FREQUENCY_PARAM].value, frequencyExponent); - frequency *= maxFrequency - minFrequency; - frequency += minFrequency; - if (_slowMode || inputs[PITCH_INPUT].active) { - float cv = frequencyToCV(frequency); - if (_slowMode) { - cv -= 5.0f; - } - if (inputs[PITCH_INPUT].active) { - cv += inputs[PITCH_INPUT].value; - } - frequency = cvToFrequency(cv); + float frequency = params[FREQUENCY_PARAM].value; + if (inputs[PITCH_INPUT].active) { + frequency += inputs[PITCH_INPUT].value; + } + if (_slowMode) { + frequency -= 8.0f; + } + else { + frequency -= 4.0f; } - _phasor.setFrequency(frequency); + _phasor.setFrequency(cvToFrequency(frequency)); _wave = (Wave)params[WAVE_PARAM].value; if (_wave == SQUARE_WAVE) { @@ -215,7 +212,7 @@ struct EightFOWidget : ModuleWidget { auto slowLightPosition = Vec(86.0, 335.0); // end generated by svg_widgets.rb - addParam(ParamWidget::create<Knob68>(frequencyParamPosition, module, EightFO::FREQUENCY_PARAM, 0.0, 1.0, 0.5)); + addParam(ParamWidget::create<Knob68>(frequencyParamPosition, module, EightFO::FREQUENCY_PARAM, -8.0, 5.0, 0.0)); { auto w = ParamWidget::create<Knob16>(waveParamPosition, module, EightFO::WAVE_PARAM, 1.0, 5.0, 3.0); auto k = dynamic_cast<SVGKnob*>(w); diff --git a/src/EightFO.hpp b/src/EightFO.hpp @@ -72,10 +72,6 @@ struct EightFO : Module { }; const int modulationSteps = 100; - const float frequencyExponent = 1.9385f; - const float maxFrequency = 1000.0f; - const float minFrequency = 1.0f; - const float slowModeFactor = 0.01f; const float amplitude = 5.0f; const float basePhase7Offset = Phasor::radiansToPhase(1.75f * M_PI); const float basePhase6Offset = Phasor::radiansToPhase(1.5f * M_PI); diff --git a/src/LFO.cpp b/src/LFO.cpp @@ -30,20 +30,17 @@ void LFO::step() { if (_modulationStep >= modulationSteps) { _modulationStep = 0; - float frequency = powf(params[FREQUENCY_PARAM].value, frequencyExponent); - frequency *= maxFrequency - minFrequency; - frequency += minFrequency; - if (_slowMode || inputs[PITCH_INPUT].active) { - float cv = frequencyToCV(frequency); - if (_slowMode) { - cv -= 5.0f; - } - if (inputs[PITCH_INPUT].active) { - cv += inputs[PITCH_INPUT].value; - } - frequency = cvToFrequency(cv); + float frequency = params[FREQUENCY_PARAM].value; + if (inputs[PITCH_INPUT].active) { + frequency += inputs[PITCH_INPUT].value; + } + if (_slowMode) { + frequency -= 8.0f; + } + else { + frequency -= 4.0f; } - _phasor.setFrequency(frequency); + _phasor.setFrequency(cvToFrequency(frequency)); float pw = params[PW_PARAM].value; if (inputs[PW_INPUT].active) { @@ -128,10 +125,10 @@ struct LFOWidget : ModuleWidget { // generated by svg_widgets.rb auto frequencyParamPosition = Vec(41.0, 45.0); auto slowParamPosition = Vec(120.0, 249.0); - auto sampleParamPosition = Vec(37.0, 152.0); - auto pwParamPosition = Vec(102.0, 152.0); - auto offsetParamPosition = Vec(42.0, 197.0); - auto scaleParamPosition = Vec(107.0, 197.0); + auto sampleParamPosition = Vec(37.0, 150.0); + auto pwParamPosition = Vec(102.0, 150.0); + auto offsetParamPosition = Vec(42.0, 196.0); + auto scaleParamPosition = Vec(107.0, 196.0); auto sampleInputPosition = Vec(15.0, 230.0); auto pwInputPosition = Vec(47.0, 230.0); @@ -149,7 +146,7 @@ struct LFOWidget : ModuleWidget { auto slowLightPosition = Vec(111.0, 240.0); // end generated by svg_widgets.rb - addParam(ParamWidget::create<Knob68>(frequencyParamPosition, module, LFO::FREQUENCY_PARAM, 0.0, 1.0, 0.5)); + addParam(ParamWidget::create<Knob68>(frequencyParamPosition, module, LFO::FREQUENCY_PARAM, -8.0, 5.0, 0.0)); addParam(ParamWidget::create<StatefulButton9>(slowParamPosition, module, LFO::SLOW_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create<Knob26>(sampleParamPosition, module, LFO::SAMPLE_PARAM, 0.0, 1.0, 0.0)); addParam(ParamWidget::create<Knob26>(pwParamPosition, module, LFO::PW_PARAM, -1.0, 1.0, 0.0)); diff --git a/src/LFO.hpp b/src/LFO.hpp @@ -45,10 +45,6 @@ struct LFO : Module { }; const int modulationSteps = 100; - const float frequencyExponent = 1.9385f; - const float maxFrequency = 1000.0f; - const float minFrequency = 1.0f; - const float slowModeFactor = 0.01f; const float amplitude = 5.0f; int _modulationStep = 0;