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:
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;
-}
+}*/