rt300@0: // rt300@0: // TestController.mm rt300@0: // tweakathlon rt300@0: // rt300@0: // Created by Robert Tubb on 16/01/2014. rt300@0: // rt300@0: // rt300@0: rt300@0: #include "TestController.h" rt300@0: const int TestController::numDifferentTests = 80; rt300@0: const int TestController::totalNumTests = 80; rt300@0: rt300@0: rt300@0: vector > makeCombinations(){ rt300@0: // make all unordered pairs rt300@0: int N = TOTAL_NUM_PARAMS; rt300@0: rt300@0: vector > table; rt300@0: for(int n=0; n < N-1; n++){ rt300@0: rt300@0: vector c(6, false); rt300@0: for(int m=n+1; m > ap = makeCombinations(); rt300@0: // 4 tests for each rt300@0: int testsPerSpace = 2; rt300@0: int numTests = 2 * testsPerSpace * ap.size(); rt300@0: int testNum = testList.size(); rt300@0: panelType = REVISITABLE; rt300@0: for(int i=0;i adjustables = makeVector(false, false, false, false, false, false, false, false); rt300@2: vector target = makeVector(40,64, 10, 74, 21, 80,45 ,45 ); // the default target rt300@0: rt300@0: // big if - good spaces for each num of dimensions rt300@0: if(numDimensions == 1){ rt300@0: // def 64,64, 30, 55, 42, 43; rt300@0: rt300@0: adjustables[whichSpace-1] = true; rt300@0: rt300@0: }else if(numDimensions == 2){ rt300@0: rt300@0: if (whichSpace == 1){ rt300@2: target = makeVector(64,64, 30, 55, 40, 43, 0, 0); rt300@0: adjustables[0] = true; // pitch rt300@0: adjustables[3] = true; // decay rt300@0: }else if(whichSpace == 2){ rt300@0: rt300@0: rt300@2: target = makeVector(64,64, 0, 90, 20, 127, 0, 0); rt300@0: adjustables[3] = true; // decay rt300@0: adjustables[5] = true; // cutoff rt300@0: }else if(whichSpace == 3){ rt300@2: target = makeVector(56,64, 20, 64, 10, 90, 0, 0); rt300@0: rt300@0: adjustables[1] = true; // pulse rt300@0: adjustables[2] = true; // attack rt300@0: }else if(whichSpace == 4){ rt300@2: target = makeVector(64,64, 0, 55, 40, 43, 0, 0); rt300@0: adjustables[1] = true; // pulse rt300@0: adjustables[4] = true; // ftype rt300@0: } rt300@0: }else if(numDimensions == 3){ rt300@0: if(whichSpace == 1){ rt300@2: target = makeVector(64,64, 10, 64, 41, 43, 0, 0); rt300@0: adjustables[0] = true; // pitch rt300@0: adjustables[3] = true; // decay rt300@0: adjustables[5] = true; // cutoff rt300@0: }else if(whichSpace == 2){ rt300@2: target = makeVector(12,64, 10, 67, 41, 64, 0, 0); rt300@0: adjustables[1] = true; // pulse rt300@0: adjustables[2] = true; // attack rt300@0: adjustables[4] = true; // ftype rt300@0: } rt300@42: rt300@2: }else { rt300@2: for (int i = 0; i < numDimensions; i++){ rt300@2: adjustables[i] = true; // pitch rt300@2: } rt300@0: } rt300@2: rt300@2: rt300@0: rt300@0: for(int i=0; i < howManyTests; i++){ rt300@0: char letter = char(testNum+65); rt300@0: testList.push_back(Test(letter,20, panelType, numDimensions, adjustables, target, scored, aHint, aMemoryTest)); rt300@0: } rt300@0: } rt300@0: rt300@0: rt300@0: //------------------------------------------- rt300@0: void TestController::generate4DTests(){ rt300@0: // 4d seq - learnable?? rt300@0: }