# HG changeset patch # User Robert Tubb # Date 1412961204 -3600 # Node ID 851833072cf1750ed9062603499dbc38ba407acf # Parent 7e0a19a538d47d488d6dac9472a8fc0ed1adde8c panel has 8 sliders if needed. sliders should get set by midi input. diff -r 7e0a19a538d4 -r 851833072cf1 MessageOrganiser.h --- a/MessageOrganiser.h Fri Oct 10 13:20:55 2014 +0100 +++ b/MessageOrganiser.h Fri Oct 10 18:13:24 2014 +0100 @@ -206,7 +206,8 @@ typeListLog.push_back(int(XYPAD)); }else if ( (*elit)->getType() == SLIDER){ if(i >= mids.size()){ - cout << "ERROR ERROR: too many controls for mapping IDs" << endl; + + cout << "ERROR ERROR: too many controls for mapping IDs: " << mids.size() << endl; } ButtronSlider* theSlider = (ButtronSlider*)(*elit); @@ -670,21 +671,23 @@ if (!okToGetLeapMidi){ return; } - - // this fails - try pointer version? + Test *theTest = testController->getCurrentTestPtr(); if (theTest == NULL) return; - box3D->setValueAndScale(ctl_num, ctl_val); + + vector ci = theTest->getChangeableIndices(); vector mids = candidateSynth.getMappingIDForIndices(ci); if (ctl_num >= mids.size() || ctl_num < 0) return; candidateSynth.paramChangeCallback(mids[ctl_num], ctl_val); + setSlidersFromLeap(ctl_num, ctl_val); + vector evtData; evtData.push_back(mids[ctl_num]); // or just index? evtData.push_back(ctl_val); @@ -694,6 +697,10 @@ // get mapping ID for // setUIToParam(ctl_num, ctl_val); } + void setSlidersFromLeap(int i, int val){ + ButtronSlider* theSlider = (ButtronSlider*)panel->getSlider(i); + theSlider->setValueAndScale(val); + } }; diff -r 7e0a19a538d4 -r 851833072cf1 PDSynthWrapper.h --- a/PDSynthWrapper.h Fri Oct 10 13:20:55 2014 +0100 +++ b/PDSynthWrapper.h Fri Oct 10 18:13:24 2014 +0100 @@ -34,6 +34,9 @@ timbreParams.push_back(SynthParam(64,aCore,"Decay",sp)); timbreParams.push_back(SynthParam(64,aCore,"FiltTyp",sp)); timbreParams.push_back(SynthParam(64,aCore,"FiltFrq",sp)); + + timbreParams.push_back(SynthParam(64,aCore,"SPAM",sp)); + timbreParams.push_back(SynthParam(64,aCore,"FILTH",sp)); //timbreParams.push_back(SynthParam(64,aCore,"reson",sp)); if (timbreParams.size() != TOTAL_NUM_PARAMS){ diff -r 7e0a19a538d4 -r 851833072cf1 TestController.h --- a/TestController.h Fri Oct 10 13:20:55 2014 +0100 +++ b/TestController.h Fri Oct 10 18:13:24 2014 +0100 @@ -346,6 +346,7 @@ return panelType; }; string getTestTypeAdvanceWarning(){ + stringstream msg; msg << "Next test: " << endl << endl; @@ -358,6 +359,9 @@ if (panelType == SIMULTANEOUS && numDimensions == 3){ msg << "LEAP MOTION 3D -> -> -> -> ->" << endl; } + if (panelType == REVISITABLE && numDimensions > 3){ + msg << numDimensions << " DOF. The new frontier." << endl; + } if (isMemoryTest()){ msg << endl << "MEMORY TEST - ONE TARGET LISTEN ONLY!!" << endl; } @@ -491,84 +495,16 @@ vector::iterator currentTest; TestController(){ - generateSomeTests(1, 3, SIMULTANEOUS,1, false, true, true); +// int howManyTests, +// int numDimensions, +// controlPanelType panelType, +// int whichSpace, +// bool scored, +// bool aHint, +// bool aMemoryTest){ - generateSomeTests(4, 2, SIMULTANEOUS, 1, true); - - // 3 demo runs - generateSomeTests(1, 1, REVISITABLE, 1, false, false, false); - generateSomeTests(1, 2, SIMULTANEOUS, 1, false, false, true); - generateSomeTests(1, 3, SIMULTANEOUS,1, false, true, false); - // 3 practice runs + generateSomeTests(8, 8, REVISITABLE,1, false, false, false); - //---------------------- - // 1D set 1 - // 7 to 12 - generateSomeTests(2, 1, REVISITABLE, 1, true); - generateSomeTests(2, 1, REVISITABLE, 2, true); - generateSomeTests(2, 1, REVISITABLE, 4, true); - - - // 2D tests 1 - // 13 to 28 - generateSomeTests(4, 2, REVISITABLE, 1, true); - generateSomeTests(4, 2, SIMULTANEOUS, 1, true); - generateSomeTests(4, 2, SIMULTANEOUS, 2, true); - generateSomeTests(4, 2, REVISITABLE, 2, true); - - // 3D Tests 1 - // 29 to 44 - generateSomeTests(8,3,SIMULTANEOUS,1, true); - generateSomeTests(8,3,REVISITABLE,1, true); - - //---------------------- - - // 1D set 2 (WITH HINTS) - // 45 to 47 - generateSomeTests(1, 1, REVISITABLE, 1, true, true); - generateSomeTests(1, 1, REVISITABLE, 2, true, true); - generateSomeTests(1, 1, REVISITABLE, 4, true, true); - - // 2D set 2 (WITH HINTS) - // 48 to 51 - generateSomeTests(2, 2, SIMULTANEOUS, 1, true, true); - generateSomeTests(2, 2, REVISITABLE, 1, true, true); - - // 3D set 2 (WITH HINTS) - // 52 to 59 - generateSomeTests(4,3,REVISITABLE ,1, true, true); - generateSomeTests(4,3,SIMULTANEOUS,1, true, true); - - //---------------------- - - // NOW MEMORY TESTS! - // 1D memory test - generateSomeTests(2, 1, REVISITABLE, 1, true,false, true); - generateSomeTests(2, 1, REVISITABLE, 2, true,false, true); - generateSomeTests(2, 1, REVISITABLE, 4, true,false, true); - - // 2D set 3 - generateSomeTests(4, 2, SIMULTANEOUS, 1, true,false, true); - generateSomeTests(4, 2, REVISITABLE, 1, true,false, true); - generateSomeTests(4, 2, REVISITABLE, 2, true,false, true); - generateSomeTests(4, 2, SIMULTANEOUS, 2, true,false, true); - - - // 3D set 3 - // MEMORY - generateSomeTests(8,3,REVISITABLE ,1, true,false, true); - generateSomeTests(8,3,SIMULTANEOUS,1, true,false, true); - // 72 - //---------------------- - - - - //generate1DSpecificTests(); - - //generate2DSpecificTests(); - //generate3DSpecificTests(); - //generate2DRandomTests(); - //generate4DTests(); currentTest = testList.begin()-1; // dont do this scoreRunningTotal = 0; }; diff -r 7e0a19a538d4 -r 851833072cf1 TestController.mm --- a/TestController.mm Fri Oct 10 13:20:55 2014 +0100 +++ b/TestController.mm Fri Oct 10 18:13:24 2014 +0100 @@ -12,7 +12,7 @@ template -vector makeVector(T a1, T a2,T a3,T a4,T a5,T a6){ +vector makeVector(T a1, T a2,T a3,T a4,T a5,T a6, T a7, T a8){ vector vec; vec.push_back(a1); @@ -21,7 +21,8 @@ vec.push_back(a4); vec.push_back(a5); vec.push_back(a6); - + vec.push_back(a7); + vec.push_back(a8); return vec; } @@ -93,8 +94,8 @@ bool aMemoryTest){ int testNum = testList.size(); - vector adjustables = makeVector(false, false, false, false, false, false); - vector target = makeVector(40,64, 10, 74, 21, 80); // the default target + vector adjustables = makeVector(false, false, false, false, false, false, false, false); + vector 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){ @@ -105,39 +106,44 @@ }else if(numDimensions == 2){ if (whichSpace == 1){ - target = makeVector(64,64, 30, 55, 40, 43); + 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); + 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); + 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); + 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); + 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); + 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 + } } - // 4 ??? + + for(int i=0; i < howManyTests; i++){ char letter = char(testNum+65); diff -r 7e0a19a538d4 -r 851833072cf1 UI code/sliderPanel.h --- a/UI code/sliderPanel.h Fri Oct 10 13:20:55 2014 +0100 +++ b/UI code/sliderPanel.h Fri Oct 10 18:13:24 2014 +0100 @@ -71,7 +71,14 @@ //------------------------ vector generateControls(vector elemList, controlPanelType panelType); //------------------------ - + UIElement* getSlider(int index){ + if (index < subElements.size()){ + return subElements[index]; + }else{ + cout << "ERROR: index too big for sldiers" << endl; + return NULL; + } + }; // TODO override touch thing to make revisitable private: bool flashing; diff -r 7e0a19a538d4 -r 851833072cf1 UsernameAlertViewController.mm --- a/UsernameAlertViewController.mm Fri Oct 10 13:20:55 2014 +0100 +++ b/UsernameAlertViewController.mm Fri Oct 10 18:13:24 2014 +0100 @@ -48,7 +48,7 @@ eventLogger.setUsername([userName cStringUsingEncoding:NSASCIIStringEncoding]); // call some start func - ((testApp *)self.theOFAppRef)->startTheTests(); + ((testApp *)self.theOFAppRef)->usernameEntered(); // rememebr to change return func too! } diff -r 7e0a19a538d4 -r 851833072cf1 globalVariables.h --- a/globalVariables.h Fri Oct 10 13:20:55 2014 +0100 +++ b/globalVariables.h Fri Oct 10 18:13:24 2014 +0100 @@ -26,7 +26,7 @@ #define ALTERNATION_SPEED 180 // ms that target / candidate sounds play // globles -#define TOTAL_NUM_PARAMS 6 +#define TOTAL_NUM_PARAMS 8 #define TARGET_SCORE_CC_BAND 6 // number of cc vals per target band in dartboard typedef enum {TOUCH_DOWN, TOUCH_MOVED, TOUCH_UP} touchType; typedef enum {INTRO,QUESTIONNAIRE, HELP, TEST_IN_PROGRESS, SCORE_AND_HINT, COUNT_DOWN, READY_FOR_NEXT} interfaceType; diff -r 7e0a19a538d4 -r 851833072cf1 testApp.h --- a/testApp.h Fri Oct 10 13:20:55 2014 +0100 +++ b/testApp.h Fri Oct 10 18:13:24 2014 +0100 @@ -104,6 +104,7 @@ void showIntro(); void introHidden(); + void usernameEntered(); void startTheTests(); void showHelp(); void helpHidden(); diff -r 7e0a19a538d4 -r 851833072cf1 testApp.mm --- a/testApp.mm Fri Oct 10 13:20:55 2014 +0100 +++ b/testApp.mm Fri Oct 10 18:13:24 2014 +0100 @@ -371,9 +371,13 @@ eventLogger.consentGiven = true; eventLogger.logEvent(INTRO_CONSENTED); [usernameAlertViewController showUserNamePrompt]; - // after prompt goes it calls startTheTests() + // after prompt goes it calls usernameEntered() } +void testApp::usernameEntered(){ + // display a thing that gives us an option as to which stage to start + // EXPLORE, PERFORMANCE TRAINING, SEARCH +} //-------------------------------------------------------------- void testApp::startTheTests(){ eventLogger.logEvent(START_THE_TESTS); @@ -654,7 +658,7 @@ //-------------------------------------------------------------- void testApp::newMidiMessage(ofxMidiMessage& msg) { - // looks out for: 30 31 32 on channel 8 + // looks out for: 30 31 32... on channel 8 if(msg.channel == midiChannel && msg.status == MIDI_CONTROL_CHANGE){ int ctl_num = msg.control - 30; int ctl_val = msg.value; diff -r 7e0a19a538d4 -r 851833072cf1 trainingController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trainingController.h Fri Oct 10 18:13:24 2014 +0100 @@ -0,0 +1,39 @@ +// +// trainingController.h +// riftathon +// +// Created by Robert Tubb on 10/10/2014. +// +// this controls the sequence fo events, for both the slider UI and the VR one +// it sends and recieves messages from a wrapper, it doesn't care which interface you're using +// it only cares about the sequence of events + + +#ifndef __riftathon__trainingController__ +#define __riftathon__trainingController__ +#include "presetManager.h" +#include + +// include message types ( or use defines? ) these message type should be sendable by osc / midi +class TrainingController { + + vector presetSequence; + + // inputs + void soundSubmitted(); + void readyForNextSequence(); + + // outputs + void presentTheSequence(); + void showCountdown(); + void startSearch(); + + // + void makePresetSequence(int sequenceLength); + + Preset getRandomPreset(); + + + +}; +#endif /* defined(__riftathon__trainingController__) */ diff -r 7e0a19a538d4 -r 851833072cf1 trainingController.mm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trainingController.mm Fri Oct 10 18:13:24 2014 +0100 @@ -0,0 +1,9 @@ +// +// trainingController.mm +// riftathon +// +// Created by Robert Tubb on 10/10/2014. +// +// + +#include "trainingController.h"