view ExpMessageOrganiser.h @ 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
children 36cdb73691da
line wrap: on
line source
//
//  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__) */