computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit a68fec192ead8211f9fbf75be9213ed55b2dc350
parent 8efe67ac7c62f12b9b7428fb4cd9c67acf6305c2
Author: Adam M <aemalone@gmail.com>
Date:   Sun,  5 Apr 2020 23:53:40 -0500

Default text field value for ohpeas oh peas.  Boly puttons use PolyModule

Diffstat:
Msrc/ComputerscareBolyPuttons.cpp | 38+++++++++++++++++++++++++++-----------
Msrc/ComputerscareHorseADoodleDoo.cpp | 16+++++++++++++---
Msrc/ComputerscareOhPeas.cpp | 7+++----
3 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/src/ComputerscareBolyPuttons.cpp b/src/ComputerscareBolyPuttons.cpp @@ -4,8 +4,7 @@ struct ComputerscareBolyPuttons; const int numToggles = 16; -struct ComputerscareBolyPuttons : Module { - int counter = 0; +struct ComputerscareBolyPuttons : ComputerscarePolyModule { int outputRangeEnum = 0; bool momentary = false; bool radioMode = false; @@ -17,7 +16,8 @@ struct ComputerscareBolyPuttons : Module { ComputerscareSVGPanel* panelRef; enum ParamIds { TOGGLE, - NUM_PARAMS = TOGGLE + numToggles + POLY_CHANNELS=TOGGLE+numToggles, + NUM_PARAMS }; enum InputIds { @@ -43,6 +43,7 @@ struct ComputerscareBolyPuttons : Module { //configParam(KNOB + i, 0.0f, 10.0f, 0.0f); configParam(TOGGLE + i, 0.f, 1.f, 0.f, "Channel " + std::to_string(i + 1)); } + configParam(POLY_CHANNELS, 0.f, 16.f, 16.f, "Poly Channels"); outputRanges[0][0] = 0.f; outputRanges[0][1] = 10.f; @@ -110,19 +111,26 @@ struct ComputerscareBolyPuttons : Module { } } } + void checkPoly() override { + int aChannels=inputs[A_INPUT].getChannels(); + int bChannels=inputs[B_INPUT].getChannels(); + int knobSetting = params[POLY_CHANNELS].getValue(); + if(knobSetting ==0) { + polyChannels = (aChannels==0 && bChannels ==0) ? 16 : std::max(aChannels,bChannels); + } + else { + polyChannels = knobSetting; + } + outputs[POLY_OUTPUT].setChannels(polyChannels); + } void process(const ProcessArgs &args) override { + ComputerscarePolyModule::checkCounter(); + float min = outputRanges[outputRangeEnum][0]; float max = outputRanges[outputRangeEnum][1]; int numAChannels = inputs[A_INPUT].getChannels(); int numBChannels = inputs[B_INPUT].getChannels(); - counter++; - if (counter > 5012) { - //printf("%f \n",random::uniform()); - counter = 0; - //rect4032 - //south facing high wall - } - outputs[POLY_OUTPUT].setChannels(16); + //if (outputs[SCALED_OUTPUT + i].isConnected() || outputs[QUANTIZED_OUTPUT + i].isConnected()) { // numInputChannels = inputs[CHANNEL_INPUT + i].getChannels(); @@ -145,6 +153,7 @@ struct ComputerscareBolyPuttons : Module { } } + //toggle mode else { if (radioMode) { checkForParamChanges(); @@ -166,6 +175,7 @@ struct ComputerscareBolyPuttons : Module { }; + struct ComputerscareBolyPuttonsWidget : ModuleWidget { ComputerscareBolyPuttonsWidget(ComputerscareBolyPuttons *module) { @@ -179,6 +189,10 @@ struct ComputerscareBolyPuttonsWidget : ModuleWidget { addChild(panel); } + + channelWidget = new PolyOutputChannelsWidget(Vec(22,23),module,ComputerscareBolyPuttons::POLY_CHANNELS); + addChild(channelWidget); + float xx; float yy; for (int i = 0; i < numToggles; i++) { @@ -213,6 +227,8 @@ struct ComputerscareBolyPuttonsWidget : ModuleWidget { } void appendContextMenu(Menu *menu) override; + + PolyOutputChannelsWidget* channelWidget; ComputerscareBolyPuttons *bolyPuttons; SmallLetterDisplay* smallLetterDisplay; }; diff --git a/src/ComputerscareHorseADoodleDoo.cpp b/src/ComputerscareHorseADoodleDoo.cpp @@ -280,11 +280,13 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { } } void process(const ProcessArgs &args) override { - counter++; + ComputerscarePolyModule::checkCounter(); + + /*counter++; if (counter > 601) { checkKnobChanges(); counter = 0; - } + }*/ bool currentClock[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; @@ -302,6 +304,11 @@ struct ComputerscareHorseADoodleDoo : ComputerscarePolyModule { } } + void checkPoly() override { + checkKnobChanges(); + //polyChannels = params[POLY_CHANNELS].getValue(); + //outputs[POLY_OUTPUT].setChannels(polyChannels); + } }; struct NumStepsOverKnobDisplay : SmallLetterDisplay @@ -460,7 +467,9 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { addInputBlock("Length", 0, 150, module, 2, ComputerscareHorseADoodleDoo::STEPS_CV, 1); addInputBlock("Density", 0, 200, module, 4, ComputerscareHorseADoodleDoo::DENSITY_CV, 0); - addInputBlock("Polyphony", 0, 240, module, ComputerscareHorseADoodleDoo::POLY_KNOB, -1, 2); + channelWidget = new PolyOutputChannelsWidget(Vec(1,250),module,ComputerscareHorseADoodleDoo::POLY_KNOB); + + addChild(channelWidget); horseDisplay = new HorseDisplay(); horseDisplay->module = module; @@ -530,6 +539,7 @@ struct ComputerscareHorseADoodleDooWidget : ModuleWidget { addChild(smallLetterDisplay); } + PolyOutputChannelsWidget* channelWidget; HorseDisplay* horseDisplay; NumStepsOverKnobDisplay* numStepsKnob; InputBlockBackground* background; diff --git a/src/ComputerscareOhPeas.cpp b/src/ComputerscareOhPeas.cpp @@ -1,3 +1,4 @@ + #include "plugin.hpp" #include "Computerscare.hpp" @@ -54,7 +55,7 @@ struct ComputerscareOhPeas : Module int numDivisions = 12; int globalTranspose = 0; bool evenQuantizeMode = true; - bool manualSet=false; + bool manualSet=true; int checkCounter=9999; int checkPeriod=1000; @@ -230,6 +231,7 @@ struct PeasTF2 : ComputerscareTextField { module->currentFormula = text.c_str(); } + } else { text="2212221"; @@ -370,11 +372,8 @@ struct ComputerscareOhPeasWidget : ModuleWidget ModuleWidget::fromJson(rootJ); // legacy - json_t *textJ = json_object_get(rootJ, "sequences"); if (textJ) { - DEBUG("we got legacy"); - //textFieldTemp->text = json_string_value(textJ); peas->currentFormula=json_string_value(textJ); peas->manualSet=true; }