changeset 17:2a7320a8cbed

explore mode shows stuff, can go thru saving various presets.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Tue, 21 Oct 2014 18:58:25 +0100
parents 2da0350a4aa2
children 36cdb73691da
files ExpMessageOrganiser.h ExpMessageOrganiser.mm ExplorePresetManager.h MessageOrganiser.h TrainingMessageOrganiser.h presetManager.h presetManager.mm
diffstat 7 files changed, 144 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ExpMessageOrganiser.h	Tue Oct 21 18:58:25 2014 +0100
@@ -0,0 +1,109 @@
+//
+//  expMessageOrganiser.h
+//  riftathon
+//
+//  Created by Robert Tubb on 21/10/2014.
+//
+//
+
+#ifndef __riftathon__expMessageOrganiser__
+#define __riftathon__expMessageOrganiser__
+
+#include <iostream>
+#include "MessageOrganiser.h"
+#include "SequenceController.h"
+#include "globalVariables.h"
+
+extern ExplorePresetManager expPresetManager;
+
+class ExpMessageOrganiser : public MessageOrganiser {
+    
+public:
+    void init( PDSynthWrapper& cs, PDSynthWrapper& ts){
+        numParamsToUse = TOTAL_NUM_PARAMS;
+        MessageOrganiser::init(cs,ts);
+        
+        
+    }
+    void setup(){
+        // do stuff like load first slot
+        setupDefaultMapping();
+        expPresetManager.goToFirstEmptySlot();
+        showCurrentSlot();
+        
+  
+    }
+    
+    
+    void setupDefaultMapping(){
+        vector<int> mappingIDsForChangeableParams = getMappingIDsFromSynths();
+        
+        controlPanelType cpt = REVISITABLE;
+        vector<controllerType> elemList;
+        for(int i = 0; i < numParamsToUse; i++){
+            elemList.push_back(SLIDER);
+        }
+        
+        vector<UIElement*> UIElemHandles = panel->generateControls(elemList, cpt);
+        
+        mapSlidersToParams(UIElemHandles, mappingIDsForChangeableParams);
+        
+        bottomPanel->show();
+    }
+    
+    vector<int> getMappingIDsFromSynths(){
+        vector<int> index;
+        for(int i = 0; i < numParamsToUse; i++){
+            index.push_back(i);
+        }
+        vector<int> mids = candidateSynth.getMappingIDForIndices(index);
+        
+        return mids;
+    }
+    
+    void showCurrentSlot(){
+        currentPresetSlot =  expPresetManager.getCurrentPresetSlot();
+        presetIconPanel->setTextAndImage(currentPresetSlot->name, currentPresetSlot->getImage());
+    }
+    
+    void loadPreset(string pname){
+        
+        vector<int> values = expPresetManager.recallPreset(pname);
+        if (values.size()){
+            candidateSynth.setAllParams(values);
+            setAllSlidersToValues(values);
+        }else{
+            cout << "ERROR, no preset found" << endl;
+        }
+    }
+    
+    
+    
+    //-----------------------------------------------------------------------------
+    
+    void buttonPressCallback(int mappingID, int value){
+        
+        
+        if (mappingID == TRIGGER_CANDIDATE_ID){
+            triggerCandidateSound();
+            
+            return;
+        }
+        if(mappingID == SAVE_PRESET_HIT){
+
+            expPresetManager.writeValuesToSlot(candidateSynth.getAllParamValues());
+            showCurrentSlot();
+
+            return;
+        }
+        
+    }
+
+    
+private:
+    Preset* currentPresetSlot;
+    int numParamsToUse;
+};
+
+
+#endif /* defined(__riftathon__expMessageOrganiser__) */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ExpMessageOrganiser.mm	Tue Oct 21 18:58:25 2014 +0100
@@ -0,0 +1,9 @@
+//
+//  expMessageOrganiser.cpp
+//  riftathon
+//
+//  Created by Robert Tubb on 21/10/2014.
+//
+//
+
+#include "ExpMessageOrganiser.h"
--- a/ExplorePresetManager.h	Tue Oct 21 18:06:44 2014 +0100
+++ b/ExplorePresetManager.h	Tue Oct 21 18:58:25 2014 +0100
@@ -84,13 +84,30 @@
     }
     
 //----------------------------------------------------------------------------
-    void presentNextPresetSlot(){
+    void goToFirstEmptySlot(){
+        currentPresetSlot = filledSlots + 1;
+    }
+    bool writeValuesToSlot(vector<int> values){
+        getPresetAtIndex(currentPresetSlot)->setValues(values);
+        getPresetAtIndex(currentPresetSlot)->isFilled = true;
+
+        filledSlots++;
+        currentPresetSlot++;
+        if(filledSlots == MAX_PRESETS){
+            cout << "FINISHED EXP STAGE!" << endl;
+            return true;
+        }
+        return false;
+    }
+    Preset* getCurrentPresetSlot(){
         
+        return getPresetAtIndex(currentPresetSlot);
     }
     
 
 protected:
     int filledSlots;
+    int currentPresetSlot;
     string presetSlotFilename;
     
     vector<string> categories;
--- a/MessageOrganiser.h	Tue Oct 21 18:06:44 2014 +0100
+++ b/MessageOrganiser.h	Tue Oct 21 18:58:25 2014 +0100
@@ -73,6 +73,8 @@
         control->addHandler(callbackF, mappingID);
         currentMapping.insert(std::pair<int,UIElement*>(mappingID,control));
     }
+    
+    
     void setControlPanel(SliderPanel* p){ // a bit specific?? 
         panel = p;
         
--- a/TrainingMessageOrganiser.h	Tue Oct 21 18:06:44 2014 +0100
+++ b/TrainingMessageOrganiser.h	Tue Oct 21 18:58:25 2014 +0100
@@ -57,11 +57,7 @@
         
         return mids;
     }
-    
-    void setupNewTest(){
-        
-        
-    };
+
 
 //-----------------------------------------------------------------------
     void displayInstructions(Step s){
--- a/presetManager.h	Tue Oct 21 18:06:44 2014 +0100
+++ b/presetManager.h	Tue Oct 21 18:58:25 2014 +0100
@@ -135,6 +135,7 @@
     PresetManager();
     void savePreset(string name, vector<int> stuff);
     void generatePresetSlot(const string name, const string imagefn);
+    void saveFilledSlotToFile();
     vector<int> recallPreset(int presetID);
     vector<int> recallPreset(string name);
     void startLoadAll(); // load everything from the json file
--- a/presetManager.mm	Tue Oct 21 18:06:44 2014 +0100
+++ b/presetManager.mm	Tue Oct 21 18:58:25 2014 +0100
@@ -164,6 +164,10 @@
     
 }
 //----------------------------------------------cu-----------------------------
+void PresetManager::saveFilledSlotToFile(){
+    // uuuhhhh
+}
+//----------------------------------------------cu-----------------------------
 vector<int> PresetManager::recallPreset(string name){
     vector<Preset *>::iterator p;
     for(p = thePresets.begin(); p < thePresets.end(); p++){