| @@ -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])); | |||
| } | |||