computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit e21586d462dd0a4d6bd81ce5dcf4716a610c7a62
parent 4c4f9c69b7202e14aa401fe99e45b9f4f5461e5f
Author: Adam M <aemalone@gmail.com>
Date:   Thu,  9 Apr 2020 19:37:11 -0500

include drawFunctions, mode knob for horse

Diffstat:
Msrc/Computerscare.hpp | 1+
Msrc/ComputerscareHorseADoodleDoo.cpp | 21++++++++++++++++++---
Msrc/drawFunctions.hpp | 61++++++++++++++++++++++++++++++++-----------------------------
3 files changed, 51 insertions(+), 32 deletions(-)

diff --git a/src/Computerscare.hpp b/src/Computerscare.hpp @@ -477,4 +477,5 @@ struct SmallLetterDisplay : Widget { } }; +#include "drawFunctions.hpp" #include "ComputerscarePolyModule.hpp" diff --git a/src/ComputerscareHorseADoodleDoo.cpp b/src/ComputerscareHorseADoodleDoo.cpp @@ -138,6 +138,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { WEIRDNESS_KNOB, WEIRDNESS_TRIM, POLY_KNOB, + MODE_KNOB, NUM_PARAMS }; @@ -197,6 +198,8 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { configParam(POLY_KNOB, 0.f, 16.f, 0.f, "Polyphony"); + configParam(MODE_KNOB,1.f,16.f,1.f,"Mode"); + for (int i = 0; i < 16; i++) { seq[i] = HorseSequencer(0.f, 8, 0.f, i); @@ -240,14 +243,14 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { if (reset) { seq[ch].armChange(); - seqVal[ch] = seq[ch].get(); + /*seqVal[ch] = seq[ch].get(); if (seqVal[ch]) { cvVal[ch] = seq[ch].getCV(); } - atFirstStepPoly[ch] = true; + atFirstStepPoly[ch] = true;*/ } - if (clocked && !reset) { + if (clocked /*&& !reset*/) { seqVal[ch] = seq[ch].tickAndGet(); if (seqVal[ch]) { cvVal[ch] = seq[ch].getCV(); @@ -265,6 +268,7 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { }*/ } + if (inputs[CLOCK_INPUT].isConnected()) { outputs[TRIGGER_OUTPUT].setVoltage((clockInputHigh && seqVal[ch] == 1) ? 10.0f : 0.0f, ch); //DEBUG("before output:%f",cvVal); @@ -311,6 +315,9 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { } }; + + + struct NumStepsOverKnobDisplay : SmallLetterDisplay { ComputerscareHorseADoodleDoo *module; @@ -466,6 +473,14 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { addInputBlock("Pattern", 0, 100, module, 0, ComputerscareHorseADoodleDoo::PATTERN_CV, 0); addInputBlock("Length", 0, 150, module, 2, ComputerscareHorseADoodleDoo::STEPS_CV, 1); addInputBlock("Density", 0, 200, module, 4, ComputerscareHorseADoodleDoo::DENSITY_CV, 0); + addParam(createParam<MediumDotSnapKnob>(Vec(30,240), module, ComputerscareHorseADoodleDoo::MODE_KNOB)); + + + //addInputBlock("Mode", 0, 250, module, ComputerscareHorseADoodleDoo::MODE_KNOB, 0, 1); + + + + channelWidget = new PolyOutputChannelsWidget(Vec(1,250),module,ComputerscareHorseADoodleDoo::POLY_KNOB); diff --git a/src/drawFunctions.hpp b/src/drawFunctions.hpp @@ -1,44 +1,46 @@ #pragma once -using namespace rack; - +namespace rack { +namespace app { struct DrawHelper { - DrawArgs args; - DrawHelper(DrawArgs &someArgs) { - args = someArgs; + NVGcontext* vg; + DrawHelper(NVGcontext* ctx) { + vg = ctx; } - void drawShape(std::vector<Vec> points, NVGColor fillColor) { - drawShape(points,fillColor,COLOR_COMPUTERSCARE_TRANSPARENT,0.f); + void drawShape(std::vector<Vec> points, NVGcolor fillColor) { + drawShape(points, fillColor, COLOR_COMPUTERSCARE_TRANSPARENT, 0.f); } - void drawShape(std::vector<Vec> points,NVGColor fillColor,NVGColor strokeColor) { - drawShape(points,fillColor,strokeColor,1.f); + void drawShape(std::vector<Vec> points, NVGcolor fillColor, NVGcolor strokeColor) { + drawShape(points, fillColor, strokeColor, 1.f); } - - - void drawShape(std::vector<Vec> points,NVGColor strokeColor,float thickness) { - drawShape(points,COLOR_COMPUTERSCARE_TRANSPARENT,strokeColor,thickness); - } - void drawShape(std::vector<Vec> points,NVGColor fillColor,NVGColor strokeColor,float thickness) { + + + void drawShape(std::vector<Vec> points, NVGcolor strokeColor, float thickness) { + drawShape(points, COLOR_COMPUTERSCARE_TRANSPARENT, strokeColor, thickness); + } + void drawShape(std::vector<Vec> points, NVGcolor fillColor, NVGcolor strokeColor, float thickness) { unsigned int n = points.size(); - nvgSave(args.vg); - nvgBeginPath(args.vg); - nvgStrokeStyle(args.vg,strokeColor); - nvgStrokeWidth(args.vg,thickness); - nvgFillStyle(fillColor); - nvgMoveTo(args.vg,points[0].x,points[0].y); - - for(int i = 1; i < n; i++) { - nvgLineTo(args.vg,points[i].x,points[i].y); + nvgSave(vg); + nvgBeginPath(vg); + nvgStrokeColor(vg, strokeColor); + nvgStrokeWidth(vg, thickness); + nvgFillColor(vg,fillColor); + nvgMoveTo(vg, points[0].x, points[0].y); + + for (unsigned int i = 1; i < n; i++) { + nvgLineTo(vg, points[i].x, points[i].y); } - nvgClosePath(args.vg); - nvgFill(args.vg); - if(thickness > 0) { - nvgStroke(args.vg); + nvgClosePath(vg); + nvgFill(vg); + if (thickness > 0) { + nvgStroke(vg); } - nvgRestore(args.vg); + nvgRestore(vg); } }; +} +} +\ No newline at end of file