rt300@17: // rt300@17: // expMessageOrganiser.h rt300@17: // riftathon rt300@17: // rt300@17: // Created by Robert Tubb on 21/10/2014. rt300@17: // rt300@17: // rt300@17: rt300@17: #ifndef __riftathon__expMessageOrganiser__ rt300@17: #define __riftathon__expMessageOrganiser__ rt300@17: rt300@17: #include rt300@17: #include "MessageOrganiser.h" rt300@17: #include "SequenceController.h" rt300@17: #include "globalVariables.h" rt300@17: rt300@17: extern ExplorePresetManager expPresetManager; rt300@17: rt300@17: class ExpMessageOrganiser : public MessageOrganiser { rt300@17: rt300@17: public: rt300@17: void init( PDSynthWrapper& cs, PDSynthWrapper& ts){ rt300@17: numParamsToUse = TOTAL_NUM_PARAMS; rt300@17: MessageOrganiser::init(cs,ts); rt300@17: rt300@17: rt300@17: } rt300@17: void setup(){ rt300@17: // do stuff like load first slot rt300@17: setupDefaultMapping(); rt300@17: expPresetManager.goToFirstEmptySlot(); rt300@17: showCurrentSlot(); rt300@17: rt300@17: rt300@17: } rt300@17: rt300@17: rt300@17: void setupDefaultMapping(){ rt300@17: vector mappingIDsForChangeableParams = getMappingIDsFromSynths(); rt300@17: rt300@17: controlPanelType cpt = REVISITABLE; rt300@17: vector elemList; rt300@17: for(int i = 0; i < numParamsToUse; i++){ rt300@17: elemList.push_back(SLIDER); rt300@17: } rt300@17: rt300@17: vector UIElemHandles = panel->generateControls(elemList, cpt); rt300@17: rt300@17: mapSlidersToParams(UIElemHandles, mappingIDsForChangeableParams); rt300@17: rt300@17: bottomPanel->show(); rt300@17: } rt300@17: rt300@17: vector getMappingIDsFromSynths(){ rt300@17: vector index; rt300@17: for(int i = 0; i < numParamsToUse; i++){ rt300@17: index.push_back(i); rt300@17: } rt300@17: vector mids = candidateSynth.getMappingIDForIndices(index); rt300@17: rt300@17: return mids; rt300@17: } rt300@17: rt300@17: void showCurrentSlot(){ rt300@17: currentPresetSlot = expPresetManager.getCurrentPresetSlot(); rt300@17: presetIconPanel->setTextAndImage(currentPresetSlot->name, currentPresetSlot->getImage()); rt300@17: } rt300@17: rt300@17: void loadPreset(string pname){ rt300@17: rt300@17: vector values = expPresetManager.recallPreset(pname); rt300@17: if (values.size()){ rt300@17: candidateSynth.setAllParams(values); rt300@17: setAllSlidersToValues(values); rt300@17: }else{ rt300@17: cout << "ERROR, no preset found" << endl; rt300@17: } rt300@17: } rt300@17: rt300@17: rt300@17: rt300@17: //----------------------------------------------------------------------------- rt300@17: rt300@17: void buttonPressCallback(int mappingID, int value){ rt300@17: rt300@17: rt300@17: if (mappingID == TRIGGER_CANDIDATE_ID){ rt300@17: triggerCandidateSound(); rt300@17: rt300@17: return; rt300@17: } rt300@17: if(mappingID == SAVE_PRESET_HIT){ rt300@17: rt300@17: expPresetManager.writeValuesToSlot(candidateSynth.getAllParamValues()); rt300@17: showCurrentSlot(); rt300@17: rt300@17: return; rt300@17: } rt300@17: rt300@17: } rt300@17: rt300@17: rt300@17: private: rt300@17: Preset* currentPresetSlot; rt300@17: int numParamsToUse; rt300@17: }; rt300@17: rt300@17: rt300@17: #endif /* defined(__riftathon__expMessageOrganiser__) */