| @@ -0,0 +1,120 @@ | |||||
| #include "AudibleInstruments.hpp" | |||||
| #include <string.h> | |||||
| struct Frames : Module { | |||||
| enum ParamIds { | |||||
| GAIN1_PARAM, | |||||
| GAIN2_PARAM, | |||||
| GAIN3_PARAM, | |||||
| GAIN4_PARAM, | |||||
| ADD_PARAM, | |||||
| DEL_PARAM, | |||||
| FRAME_PARAM, | |||||
| MODULATION_PARAM, | |||||
| OFFSET_PARAM, | |||||
| NUM_PARAMS | |||||
| }; | |||||
| enum InputIds { | |||||
| ALL_INPUT, | |||||
| IN1_INPUT, | |||||
| IN2_INPUT, | |||||
| IN3_INPUT, | |||||
| IN4_INPUT, | |||||
| FRAME_INPUT, | |||||
| NUM_INPUTS | |||||
| }; | |||||
| enum OutputIds { | |||||
| MIX_OUTPUT, | |||||
| OUT1_OUTPUT, | |||||
| OUT2_OUTPUT, | |||||
| OUT3_OUTPUT, | |||||
| OUT4_OUTPUT, | |||||
| FRAME_STEP_OUTPUT, | |||||
| NUM_OUTPUTS | |||||
| }; | |||||
| float lights[1] = {}; | |||||
| Frames(); | |||||
| void step(); | |||||
| }; | |||||
| Frames::Frames() { | |||||
| params.resize(NUM_PARAMS); | |||||
| inputs.resize(NUM_INPUTS); | |||||
| outputs.resize(NUM_OUTPUTS); | |||||
| } | |||||
| void Frames::step() { | |||||
| } | |||||
| struct FramesLight : ValueLight { | |||||
| FramesLight() { | |||||
| box.size = Vec(67, 67); | |||||
| } | |||||
| void step() { | |||||
| // TODO Set these to Frames' actual colors | |||||
| static NVGcolor colors[9] = { | |||||
| nvgHSL(0.5, 0.3, 0.85), | |||||
| nvgHSL(0.6, 0.3, 0.85), | |||||
| nvgHSL(0.7, 0.3, 0.85), | |||||
| nvgHSL(0.8, 0.3, 0.85), | |||||
| nvgHSL(0.9, 0.3, 0.85), | |||||
| nvgHSL(0.0, 0.3, 0.85), | |||||
| nvgHSL(0.1, 0.3, 0.85), | |||||
| nvgHSL(0.2, 0.3, 0.85), | |||||
| nvgHSL(0.3, 0.3, 0.85), | |||||
| }; | |||||
| int i = clampi((int) *value, 0, 7); | |||||
| NVGcolor color0 = colors[i]; | |||||
| NVGcolor color1 = colors[i + 1]; | |||||
| float p = fmodf(*value, 1.0); | |||||
| color = nvgLerpRGBA(color0, color1, p); | |||||
| } | |||||
| }; | |||||
| FramesWidget::FramesWidget() { | |||||
| Frames *module = new Frames(); | |||||
| setModule(module); | |||||
| box.size = Vec(15*18, 380); | |||||
| { | |||||
| Panel *panel = new LightPanel(); | |||||
| panel->backgroundImage = Image::load(assetPlugin(plugin, "res/Frames.png")); | |||||
| panel->box.size = box.size; | |||||
| addChild(panel); | |||||
| } | |||||
| addChild(createScrew<ScrewSilver>(Vec(15, 0))); | |||||
| addChild(createScrew<ScrewSilver>(Vec(box.size.x-30, 0))); | |||||
| addChild(createScrew<ScrewSilver>(Vec(15, 365))); | |||||
| addChild(createScrew<ScrewSilver>(Vec(box.size.x-30, 365))); | |||||
| addParam(createParam<Rogan1PSWhite>(Vec(14, 52), module, Frames::GAIN1_PARAM, 0.0, 1.0, 0.5)); | |||||
| addParam(createParam<Rogan1PSWhite>(Vec(81, 52), module, Frames::GAIN2_PARAM, 0.0, 1.0, 0.5)); | |||||
| addParam(createParam<Rogan1PSWhite>(Vec(149, 52), module, Frames::GAIN3_PARAM, 0.0, 1.0, 0.5)); | |||||
| addParam(createParam<Rogan1PSWhite>(Vec(216, 52), module, Frames::GAIN4_PARAM, 0.0, 1.0, 0.5)); | |||||
| addParam(createParam<Rogan6PSWhite>(Vec(90, 117), module, Frames::FRAME_PARAM, 0.0, 63.0, 0.0)); | |||||
| addParam(createParam<Rogan1PSWhite>(Vec(208, 141), module, Frames::MODULATION_PARAM, 0.0, 1.0, 0.5)); | |||||
| addInput(createInput<PJ3410Port>(Vec(12, 269), module, Frames::ALL_INPUT)); | |||||
| addInput(createInput<PJ3410Port>(Vec(55, 269), module, Frames::IN1_INPUT)); | |||||
| addInput(createInput<PJ3410Port>(Vec(98, 269), module, Frames::IN2_INPUT)); | |||||
| addInput(createInput<PJ3410Port>(Vec(141, 269), module, Frames::IN3_INPUT)); | |||||
| addInput(createInput<PJ3410Port>(Vec(184, 269), module, Frames::IN4_INPUT)); | |||||
| addInput(createInput<PJ3410Port>(Vec(227, 269), module, Frames::FRAME_INPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(12, 312), module, Frames::MIX_OUTPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(55, 312), module, Frames::OUT1_OUTPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(98, 312), module, Frames::OUT2_OUTPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(141, 312), module, Frames::OUT3_OUTPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(184, 312), module, Frames::OUT4_OUTPUT)); | |||||
| addOutput(createOutput<PJ3410Port>(Vec(227, 312), module, Frames::FRAME_STEP_OUTPUT)); | |||||
| addChild(createValueLight<FramesLight>(Vec(101, 128), &module->lights[0])); | |||||
| } | |||||