| @@ -31,7 +31,7 @@ struct Warps : Module { | |||||
| warps::Modulator modulator; | warps::Modulator modulator; | ||||
| warps::ShortFrame inputFrames[60] = {}; | warps::ShortFrame inputFrames[60] = {}; | ||||
| warps::ShortFrame outputFrames[60] = {}; | warps::ShortFrame outputFrames[60] = {}; | ||||
| float lights[1] = {}; | |||||
| float lights[2] = {}; | |||||
| SchmittTrigger stateTrigger; | SchmittTrigger stateTrigger; | ||||
| Warps(); | Warps(); | ||||
| @@ -89,7 +89,8 @@ void Warps::step() { | |||||
| p->channel_drive[0] = clampf(params[LEVEL1_PARAM] + getf(inputs[LEVEL1_INPUT]) / 5.0, 0.0, 1.0); | p->channel_drive[0] = clampf(params[LEVEL1_PARAM] + getf(inputs[LEVEL1_INPUT]) / 5.0, 0.0, 1.0); | ||||
| p->channel_drive[1] = clampf(params[LEVEL2_PARAM] + getf(inputs[LEVEL2_INPUT]) / 5.0, 0.0, 1.0); | p->channel_drive[1] = clampf(params[LEVEL2_PARAM] + getf(inputs[LEVEL2_INPUT]) / 5.0, 0.0, 1.0); | ||||
| p->modulation_algorithm = clampf(params[ALGORITHM_PARAM] / 8.0 + getf(inputs[ALGORITHM_PARAM]) / 5.0, 0.0, 1.0); | |||||
| p->modulation_algorithm = clampf(params[ALGORITHM_PARAM] / 8.0 + getf(inputs[ALGORITHM_INPUT]) / 5.0, 0.0, 1.0); | |||||
| lights[1] = p->modulation_algorithm * 8.0; | |||||
| p->modulation_parameter = clampf(params[TIMBRE_PARAM] + getf(inputs[TIMBRE_INPUT]) / 5.0, 0.0, 1.0); | p->modulation_parameter = clampf(params[TIMBRE_PARAM] + getf(inputs[TIMBRE_INPUT]) / 5.0, 0.0, 1.0); | ||||
| p->frequency_shift_pot = params[ALGORITHM_PARAM] / 8.0; | p->frequency_shift_pot = params[ALGORITHM_PARAM] / 8.0; | ||||
| @@ -117,6 +118,32 @@ struct WarpsModeLight : ModeValueLight { | |||||
| } | } | ||||
| }; | }; | ||||
| struct WarpsAlgoLight : ValueLight { | |||||
| WarpsAlgoLight() { | |||||
| box.size = Vec(67, 67); | |||||
| } | |||||
| void step() { | |||||
| // TODO Set these to Warps' actual colors | |||||
| static NVGcolor colors[9] = { | |||||
| nvgHSL(0.0, 0.5, 0.7), | |||||
| nvgHSL(0.1, 0.5, 0.7), | |||||
| nvgHSL(0.2, 0.5, 0.7), | |||||
| nvgHSL(0.3, 0.5, 0.7), | |||||
| nvgHSL(0.4, 0.5, 0.7), | |||||
| nvgHSL(0.5, 0.5, 0.7), | |||||
| nvgHSL(0.6, 0.5, 0.7), | |||||
| nvgHSL(0.7, 0.5, 0.7), | |||||
| nvgHSL(0.8, 0.5, 0.7), | |||||
| }; | |||||
| 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); | |||||
| } | |||||
| }; | |||||
| WarpsWidget::WarpsWidget() { | WarpsWidget::WarpsWidget() { | ||||
| Warps *module = new Warps(); | Warps *module = new Warps(); | ||||
| setModule(module); | setModule(module); | ||||
| @@ -152,4 +179,5 @@ WarpsWidget::WarpsWidget() { | |||||
| addOutput(createOutput<PJ3410Port>(Vec(113, 313), module, Warps::AUX_OUTPUT)); | addOutput(createOutput<PJ3410Port>(Vec(113, 313), module, Warps::AUX_OUTPUT)); | ||||
| addChild(createValueLight<SmallLight<WarpsModeLight>>(Vec(20, 167), &module->lights[0])); | addChild(createValueLight<SmallLight<WarpsModeLight>>(Vec(20, 167), &module->lights[0])); | ||||
| addChild(createValueLight<WarpsAlgoLight>(Vec(41, 64), &module->lights[1])); | |||||
| } | } | ||||