computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

commit d03dca3400b48ee52137be73d11be7b991981016
parent a58211b2626457b391e8201e626d656753cd125b
Author: Adam Malone <1319733+freddyz@users.noreply.github.com>
Date:   Fri, 30 Aug 2019 16:39:21 -0500

try to parse quantizer for exact values

Diffstat:
Msrc/dtpulse.cpp | 30++++++++++++++++++++++++++++--
Msrc/dtpulse.hpp | 2++
Msrc/test.cpp | 4++--
3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/src/dtpulse.cpp b/src/dtpulse.cpp @@ -595,6 +595,24 @@ Parser::Parser(std::string expr) { Parser::Parser() { Parser(""); } +void Parser::setForQuantizer() { +printf("horseman\n"); + if(tokens.size() > 0) { +printf("pluto mcfeely\n"); + currentIndex=0; + printTokenVector(tokens); + printTokenVector(tokenStack); + tokenStack={}; + printTokenVector(tokens); + setForExactIntegers(tokens[0]); + printf("got there\n"); + printTokenVector(tokenStack); + if(!inError) { + currentIndex=0; + tokens=tokenStack; + } + } +} void Parser::setForLaundry() { //whitelists std::vector<std::string> laundryInterleaveAny = {"Letter","Integer","ChanceOfInteger","Digit","LeftParen","RightParen"}; @@ -1147,7 +1165,8 @@ std::vector<Token> tokenizeString(std::string input) { return stack; } void whoKnowsQuantize(std::string input) { - //Quantizer q = Quantizer("2212221",12,0); + Quantizer q = Quantizer(input,12,0); + q.print(); //float in = std::stof(input); //printf("closest: %f\n",q.quantize(in)); //printf("even : %f\n",q.quantizeEven(in)); @@ -1171,10 +1190,14 @@ std::vector<float> Quantizer::generateMappedValues() { std::vector<float> output; float sum = 0.f; float currentVal = 0.f; +printf("tokens size %i\n",scaleParser.tokens.size()); + scaleParser.setForQuantizer(); std::vector<Token> stack = scaleParser.tokens; + +printf("tokens size after %i\n",scaleParser.tokens.size()); output.push_back(0.f); for(unsigned int i = 0; i < stack.size(); i++) { - if(stack[i].type=="Digit") { + if(stack[i].type=="Digit" || stack[i].type=="Integer") { sum += std::stof(stack[i].value); currentVal = sum/fNumDivisions; output.push_back(currentVal); @@ -1221,4 +1244,7 @@ float Quantizer::quantizeEven(float input,int iTranspose) { float Quantizer::quantizeEven(float input) { return quantizeEven(input,0); } +void Quantizer::print() { + printFloatVector(mappedValues); +} diff --git a/src/dtpulse.hpp b/src/dtpulse.hpp @@ -43,6 +43,7 @@ class Parser { Token skipAndPeekToken(); void setForCookies(); void setForLaundry(); + void setForQuantizer(); void skipToken(); void setExactValue(Token t); void setForExactIntegers(Token t); @@ -131,6 +132,7 @@ class Quantizer { bool parseError; int numSteps; float fTranspose; + void print(); private: Parser scaleParser; float findClosestValue(float input, std::vector<float> allowedValues); diff --git a/src/test.cpp b/src/test.cpp @@ -44,9 +44,9 @@ int main(int argc, char** argv) } return 0; } -void printVector(std::vector <int> intVector) { +/*void printVector(std::vector <int> intVector) { for (std::vector<int>::const_iterator i = intVector.begin(); i != intVector.end(); ++i){ std::cout << *i << ' '; } std::cout << std::endl; -} +}*/