diff options
| author | Christoph Scholtes <cschol2112@gmail.com> | 2018-02-22 00:47:20 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-02-22 12:27:48 +0000 |
| commit | 3fd57784f3e0cd4dba0acdba45900d07694eabce (patch) | |
| tree | 5916b6e5b6d4400419abe0b79ef34203a8fbca1b | |
| parent | smaller pannels and VC modulo gain (diff) | |
| download | vcvmods-3fd57784f3e0cd4dba0acdba45900d07694eabce.tar.gz vcvmods-3fd57784f3e0cd4dba0acdba45900d07694eabce.zip | |
Update to Rack API v0.6.
| -rw-r--r-- | Makefile | 24 | ||||
| -rw-r--r-- | src/CircleVCO.cpp | 26 | ||||
| -rw-r--r-- | src/Modulo.cpp | 24 | ||||
| -rw-r--r-- | src/WrapComp.cpp | 40 | ||||
| -rw-r--r-- | src/s-ol.cpp | 10 | ||||
| -rw-r--r-- | src/s-ol.hpp | 19 |
6 files changed, 64 insertions, 79 deletions
@@ -1,3 +1,5 @@ +SLUG = s-ol +VERSION = 0.6.0 # FLAGS will be passed to both the C and C++ compiler FLAGS += @@ -8,23 +10,9 @@ CXXFLAGS += # Static libraries are fine. LDFLAGS += -# Add .cpp and .c files to the build -SOURCES = $(wildcard src/*.cpp) +SOURCES += $(wildcard src/*.cpp) +DISTRIBUTABLES += $(wildcard LICENSE*) res -# Must include the VCV plugin Makefile framework -include ../../plugin.mk - - -# Convenience target for including files in the distributable release -DIST_NAME = solmods -.PHONY: dist -dist: all -ifndef VERSION - $(error VERSION must be defined when making distributables) -endif - mkdir -p dist/$(DIST_NAME) - cp LICENSE* README* dist/$(DIST_NAME)/ - cp $(TARGET) dist/$(DIST_NAME)/ - cp -R res dist/$(DIST_NAME)/ - cd dist && zip -5 -r $(DIST_NAME)-$(VERSION)-$(ARCH).zip $(DIST_NAME) +RACK_DIR ?= ../.. +include $(RACK_DIR)/plugin.mk 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; |
