commit b091e0b8c8f1ed4030be71bd18fc22e5927ef5e6
parent 7d80459c9800ca1452d4a6b46bbc13032d436f85
Author: Matt Demanett <matt@demanett.net>
Date: Sat, 18 May 2019 00:42:33 -0400
v1: RUNS! Barely.
Diffstat:
18 files changed, 131 insertions(+), 83 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -38,3 +38,4 @@ testmain
releasenote.md
plot
plot.*
+lldb.cmd
diff --git a/src/Additator.cpp b/src/Additator.cpp
@@ -1,6 +1,17 @@
#include "Additator.hpp"
+const int modulationSteps = 100;
+const float maxWidth = 2.0f;
+const float maxSkew = 0.99f;
+const float minAmplitudeNormalization = 1.0f;
+const float maxAmplitudeNormalization = 5.0f;
+const float minDecay = -1.0f;
+const float maxDecay = 3.0f;
+const float minFilter = 0.1;
+const float maxFilter = 1.9;
+const float slewLimitTime = 1.0f;
+
void Additator::onReset() {
_syncTrigger.reset();
_steps = modulationSteps;
@@ -195,38 +206,38 @@ struct AdditatorWidget : ModuleWidget {
addParam(createParam<Knob68>(frequencyParamPosition, module, Additator::FREQUENCY_PARAM, -3.0, 6.0, 0.0));
{
- auto w = createParam<Knob38>(partialsParamPosition, module, Additator::PARTIALS_PARAM, 1.0, module->maxPartials, module->maxPartials / 5.0);
+ auto w = createParam<Knob38>(partialsParamPosition, module, Additator::PARTIALS_PARAM, 1.0, Additator::maxPartials, Additator::maxPartials / 5.0);
dynamic_cast<Knob*>(w)->snap = true;
addParam(w);
}
addParam(createParam<Knob16>(fineParamPosition, module, Additator::FINE_PARAM, -1.0, 1.0, 0.0));
- addParam(createParam<Knob26>(widthParamPosition, module, Additator::WIDTH_PARAM, 0.0, module->maxWidth, module->maxWidth / 2.0));
- addParam(createParam<Knob26>(oddSkewParamPosition, module, Additator::ODD_SKEW_PARAM, -module->maxSkew, module->maxSkew, 0.0));
- addParam(createParam<Knob26>(evenSkewParamPosition, module, Additator::EVEN_SKEW_PARAM, -module->maxSkew, module->maxSkew, 0.0));
+ addParam(createParam<Knob26>(widthParamPosition, module, Additator::WIDTH_PARAM, 0.0, maxWidth, maxWidth / 2.0));
+ addParam(createParam<Knob26>(oddSkewParamPosition, module, Additator::ODD_SKEW_PARAM, -maxSkew, maxSkew, 0.0));
+ addParam(createParam<Knob26>(evenSkewParamPosition, module, Additator::EVEN_SKEW_PARAM, -maxSkew, maxSkew, 0.0));
addParam(createParam<Knob26>(
gainParamPosition,
module,
Additator::GAIN_PARAM,
- module->minAmplitudeNormalization,
- module->maxAmplitudeNormalization,
- (module->maxAmplitudeNormalization - module->minAmplitudeNormalization) / 2.0 + module->minAmplitudeNormalization
+ minAmplitudeNormalization,
+ maxAmplitudeNormalization,
+ (maxAmplitudeNormalization - minAmplitudeNormalization) / 2.0 + minAmplitudeNormalization
));
addParam(createParam<Knob26>(
decayParamPosition,
module,
Additator::DECAY_PARAM,
- module->minDecay,
- module->maxDecay,
- (module->maxDecay - module->minDecay) / 2.0 + module->minDecay
+ minDecay,
+ maxDecay,
+ (maxDecay - minDecay) / 2.0 + minDecay
));
addParam(createParam<Knob26>(balanceParamPosition, module, Additator::BALANCE_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<Knob26>(
filterParamPosition,
module,
Additator::FILTER_PARAM,
- module->minFilter,
- module->maxFilter,
- (module->maxFilter - module->minFilter) / 2.0 + module->minFilter
+ minFilter,
+ maxFilter,
+ (maxFilter - minFilter) / 2.0 + minFilter
));
addParam(createParam<StatefulButton9>(phaseParamPosition, module, Additator::PHASE_PARAM, 1.0, 2.0, 1.0));
diff --git a/src/Additator.hpp b/src/Additator.hpp
@@ -58,17 +58,7 @@ struct Additator : Module {
PHASE_COSINE
};
- const int modulationSteps = 100;
- const int maxPartials = 100;
- const float maxWidth = 2.0f;
- const float maxSkew = 0.99f;
- const float minAmplitudeNormalization = 1.0f;
- const float maxAmplitudeNormalization = 5.0f;
- const float minDecay = -1.0f;
- const float maxDecay = 3.0f;
- const float minFilter = 0.1;
- const float maxFilter = 1.9;
- const float slewLimitTime = 1.0f;
+ static constexpr int maxPartials = 100;
int _steps = 0;
int _partials = 0;
diff --git a/src/Blank3.cpp b/src/Blank3.cpp
@@ -30,6 +30,11 @@ struct Blank3Display : OpaqueWidget {
}
void draw(NVGcontext* vg) override {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
float offsetX = box.size.x / 2.0f;
float offsetY = box.size.y / 2.0f;
nvgSave(vg);
diff --git a/src/Blank6.cpp b/src/Blank6.cpp
@@ -30,6 +30,11 @@ struct Blank6Display : OpaqueWidget {
}
void draw(NVGcontext* vg) override {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
float offsetX = box.size.x / 2.0f;
float offsetY = box.size.y / 2.0f;
nvgSave(vg);
diff --git a/src/EightFO.cpp b/src/EightFO.cpp
@@ -1,6 +1,15 @@
#include "EightFO.hpp"
+const Phasor::phase_delta_t basePhase7Offset = Phasor::radiansToPhase(1.75f * M_PI);
+const Phasor::phase_delta_t basePhase6Offset = Phasor::radiansToPhase(1.5f * M_PI);
+const Phasor::phase_delta_t basePhase5Offset = Phasor::radiansToPhase(1.25f * M_PI);
+const Phasor::phase_delta_t basePhase4Offset = Phasor::radiansToPhase(M_PI);
+const Phasor::phase_delta_t basePhase3Offset = Phasor::radiansToPhase(0.75f * M_PI);
+const Phasor::phase_delta_t basePhase2Offset = Phasor::radiansToPhase(0.5f * M_PI);
+const Phasor::phase_delta_t basePhase1Offset = Phasor::radiansToPhase(0.25f * M_PI);
+const Phasor::phase_delta_t basePhase0Offset = Phasor::radiansToPhase(0.0f);
+
void EightFO::onReset() {
_resetTrigger.reset();
_modulationStep = modulationSteps;
@@ -227,14 +236,14 @@ struct EightFOWidget : LFOBaseWidget {
addParam(createParam<Knob26>(offsetParamPosition, module, EightFO::OFFSET_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<Knob26>(scaleParamPosition, module, EightFO::SCALE_PARAM, 0.0, 1.0, 1.0));
- addPhaseParam(phase7ParamPosition, module, EightFO::PHASE7_PARAM, Phasor::phaseToRadians(module->basePhase7Offset));
- addPhaseParam(phase6ParamPosition, module, EightFO::PHASE6_PARAM, Phasor::phaseToRadians(module->basePhase6Offset));
- addPhaseParam(phase5ParamPosition, module, EightFO::PHASE5_PARAM, Phasor::phaseToRadians(module->basePhase5Offset));
- addPhaseParam(phase4ParamPosition, module, EightFO::PHASE4_PARAM, Phasor::phaseToRadians(module->basePhase4Offset));
- addPhaseParam(phase3ParamPosition, module, EightFO::PHASE3_PARAM, Phasor::phaseToRadians(module->basePhase3Offset));
- addPhaseParam(phase2ParamPosition, module, EightFO::PHASE2_PARAM, Phasor::phaseToRadians(module->basePhase2Offset));
- addPhaseParam(phase1ParamPosition, module, EightFO::PHASE1_PARAM, Phasor::phaseToRadians(module->basePhase1Offset));
- addPhaseParam(phase0ParamPosition, module, EightFO::PHASE0_PARAM, Phasor::phaseToRadians(module->basePhase0Offset));
+ addPhaseParam(phase7ParamPosition, module, EightFO::PHASE7_PARAM, Phasor::phaseToRadians(basePhase7Offset));
+ addPhaseParam(phase6ParamPosition, module, EightFO::PHASE6_PARAM, Phasor::phaseToRadians(basePhase6Offset));
+ addPhaseParam(phase5ParamPosition, module, EightFO::PHASE5_PARAM, Phasor::phaseToRadians(basePhase5Offset));
+ addPhaseParam(phase4ParamPosition, module, EightFO::PHASE4_PARAM, Phasor::phaseToRadians(basePhase4Offset));
+ addPhaseParam(phase3ParamPosition, module, EightFO::PHASE3_PARAM, Phasor::phaseToRadians(basePhase3Offset));
+ addPhaseParam(phase2ParamPosition, module, EightFO::PHASE2_PARAM, Phasor::phaseToRadians(basePhase2Offset));
+ addPhaseParam(phase1ParamPosition, module, EightFO::PHASE1_PARAM, Phasor::phaseToRadians(basePhase1Offset));
+ addPhaseParam(phase0ParamPosition, module, EightFO::PHASE0_PARAM, Phasor::phaseToRadians(basePhase0Offset));
addInput(createPort<Port24>(samplePwmInputPosition, PortWidget::INPUT, module, EightFO::SAMPLE_PWM_INPUT));
addInput(createPort<Port24>(offsetInputPosition, PortWidget::INPUT, module, EightFO::OFFSET_INPUT));
diff --git a/src/EightFO.hpp b/src/EightFO.hpp
@@ -73,14 +73,6 @@ struct EightFO : LFOBase {
const int modulationSteps = 100;
const float amplitude = 5.0f;
- const Phasor::phase_delta_t basePhase7Offset = Phasor::radiansToPhase(1.75f * M_PI);
- const Phasor::phase_delta_t basePhase6Offset = Phasor::radiansToPhase(1.5f * M_PI);
- const Phasor::phase_delta_t basePhase5Offset = Phasor::radiansToPhase(1.25f * M_PI);
- const Phasor::phase_delta_t basePhase4Offset = Phasor::radiansToPhase(M_PI);
- const Phasor::phase_delta_t basePhase3Offset = Phasor::radiansToPhase(0.75f * M_PI);
- const Phasor::phase_delta_t basePhase2Offset = Phasor::radiansToPhase(0.5f * M_PI);
- const Phasor::phase_delta_t basePhase1Offset = Phasor::radiansToPhase(0.25f * M_PI);
- const Phasor::phase_delta_t basePhase0Offset = Phasor::radiansToPhase(0.0f);
int _modulationStep = 0;
Wave _wave = NO_WAVE;
diff --git a/src/Mix1.cpp b/src/Mix1.cpp
@@ -46,7 +46,9 @@ struct Mix1Widget : ModuleWidget {
1.0,
fabsf(MixerChannel::minDecibels) / (MixerChannel::maxDecibels - MixerChannel::minDecibels)
);
- dynamic_cast<VUSlider*>(slider)->setVULevel(&module->_channel.rms);
+ if (module) {
+ dynamic_cast<VUSlider*>(slider)->setVULevel(&module->_channel.rms);
+ }
addParam(slider);
}
addParam(createParam<MuteButton>(muteParamPosition, module, Mix1::MUTE_PARAM, 0.0, 1.0, 0.0));
diff --git a/src/Mix4.cpp b/src/Mix4.cpp
@@ -119,19 +119,19 @@ struct Mix4Widget : ModuleWidget {
auto rOutputPosition = Vec(186.5, 325.0);
// end generated by svg_widgets.rb
- addSlider(level1ParamPosition, module, Mix4::LEVEL1_PARAM, module->_channel1.rms);
+ addSlider(level1ParamPosition, module, Mix4::LEVEL1_PARAM, module ? &module->_channel1.rms : NULL);
addParam(createParam<Knob16>(pan1ParamPosition, module, Mix4::PAN1_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<SoloMuteButton>(mute1ParamPosition, module, Mix4::MUTE1_PARAM, 0.0, 3.0, 0.0));
- addSlider(level2ParamPosition, module, Mix4::LEVEL2_PARAM, module->_channel2.rms);
+ addSlider(level2ParamPosition, module, Mix4::LEVEL2_PARAM, module ? &module->_channel2.rms : NULL);
addParam(createParam<Knob16>(pan2ParamPosition, module, Mix4::PAN2_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<SoloMuteButton>(mute2ParamPosition, module, Mix4::MUTE2_PARAM, 0.0, 3.0, 0.0));
- addSlider(level3ParamPosition, module, Mix4::LEVEL3_PARAM, module->_channel3.rms);
+ addSlider(level3ParamPosition, module, Mix4::LEVEL3_PARAM, module ? &module->_channel3.rms : NULL);
addParam(createParam<Knob16>(pan3ParamPosition, module, Mix4::PAN3_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<SoloMuteButton>(mute3ParamPosition, module, Mix4::MUTE3_PARAM, 0.0, 3.0, 0.0));
- addSlider(level4ParamPosition, module, Mix4::LEVEL4_PARAM, module->_channel4.rms);
+ addSlider(level4ParamPosition, module, Mix4::LEVEL4_PARAM, module ? &module->_channel4.rms : NULL);
addParam(createParam<Knob16>(pan4ParamPosition, module, Mix4::PAN4_PARAM, -1.0, 1.0, 0.0));
addParam(createParam<SoloMuteButton>(mute4ParamPosition, module, Mix4::MUTE4_PARAM, 0.0, 3.0, 0.0));
- addSlider(mixParamPosition, module, Mix4::MIX_PARAM, module->_rmsLevel);
+ addSlider(mixParamPosition, module, Mix4::MIX_PARAM, module ? &module->_rmsLevel : NULL);
addParam(createParam<MuteButton>(mixMuteParamPosition, module, Mix4::MIX_MUTE_PARAM, 0.0, 1.0, 0.0));
addInput(createPort<Port24>(cv1InputPosition, PortWidget::INPUT, module, Mix4::CV1_INPUT));
@@ -152,7 +152,7 @@ struct Mix4Widget : ModuleWidget {
addOutput(createPort<Port24>(rOutputPosition, PortWidget::OUTPUT, module, Mix4::R_OUTPUT));
}
- void addSlider(Vec position, Mix4* module, int id, float& rms) {
+ void addSlider(Vec position, Mix4* module, int id, float* rms) {
auto slider = createParam<VUSlider151>(
position,
module,
@@ -161,7 +161,9 @@ struct Mix4Widget : ModuleWidget {
1.0,
fabsf(MixerChannel::minDecibels) / (MixerChannel::maxDecibels - MixerChannel::minDecibels)
);
- dynamic_cast<VUSlider*>(slider)->setVULevel(&rms);
+ if (rms) {
+ dynamic_cast<VUSlider*>(slider)->setVULevel(rms);
+ }
addParam(slider);
}
};
diff --git a/src/Mix8.cpp b/src/Mix8.cpp
@@ -167,31 +167,31 @@ struct Mix8Widget : ModuleWidget {
auto rOutputPosition = Vec(366.5, 325.0);
// end generated by svg_widgets.rb
- addSlider(level1ParamPosition, module, Mix8::LEVEL1_PARAM, module->_channel1.rms);
+ addSlider(level1ParamPosition, module, Mix8::LEVEL1_PARAM, module ? &module->_channel1.rms : NULL);
addParam(createParam<SoloMuteButton>(mute1ParamPosition, module, Mix8::MUTE1_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan1ParamPosition, module, Mix8::PAN1_PARAM, -1.0, 1.0, 0.0));
- addSlider(level2ParamPosition, module, Mix8::LEVEL2_PARAM, module->_channel2.rms);
+ addSlider(level2ParamPosition, module, Mix8::LEVEL2_PARAM, module ? &module->_channel2.rms : NULL);
addParam(createParam<SoloMuteButton>(mute2ParamPosition, module, Mix8::MUTE2_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan2ParamPosition, module, Mix8::PAN2_PARAM, -1.0, 1.0, 0.0));
- addSlider(level3ParamPosition, module, Mix8::LEVEL3_PARAM, module->_channel3.rms);
+ addSlider(level3ParamPosition, module, Mix8::LEVEL3_PARAM, module ? &module->_channel3.rms : NULL);
addParam(createParam<SoloMuteButton>(mute3ParamPosition, module, Mix8::MUTE3_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan3ParamPosition, module, Mix8::PAN3_PARAM, -1.0, 1.0, 0.0));
- addSlider(level4ParamPosition, module, Mix8::LEVEL4_PARAM, module->_channel4.rms);
+ addSlider(level4ParamPosition, module, Mix8::LEVEL4_PARAM, module ? &module->_channel4.rms : NULL);
addParam(createParam<SoloMuteButton>(mute4ParamPosition, module, Mix8::MUTE4_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan4ParamPosition, module, Mix8::PAN4_PARAM, -1.0, 1.0, 0.0));
- addSlider(level5ParamPosition, module, Mix8::LEVEL5_PARAM, module->_channel5.rms);
+ addSlider(level5ParamPosition, module, Mix8::LEVEL5_PARAM, module ? &module->_channel5.rms : NULL);
addParam(createParam<SoloMuteButton>(mute5ParamPosition, module, Mix8::MUTE5_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan5ParamPosition, module, Mix8::PAN5_PARAM, -1.0, 1.0, 0.0));
- addSlider(level6ParamPosition, module, Mix8::LEVEL6_PARAM, module->_channel6.rms);
+ addSlider(level6ParamPosition, module, Mix8::LEVEL6_PARAM, module ? &module->_channel6.rms : NULL);
addParam(createParam<SoloMuteButton>(mute6ParamPosition, module, Mix8::MUTE6_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan6ParamPosition, module, Mix8::PAN6_PARAM, -1.0, 1.0, 0.0));
- addSlider(level7ParamPosition, module, Mix8::LEVEL7_PARAM, module->_channel7.rms);
+ addSlider(level7ParamPosition, module, Mix8::LEVEL7_PARAM, module ? &module->_channel7.rms : NULL);
addParam(createParam<SoloMuteButton>(mute7ParamPosition, module, Mix8::MUTE7_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan7ParamPosition, module, Mix8::PAN7_PARAM, -1.0, 1.0, 0.0));
- addSlider(level8ParamPosition, module, Mix8::LEVEL8_PARAM, module->_channel8.rms);
+ addSlider(level8ParamPosition, module, Mix8::LEVEL8_PARAM, module ? &module->_channel8.rms : NULL);
addParam(createParam<SoloMuteButton>(mute8ParamPosition, module, Mix8::MUTE8_PARAM, 0.0, 3.0, 0.0));
addParam(createParam<Knob16>(pan8ParamPosition, module, Mix8::PAN8_PARAM, -1.0, 1.0, 0.0));
- addSlider(mixParamPosition, module, Mix8::MIX_PARAM, module->_rmsLevel);
+ addSlider(mixParamPosition, module, Mix8::MIX_PARAM, module ? &module->_rmsLevel : NULL);
addParam(createParam<MuteButton>(mixMuteParamPosition, module, Mix8::MIX_MUTE_PARAM, 0.0, 1.0, 0.0));
addInput(createPort<Port24>(cv1InputPosition, PortWidget::INPUT, module, Mix8::CV1_INPUT));
@@ -224,7 +224,7 @@ struct Mix8Widget : ModuleWidget {
addOutput(createPort<Port24>(rOutputPosition, PortWidget::OUTPUT, module, Mix8::R_OUTPUT));
}
- void addSlider(Vec position, Mix8* module, int id, float& rms) {
+ void addSlider(Vec position, Mix8* module, int id, float* rms) {
auto slider = createParam<VUSlider151>(
position,
module,
@@ -233,7 +233,9 @@ struct Mix8Widget : ModuleWidget {
1.0,
fabsf(MixerChannel::minDecibels) / (MixerChannel::maxDecibels - MixerChannel::minDecibels)
);
- dynamic_cast<VUSlider*>(slider)->setVULevel(&rms);
+ if (rms) {
+ dynamic_cast<VUSlider*>(slider)->setVULevel(rms);
+ }
addParam(slider);
}
};
diff --git a/src/Pressor.cpp b/src/Pressor.cpp
@@ -147,6 +147,11 @@ struct CompressionDisplay : OpaqueWidget {
}
void draw(NVGcontext* vg) override {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
nvgSave(vg);
for (int i = 0; i < 80; i += 5) {
const Level& l = _levels.at(i / 5);
diff --git a/src/Reftone.cpp b/src/Reftone.cpp
@@ -59,6 +59,11 @@ struct ReftoneDisplay : TransparentWidget {
};
void ReftoneDisplay::draw(NVGcontext* vg) {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
const int n = 20;
char octave[n];
snprintf(octave, n, "%d", _module->_octave);
diff --git a/src/VCAmp.cpp b/src/VCAmp.cpp
@@ -2,6 +2,9 @@
#include "VCAmp.hpp"
#include "mixer.hpp"
+const float maxDecibels = 12.0f;
+const float minDecibels = Amplifier::minDecibels;
+
void VCAmp::onSampleRateChange() {
float sampleRate = engineGetSampleRate();
_levelSL.setParams(sampleRate, MixerChannel::levelSlewTimeMS, maxDecibels - minDecibels);
@@ -56,9 +59,11 @@ struct VCAmpWidget : ModuleWidget {
VCAmp::LEVEL_PARAM,
0.0,
1.0,
- fabs(module->minDecibels) / (module->maxDecibels - module->minDecibels)
+ fabs(minDecibels) / (maxDecibels - minDecibels)
);
- dynamic_cast<VUSlider*>(slider)->setVULevel(&(module->_rmsLevel));
+ if (module) {
+ dynamic_cast<VUSlider*>(slider)->setVULevel(&(module->_rmsLevel));
+ }
addParam(slider);
addInput(createPort<Port24>(cvInputPosition, PortWidget::INPUT, module, VCAmp::CV_INPUT));
diff --git a/src/VCAmp.hpp b/src/VCAmp.hpp
@@ -30,8 +30,6 @@ struct VCAmp : Module {
NUM_LIGHTS
};
- const float maxDecibels = 12.0f;
- const float minDecibels = Amplifier::minDecibels;
Amplifier _amplifier;
bogaudio::dsp::SlewLimiter _levelSL;
Saturator _saturator;
diff --git a/src/VU.cpp b/src/VU.cpp
@@ -43,6 +43,11 @@ struct VUDisplay : OpaqueWidget {
}
void draw(NVGcontext* vg) override {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
float lDb = _module->_lLevel;
if (lDb > 0.0f) {
lDb = amplitudeToDecibels(lDb);
diff --git a/src/Walk2.cpp b/src/Walk2.cpp
@@ -165,6 +165,11 @@ struct Walk2Display : TransparentWidget {
}
void draw(NVGcontext* vg) override {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
switch (_module->_traceColor) {
case Walk2::ORANGE_TRACE_COLOR: {
_traceColor = nvgRGBA(0xff, 0x80, 0x00, 0xee);
diff --git a/src/analyzer_base.cpp b/src/analyzer_base.cpp
@@ -207,6 +207,11 @@ void AnalyzerCore::stepChannel(int channelIndex, Input& input) {
void AnalyzerDisplay::draw(NVGcontext* vg) {
+ // FIXME.v1
+ if (!_module) {
+ return;
+ }
+
drawBackground(vg);
float strokeWidth = 2.0f; // FIXME.v1 std::max(1.0f, 3 - gRackScene->zoomWidget->zoom);
_xAxisLogFactor = (_module->_rangeMaxHz - _module->_rangeMinHz) / _module->_rangeMaxHz;
diff --git a/src/lfo_base.hpp b/src/lfo_base.hpp
@@ -75,29 +75,30 @@ struct LFOBaseWidget : ModuleWidget, PitchModeListener {
, _compliantSVG(compliantSVG)
{
setSVG();
- _module->setPitchModeListener(this);
+ if (_module) {
+ _module->setPitchModeListener(this);
+ }
}
void setSVG() {
- if (_module->isCompliantPitchMode()) {
- _panel->setBackground(_compliantSVG);
- // FXIME.v1
- // if (_frequencyKnob) {
- // _frequencyKnob->minValue = -5.0f;
- // _frequencyKnob->maxValue = 8.0f;
- // _frequencyKnob->dirty = true;
- // }
- }
- else {
- _panel->setBackground(_classicSVG);
- // FXIME.v1
- // if (_frequencyKnob) {
- // _frequencyKnob->minValue = -8.0f;
- // _frequencyKnob->maxValue = 5.0f;
- // _frequencyKnob->dirty = true;
- // }
- }
- _panel->dirty = true;
+ // FIXME.v1
+ // if (_module->isCompliantPitchMode()) {
+ // _panel->setBackground(_compliantSVG);
+ // if (_frequencyKnob) {
+ // _frequencyKnob->minValue = -5.0f;
+ // _frequencyKnob->maxValue = 8.0f;
+ // _frequencyKnob->dirty = true;
+ // }
+ // }
+ // else {
+ // _panel->setBackground(_classicSVG);
+ // if (_frequencyKnob) {
+ // _frequencyKnob->minValue = -8.0f;
+ // _frequencyKnob->maxValue = 5.0f;
+ // _frequencyKnob->dirty = true;
+ // }
+ // }
+ // _panel->dirty = true;
}
void pitchModeChanged() override {