Mercurial > hg > tweakathon2ios
changeset 2:851833072cf1
panel has 8 sliders if needed.
sliders should get set by midi input.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Fri, 10 Oct 2014 18:13:24 +0100 |
parents | 7e0a19a538d4 |
children | c50de2d84732 |
files | MessageOrganiser.h PDSynthWrapper.h TestController.h TestController.mm UI code/sliderPanel.h UsernameAlertViewController.mm globalVariables.h testApp.h testApp.mm trainingController.h trainingController.mm |
diffstat | 11 files changed, 108 insertions(+), 96 deletions(-) [+] |
line wrap: on
line diff
--- 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<int> ci = theTest->getChangeableIndices(); vector<int> 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<int> 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); + } };
--- 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){
--- 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<Test>::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; };
--- 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 <typename T> -vector<T> makeVector(T a1, T a2,T a3,T a4,T a5,T a6){ +vector<T> makeVector(T a1, T a2,T a3,T a4,T a5,T a6, T a7, T a8){ vector<T> 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<bool> adjustables = makeVector(false, false, false, false, false, false); - vector<int> target = makeVector(40,64, 10, 74, 21, 80); // the default target + 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){ @@ -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);
--- 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<UIElement*> generateControls(vector<controllerType> 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;
--- 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! }
--- 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;
--- 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();
--- 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;
--- /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 <iostream> + +// include message types ( or use defines? ) these message type should be sendable by osc / midi +class TrainingController { + + vector<Preset> presetSequence; + + // inputs + void soundSubmitted(); + void readyForNextSequence(); + + // outputs + void presentTheSequence(); + void showCountdown(); + void startSearch(); + + // + void makePresetSequence(int sequenceLength); + + Preset getRandomPreset(); + + + +}; +#endif /* defined(__riftathon__trainingController__) */