update to rack0 compat layer
s-ol
3 years ago
0 | SLUG = s-ol | |
1 | VERSION = 0.6.1 | |
2 | ||
3 | 0 | # FLAGS will be passed to both the C and C++ compiler |
4 | 1 | FLAGS += |
5 | 2 | CFLAGS += |
20 | 20 | |
21 | 21 | float phase = 0.0; |
22 | 22 | |
23 | CircleVCO() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |
23 | CircleVCO() { | |
24 | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |
25 | } | |
24 | 26 | void step() override; |
25 | 27 | }; |
26 | 28 | |
48 | 50 | CircleVCOWidget(CircleVCO *module); |
49 | 51 | }; |
50 | 52 | |
51 | CircleVCOWidget::CircleVCOWidget(CircleVCO *module) : ModuleWidget(module) { | |
52 | setPanel(SVG::load(assetPlugin(plugin, "res/CircleVCO.svg"))); | |
53 | CircleVCOWidget::CircleVCOWidget(CircleVCO *module) { | |
54 | setModule(module); | |
55 | setPanel(SVG::load(assetPlugin(pluginInstance, "res/CircleVCO.svg"))); | |
53 | 56 | |
54 | addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
55 | addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
57 | addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
58 | addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
56 | 59 | |
57 | 60 | PJ301MPort p; |
58 | 61 | RoundSmallBlackKnob k; |
59 | 62 | Vec center = Vec(box.size.x, 0).minus(p.box.size).div(2); |
60 | 63 | Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2); |
61 | 64 | |
62 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, -54.0f, 54.0f, 0.0f)); | |
65 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(0, 90)), module, CircleVCO::PITCH_PARAM, -54.0f, 54.0f, 0.0f)); | |
63 | 66 | |
64 | addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 144)), Port::INPUT, module, CircleVCO::PITCH_INPUT)); | |
67 | addInput(createPort<PJ301MPort>(center.plus(Vec(0, 144)), PortWidget::INPUT, module, CircleVCO::PITCH_INPUT)); | |
65 | 68 | |
66 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 218)), Port::OUTPUT, module, CircleVCO::SIN_OUTPUT)); | |
67 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 268)), Port::OUTPUT, module, CircleVCO::COS_OUTPUT)); | |
68 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 318)), Port::OUTPUT, module, CircleVCO::PHS_OUTPUT)); | |
69 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 218)), PortWidget::OUTPUT, module, CircleVCO::SIN_OUTPUT)); | |
70 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 268)), PortWidget::OUTPUT, module, CircleVCO::COS_OUTPUT)); | |
71 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 318)), PortWidget::OUTPUT, module, CircleVCO::PHS_OUTPUT)); | |
69 | 72 | } |
70 | 73 | |
71 | Model *modelCircleVCO = Model::create<CircleVCO, CircleVCOWidget>("s-ol", "CircleVCO", "Circle VCO", OSCILLATOR_TAG, VISUAL_TAG); | |
74 | Model *modelCircleVCO = createModel<CircleVCO, CircleVCOWidget>("CircleVCO"); |
18 | 18 | NUM_LIGHTS |
19 | 19 | }; |
20 | 20 | |
21 | Modulo() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |
21 | Modulo() { | |
22 | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |
23 | } | |
22 | 24 | void step() override; |
23 | 25 | }; |
24 | 26 | |
38 | 40 | ModuloWidget(Modulo *module); |
39 | 41 | }; |
40 | 42 | |
41 | ModuloWidget::ModuloWidget(Modulo *module) : ModuleWidget(module) { | |
42 | setPanel(SVG::load(assetPlugin(plugin, "res/Modulo.svg"))); | |
43 | ModuloWidget::ModuloWidget(Modulo *module) { | |
44 | setModule(module); | |
45 | setPanel(SVG::load(assetPlugin(pluginInstance, "res/Modulo.svg"))); | |
43 | 46 | |
44 | addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
45 | addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
47 | addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
48 | addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
46 | 49 | |
47 | 50 | PJ301MPort p; |
48 | 51 | RoundSmallBlackKnob k; |
50 | 53 | Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2); |
51 | 54 | |
52 | 55 | |
53 | addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 120)), Port::INPUT, module, Modulo::SIGNAL_INPUT)); | |
54 | addInput(Port::create<PJ301MPort>(center.plus(Vec(-15, 180)), Port::INPUT, module, Modulo::GAIN_INPUT)); | |
56 | addInput(createPort<PJ301MPort>(center.plus(Vec(0, 120)), PortWidget::INPUT, module, Modulo::SIGNAL_INPUT)); | |
57 | addInput(createPort<PJ301MPort>(center.plus(Vec(-15, 180)), PortWidget::INPUT, module, Modulo::GAIN_INPUT)); | |
55 | 58 | |
56 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(15, 180)), module, Modulo::GAIN_PARAM, -3.0, 3.0, 0.0)); | |
59 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(15, 180)), module, Modulo::GAIN_PARAM, -3.0, 3.0, 0.0)); | |
57 | 60 | |
58 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 265)), Port::OUTPUT, module, Modulo::STAIR_OUTPUT)); | |
59 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 345)), Port::OUTPUT, module, Modulo::WRAP_OUTPUT)); | |
61 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 265)), PortWidget::OUTPUT, module, Modulo::STAIR_OUTPUT)); | |
62 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 345)), PortWidget::OUTPUT, module, Modulo::WRAP_OUTPUT)); | |
60 | 63 | } |
61 | 64 | |
62 | Model *modelModulo = Model::create<Modulo, ModuloWidget>("s-ol", "Modulo", "Modulo", LOGIC_TAG); | |
65 | Model *modelModulo = createModel<Modulo, ModuloWidget>("Modulo"); |
23 | 23 | NUM_LIGHTS |
24 | 24 | }; |
25 | 25 | |
26 | WrapComp() : Module(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS) {} | |
26 | WrapComp() { | |
27 | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |
28 | } | |
27 | 29 | void step() override; |
28 | 30 | }; |
29 | 31 | |
49 | 51 | WrapCompWidget(WrapComp *module); |
50 | 52 | }; |
51 | 53 | |
52 | WrapCompWidget::WrapCompWidget(WrapComp *module) : ModuleWidget(module) { | |
53 | setPanel(SVG::load(assetPlugin(plugin, "res/WrapComp.svg"))); | |
54 | WrapCompWidget::WrapCompWidget(WrapComp *module) { | |
55 | setModule(module); | |
56 | setPanel(SVG::load(assetPlugin(pluginInstance, "res/WrapComp.svg"))); | |
54 | 57 | |
55 | addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
56 | addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |
57 | addChild(Widget::create<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
58 | addChild(Widget::create<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
58 | addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0))); | |
59 | addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0))); | |
60 | addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
61 | addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH))); | |
59 | 62 | |
60 | 63 | PJ301MPort p; |
61 | 64 | RoundSmallBlackKnob k; |
64 | 67 | Vec kcenter = Vec(box.size.x, 0).minus(k.box.size).div(2); |
65 | 68 | Vec lcenter = Vec(box.size.x, 0).minus(l.box.size).div(2); |
66 | 69 | |
67 | addInput(Port::create<PJ301MPort>(center.plus(Vec(0, 70)), Port::INPUT, module, WrapComp::SIGNAL_INPUT)); | |
70 | addInput(createPort<PJ301MPort>(center.plus(Vec(0, 70)), PortWidget::INPUT, module, WrapComp::SIGNAL_INPUT)); | |
68 | 71 | |
69 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 135)), module, WrapComp::OFFSET_PARAM, -5.0, 5.0, 0.0)); | |
70 | addInput(Port::create<PJ301MPort>(center.plus(Vec(-25, 135)), Port::INPUT, module, WrapComp::OFFSET_INPUT)); | |
72 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 135)), module, WrapComp::OFFSET_PARAM, -5.0, 5.0, 0.0)); | |
73 | addInput(createPort<PJ301MPort>(center.plus(Vec(-25, 135)), PortWidget::INPUT, module, WrapComp::OFFSET_INPUT)); | |
71 | 74 | |
72 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 210)), module, WrapComp::RANGE_PARAM, -5.0, 5.0, 0.0)); | |
73 | addInput(Port::create<PJ301MPort>(center.plus(Vec(-25, 210)), Port::INPUT, module, WrapComp::RANGE_INPUT)); | |
75 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(25, 210)), module, WrapComp::RANGE_PARAM, -5.0, 5.0, 0.0)); | |
76 | addInput(createPort<PJ301MPort>(center.plus(Vec(-25, 210)), PortWidget::INPUT, module, WrapComp::RANGE_INPUT)); | |
74 | 77 | |
75 | addChild(ModuleLightWidget::create<MediumLight<RedLight>>(lcenter.plus(Vec(-15, 255)), module, WrapComp::A_LIGHT)); | |
76 | addChild(ModuleLightWidget::create<MediumLight<RedLight>>(lcenter.plus(Vec( 15, 255)), module, WrapComp::B_LIGHT)); | |
78 | addChild(createLight<MediumLight<RedLight>>(lcenter.plus(Vec(-15, 255)), module, WrapComp::A_LIGHT)); | |
79 | addChild(createLight<MediumLight<RedLight>>(lcenter.plus(Vec( 15, 255)), module, WrapComp::B_LIGHT)); | |
77 | 80 | |
78 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec(-25, 280)), module, WrapComp::A_OUT_PARAM, -8.0, 8.0, 1.0)); | |
79 | addParam(ParamWidget::create<RoundSmallBlackKnob>(kcenter.plus(Vec( 25, 280)), module, WrapComp::B_OUT_PARAM, -8.0, 8.0, 0.0)); | |
81 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec(-25, 280)), module, WrapComp::A_OUT_PARAM, -8.0, 8.0, 1.0)); | |
82 | addParam(createParam<RoundSmallBlackKnob>(kcenter.plus(Vec( 25, 280)), module, WrapComp::B_OUT_PARAM, -8.0, 8.0, 0.0)); | |
80 | 83 | |
81 | addOutput(Port::create<PJ301MPort>(center.plus(Vec(0, 315)), Port::OUTPUT, module, WrapComp::MAIN_OUTPUT)); | |
84 | addOutput(createPort<PJ301MPort>(center.plus(Vec(0, 315)), PortWidget::OUTPUT, module, WrapComp::MAIN_OUTPUT)); | |
82 | 85 | } |
83 | 86 | |
84 | Model *modelWrapComp = Model::create<WrapComp, WrapCompWidget>("s-ol", "WrapComp", "Wrapping Comparator", LOGIC_TAG); | |
87 | Model *modelWrapComp = createModel<WrapComp, WrapCompWidget>("WrapComp"); |
0 | 0 | #include "s-ol.hpp" |
1 | 1 | |
2 | Plugin *plugin; | |
2 | Plugin *pluginInstance; | |
3 | 3 | |
4 | 4 | void init(rack::Plugin *p) { |
5 | plugin = p; | |
6 | ||
7 | p->slug = TOSTRING(SLUG); | |
8 | p->version = TOSTRING(VERSION); | |
9 | p->website = "https://github.com/s-ol/vcvmods"; | |
10 | p->manual = "https://github.com/s-ol/vcvmods"; | |
5 | pluginInstance = p; | |
11 | 6 | |
12 | 7 | p->addModel(modelCircleVCO); |
13 | 8 | p->addModel(modelWrapComp); |