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:
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;