aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CircleVCO.cpp26
-rw-r--r--src/Modulo.cpp24
-rw-r--r--src/WrapComp.cpp40
-rw-r--r--src/s-ol.cpp10
-rw-r--r--src/s-ol.hpp19
5 files changed, 58 insertions, 61 deletions
diff --git a/src/CircleVCO.cpp b/src/CircleVCO.cpp
index b1bbaab..41ba4f0 100644
--- a/src/CircleVCO.cpp
+++ b/src/CircleVCO.cpp
@@ -31,7 +31,7 @@ void CircleVCO::step() {
float pitch = params[PITCH_PARAM].value;
pitch += inputs[PITCH_INPUT].value;
- pitch = clampf(pitch, -4.0, 4.0);
+ pitch = clamp(pitch, -4.0f, 4.0f);
float freq = 200 * (powf(2.0, pitch) - powf(2.0, -4.0));
phase += freq * deltaTime;
@@ -46,24 +46,28 @@ void CircleVCO::step() {
}
-CircleVCOWidget::CircleVCOWidget() {
- CircleVCO *module = new CircleVCO();
- setModule(module);
+struct CircleVCOWidget : ModuleWidget {
+ CircleVCOWidget(CircleVCO *module);
+};
+
+CircleVCOWidget::CircleVCOWidget(CircleVCO *module) : ModuleWidget(module) {
setPanel(SVG::load(assetPlugin(plugin, "res/CircleVCO.svg")));
- addChild(createScrew<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
- addChild(createScrew<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+ addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
+ addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
PJ301MPort p;
RoundSmallBlackKnob k;
Vec center = Vec(box.size.x, 0).minus(p.box.size).div(2);
Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2);
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, 0.0, 1.0, 0.0));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, 0.0, 1.0, 0.0));
- addInput(createInput<PJ301MPort>(center.plus(Vec(0, 144)), module, CircleVCO::PITCH_INPUT));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 144)), Port::INPUT, module, CircleVCO::PITCH_INPUT));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 218)), module, CircleVCO::SIN_OUTPUT));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 268)), module, CircleVCO::COS_OUTPUT));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 318)), module, CircleVCO::PHS_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 218)), Port::OUTPUT, module, CircleVCO::SIN_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 268)), Port::OUTPUT, module, CircleVCO::COS_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 318)), Port::OUTPUT, module, CircleVCO::PHS_OUTPUT));
}
+
+Model *modelCircleVCO = Model::create<CircleVCO, CircleVCOWidget>("s-ol", "CircleVCO", "Circle VCO", OSCILLATOR_TAG, VISUAL_TAG);
diff --git a/src/Modulo.cpp b/src/Modulo.cpp
index 838f3ae..96241d7 100644
--- a/src/Modulo.cpp
+++ b/src/Modulo.cpp
@@ -35,13 +35,15 @@ void Modulo::step() {
}
-ModuloWidget::ModuloWidget() {
- Modulo *module = new Modulo();
- setModule(module);
+struct ModuloWidget : ModuleWidget {
+ ModuloWidget(Modulo *module);
+};
+
+ModuloWidget::ModuloWidget(Modulo *module) : ModuleWidget(module) {
setPanel(SVG::load(assetPlugin(plugin, "res/Modulo.svg")));
- addChild(createScrew<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
- addChild(createScrew<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+ addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
+ addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
PJ301MPort p;
RoundSmallBlackKnob k;
@@ -49,11 +51,13 @@ ModuloWidget::ModuloWidget() {
Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2);
- addInput(createInput<PJ301MPort>(center.plus(Vec(0, 120)), module, Modulo::SIGNAL_INPUT));
- addInput(createInput<PJ301MPort>(center.plus(Vec(-15, 180)), module, Modulo::GAIN_INPUT));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 120)), Port::INPUT, module, Modulo::SIGNAL_INPUT));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(-15, 180)), Port::INPUT, module, Modulo::GAIN_INPUT));
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(15, 180)), module, Modulo::GAIN_PARAM, -3.0, 3.0, 0.0));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(15, 180)), module, Modulo::GAIN_PARAM, -3.0, 3.0, 0.0));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 265)), module, Modulo::STAIR_OUTPUT));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 345)), module, Modulo::WRAP_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 265)), Port::OUTPUT, module, Modulo::STAIR_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 345)), Port::OUTPUT, module, Modulo::WRAP_OUTPUT));
}
+
+Model *modelModulo = Model::create<Modulo, ModuloWidget>("s-ol", "Modulo", "Modulo", LOGIC_TAG);
diff --git a/src/WrapComp.cpp b/src/WrapComp.cpp
index 3da185d..f7eece1 100644
--- a/src/WrapComp.cpp
+++ b/src/WrapComp.cpp
@@ -31,7 +31,7 @@ struct WrapComp : Module {
void WrapComp::step() {
float input = inputs[SIGNAL_INPUT].value + inputs[OFFSET_INPUT].normalize(0.0) + params[OFFSET_PARAM].value;
- float width = clampf((inputs[RANGE_INPUT].normalize(0.0) + params[RANGE_PARAM].value) / 2.0, 0.0, 5.0);
+ float width = clamp((inputs[RANGE_INPUT].normalize(0.0f) + params[RANGE_PARAM].value) / 2.0f, 0.0f, 5.0f);
while (input > 5.0)
input -= 5.0;
@@ -46,15 +46,17 @@ void WrapComp::step() {
}
-WrapCompWidget::WrapCompWidget() {
- WrapComp *module = new WrapComp();
- setModule(module);
+struct WrapCompWidget : ModuleWidget {
+ WrapCompWidget(WrapComp *module);
+};
+
+WrapCompWidget::WrapCompWidget(WrapComp *module) : ModuleWidget(module) {
setPanel(SVG::load(assetPlugin(plugin, "res/WrapComp.svg")));
- addChild(createScrew<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
- addChild(createScrew<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
- addChild(createScrew<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
- addChild(createScrew<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+ addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
+ addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
+ addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
+ addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
PJ301MPort p;
RoundSmallBlackKnob k;
@@ -63,19 +65,21 @@ WrapCompWidget::WrapCompWidget() {
Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2);
Vec lcenter = Vec(box.size.x, 0).minus(l.box.size).div(2);
- addInput(createInput<PJ301MPort>(center.plus(Vec(0, 70)), module, WrapComp::SIGNAL_INPUT));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 70)), Port::INPUT, module, WrapComp::SIGNAL_INPUT));
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 135)), module, WrapComp::OFFSET_PARAM, -5.0, 5.0, 0.0));
- addInput(createInput<PJ301MPort>(center.plus(Vec(-25, 135)), module, WrapComp::OFFSET_INPUT));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 135)), module, WrapComp::OFFSET_PARAM, -5.0, 5.0, 0.0));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(-25, 135)), Port::INPUT, module, WrapComp::OFFSET_INPUT));
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 210)), module, WrapComp::RANGE_PARAM, -5.0, 5.0, 0.0));
- addInput(createInput<PJ301MPort>(center.plus(Vec(-25, 210)), module, WrapComp::RANGE_INPUT));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 210)), module, WrapComp::RANGE_PARAM, -5.0, 5.0, 0.0));
+ addInput(Port::create<PJ301MPort>(center.plus(Vec(-25, 210)), Port::INPUT, module, WrapComp::RANGE_INPUT));
- addChild(createLight<MediumLight<RedLight>>(lcenter.plus(Vec(-15, 255)), module, WrapComp::A_LIGHT));
- addChild(createLight<MediumLight<RedLight>>(lcenter.plus(Vec( 15, 255)), module, WrapComp::B_LIGHT));
+ addChild(ModuleLightWidget::create<MediumLight<RedLight>>(lcenter.plus(Vec(-15, 255)), module, WrapComp::A_LIGHT));
+ addChild(ModuleLightWidget::create<MediumLight<RedLight>>(lcenter.plus(Vec( 15, 255)), module, WrapComp::B_LIGHT));
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(-25, 280)), module, WrapComp::A_OUT_PARAM, -8.0, 8.0, 1.0));
- addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec( 25, 280)), module, WrapComp::B_OUT_PARAM, -8.0, 8.0, 0.0));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(-25, 280)), module, WrapComp::A_OUT_PARAM, -8.0, 8.0, 1.0));
+ addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec( 25, 280)), module, WrapComp::B_OUT_PARAM, -8.0, 8.0, 0.0));
- addOutput(createOutput<PJ301MPort>(center.plus(Vec(0, 315)), module, WrapComp::MAIN_OUTPUT));
+ addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 315)), Port::OUTPUT, module, WrapComp::MAIN_OUTPUT));
}
+
+Model *modelWrapComp = Model::create<WrapComp, WrapCompWidget>("s-ol", "WrapComp", "Wrapping Comparator", LOGIC_TAG);
diff --git a/src/s-ol.cpp b/src/s-ol.cpp
index 3fd0f1e..35023db 100644
--- a/src/s-ol.cpp
+++ b/src/s-ol.cpp
@@ -5,14 +5,12 @@ Plugin *plugin;
void init(rack::Plugin *p) {
plugin = p;
- p->slug = "s-ol";
-#ifdef VERSION
+ p->slug = TOSTRING(SLUG);
p->version = TOSTRING(VERSION);
-#endif
p->website = "https://github.com/s-ol/vcvmods";
p->manual = "https://github.com/s-ol/vcvmods";
- p->addModel(createModel<CircleVCOWidget>("s-ol", "CircleVCO", "Circle VCO", OSCILLATOR_TAG, VISUAL_TAG));
- p->addModel(createModel<WrapCompWidget>("s-ol", "WrapComp", "Wrapping Comparator", LOGIC_TAG));
- p->addModel(createModel<ModuloWidget>("s-ol", "Modulo", "Modulo", LOGIC_TAG));
+ p->addModel(modelCircleVCO);
+ p->addModel(modelWrapComp);
+ p->addModel(modelModulo);
}
diff --git a/src/s-ol.hpp b/src/s-ol.hpp
index ceb4880..377e117 100644
--- a/src/s-ol.hpp
+++ b/src/s-ol.hpp
@@ -3,21 +3,8 @@
using namespace rack;
-
extern Plugin *plugin;
-////////////////////
-// module widgets
-////////////////////
-
-struct CircleVCOWidget : ModuleWidget {
- CircleVCOWidget();
-};
-
-struct WrapCompWidget : ModuleWidget {
- WrapCompWidget();
-};
-
-struct ModuloWidget : ModuleWidget {
- ModuloWidget();
-};
+extern Model *modelCircleVCO;
+extern Model *modelWrapComp;
+extern Model *modelModulo;