computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit dc4c3278587086ee638bbfe399a210eb45f74946
parent 12ca3ac3d871017edf5ed88ddb96c865d4c7f08a
Author: Adam Malone <1319733+freddyz@users.noreply.github.com>
Date:   Fri,  9 Aug 2019 15:35:37 -0500

polyphonic eoc output for soup, broken dtpulse with attempt to make new LaundrySoup constructor that accepts tokens

Diffstat:
Msrc/ComputerscareLaundrySoup.cpp | 6+++---
Msrc/dtpulse.cpp | 14++++++++------
2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/src/ComputerscareLaundrySoup.cpp b/src/ComputerscareLaundrySoup.cpp @@ -286,17 +286,17 @@ void ComputerscareLaundrySoup::process(const ProcessArgs &args) { } } } + //this always assumes 16 channel poly output. It is a waste if the user doesnt want poly outputs[TRG_OUTPUT+i].setChannels(16); outputs[FIRST_STEP_OUTPUT+i].setChannels(16); if (inputs[CLOCK_INPUT + i].isConnected()) { for(int ch = 0; ch < 16; ch++) { - outputs[TRG_OUTPUT + i].setVoltage((currentTriggerIsHigh && activeStep[i]) ? 10.0f : 0.0f); - outputs[FIRST_STEP_OUTPUT + i].setVoltage((currentTriggerIsHigh && atFirstStep) ? 10.f : 0.0f); + outputs[TRG_OUTPUT + i].setVoltage((currentTriggerIsHigh && activePolyStep[i][ch]) ? 10.0f : 0.0f); + outputs[FIRST_STEP_OUTPUT + i].setVoltage((currentTriggerIsHigh && atFirstStepPoly[ch]) ? 10.f : 0.0f); } } else { - for(int ch = 0; ch < 16; ch++) { outputs[TRG_OUTPUT + i].setVoltage((globalGateIn && activePolyStep[i][ch]) ? 10.0f : 0.0f,ch); outputs[FIRST_STEP_OUTPUT + i].setVoltage((globalGateIn && atFirstStepPoly[ch]) ? 10.f : 0.0f,ch); diff --git a/src/dtpulse.cpp b/src/dtpulse.cpp @@ -421,31 +421,33 @@ LaundrySoupSequence::LaundrySoupSequence() { } LaundrySoupSequence::LaundrySoupSequence(std::string expr) { std::vector<Token> defaultStack; + std::vector<Token> calculatedTokens; defaultStack.push_back(Token("Error", "error", -1)); if (expr != "") { Parser p = Parser(expr); p.setForLaundry(); if (p.inError || !p.tokenStack.size()) { - tokenStack = defaultStack; + calculatedTokens = defaultStack; inError = true; } else { - tokenStack = p.tokenStack; + calculatedTokens = p.tokenStack; inError = false; } } else { - tokenStack = defaultStack; + calculatedTokens = defaultStack; inError = false; } + LaundrySoupSequence(calculatedTokens); +} +LaundrySoupSequence::LaundrySoupSequence(std::vector<Token> tokens) { + tokenStack = tokens; pulseSequence = makePulseSequence(tokenStack); workingPulseSequence = duplicateIntVector(pulseSequence); numSteps = (int) pulseSequence.size(); readHead = -1; } -LaundrySoupSequence::LaundrySoupSequence(std::vector<Token> tokens) { - -} void LaundrySoupSequence::print() { printf(" Laundry tokenStack:\n"); printTokenVector(tokenStack);