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__) */
--- /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"