view TestController.mm @ 44:d810aa9ca03a

times. cosmetic stuff
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Mon, 15 Dec 2014 17:33:41 +0000
parents 2bd658b44c2d
children
line wrap: on
line source
//
//  TestController.mm
//  tweakathlon
//
//  Created by Robert Tubb on 16/01/2014.
//
//

#include "TestController.h"
const int TestController::numDifferentTests = 80;
const int TestController::totalNumTests = 80;


vector<vector <bool> > makeCombinations(){
    // make all unordered pairs
    int N = TOTAL_NUM_PARAMS;
    
    vector<vector <bool> > table;
    for(int n=0; n < N-1; n++){
        
        vector<bool> c(6, false);
        for(int m=n+1; m<N; m++){
            
            // reset all to false
            for(int i=0; i<N; i++){
                c[i] = false;
            }
            
            c[n] = true;
            c[m] = true;
            
            table.push_back(c);
            
        }
        
    }
    return table;
}

//----------------------------------------------------------------------------------------

void TestController::generate2DRandomTests(){
    
    controlPanelType panelType;
    int numDimensions = 2;
    
    vector<vector <bool> > ap = makeCombinations();
    // 4 tests for each
    int testsPerSpace = 2;
    int numTests = 2 * testsPerSpace * ap.size();
    int testNum = testList.size();
    panelType = REVISITABLE;
    for(int i=0;i<numTests/2; i++){
        char letter = char(testNum+65);
        
        testList.push_back(Test(letter,20, panelType, numDimensions, ap[floor(i/testsPerSpace)]));
        testNum++;
    }
    panelType = SIMULTANEOUS;
    for(int i=numTests/2+1;i<numTests; i++){
        char letter = char(i+65);
        
        testList.push_back(Test(letter,20, panelType, numDimensions, ap[floor((i-numTests/2)/testsPerSpace)]));
        
    }
};
//------------------------------------------
// much better contruction!
void TestController::generateSomeTests(int howManyTests,
                                       int numDimensions,
                                       controlPanelType panelType,
                                       int whichSpace,
                                       bool scored,
                                       bool aHint,
                                       bool aMemoryTest){
    int testNum = testList.size();
    
    vector<bool> adjustables = makeVector(false, false, false, false, false, false, false, false);
    vector<int> target = makeVector(40,64, 10, 74, 21, 80,45 ,45 ); // the default target
    
    // big if - good spaces for each num of dimensions
    if(numDimensions == 1){
        // def 64,64, 30, 55, 42, 43;
        
        adjustables[whichSpace-1] = true;
        
    }else if(numDimensions == 2){
        
        if (whichSpace == 1){
            target = makeVector(64,64, 30, 55, 40, 43, 0, 0);
            adjustables[0] = true; // pitch
            adjustables[3] = true; // decay
        }else if(whichSpace == 2){

            
            target = makeVector(64,64, 0, 90, 20, 127, 0, 0);
            adjustables[3] = true; // decay
            adjustables[5] = true; // cutoff
        }else if(whichSpace == 3){
            target = makeVector(56,64, 20, 64, 10, 90, 0, 0);
           
            adjustables[1] = true; // pulse
            adjustables[2] = true; // attack
        }else if(whichSpace == 4){
            target = makeVector(64,64, 0, 55, 40, 43, 0, 0);
            adjustables[1] = true; // pulse
            adjustables[4] = true; // ftype
        }
    }else if(numDimensions == 3){
        if(whichSpace == 1){
            target = makeVector(64,64, 10, 64, 41, 43, 0, 0);
            adjustables[0] = true; // pitch
            adjustables[3] = true; // decay
            adjustables[5] = true; // cutoff
        }else if(whichSpace == 2){
            target = makeVector(12,64, 10, 67, 41, 64, 0, 0);
            adjustables[1] = true; // pulse
            adjustables[2] = true; // attack
            adjustables[4] = true; // ftype
        }

    }else {
        for (int i = 0; i < numDimensions; i++){
            adjustables[i] = true; // pitch
        }
    }
    
    
    
    for(int i=0; i < howManyTests; i++){
        char letter = char(testNum+65);
        testList.push_back(Test(letter,20, panelType, numDimensions, adjustables, target, scored, aHint, aMemoryTest));
    }
}


//-------------------------------------------
void TestController::generate4DTests(){
    // 4d seq  - learnable??
}