rt300@17: // rt300@17: // expMessageOrganiser.cpp rt300@17: // riftathon rt300@17: // rt300@17: // Created by Robert Tubb on 21/10/2014. rt300@17: // rt300@17: // rt300@17: rt300@17: #include "ExpMessageOrganiser.h" rt300@18: rt300@18: void ExpMessageOrganiser::init( PDSynthWrapper& cs, PDSynthWrapper& ts){ rt300@18: numParamsToUse = TOTAL_NUM_PARAMS; rt300@18: MessageOrganiser::init(cs,ts); rt300@18: rt300@27: } rt300@27: void ExpMessageOrganiser::setup(controlPanelType whichInterfaceAreWeUsing){ rt300@27: rt300@18: rt300@27: setupDefaultMapping(whichInterfaceAreWeUsing); rt300@18: expPresetManager.goToFirstEmptySlot(); rt300@44: rt300@21: instructionPanel->setLabel("Find a sound\n that expresses:"); rt300@21: instructionPanel->show(); rt300@27: bottomPanel->show(); rt300@42: bottomPanel->showAllElements(); rt300@50: nextButt->hide(); rt300@28: controlPanel->show(); rt300@28: controlPanel->showValueIndicators(true); rt300@44: if (whichInterfaceAreWeUsing == LEAP6DOF){ rt300@44: distanceSlider->show(); rt300@46: }else{ rt300@46: distanceSlider->hide(); rt300@44: } rt300@28: rt300@23: okToGetMidi = true; rt300@44: controlPanel->setActive(true); rt300@44: showCurrentSlot(); rt300@18: } rt300@18: rt300@18: rt300@18: vector ExpMessageOrganiser::getMappingIDsFromSynths(){ rt300@18: vector index; rt300@18: for(int i = 0; i < numParamsToUse; i++){ rt300@18: index.push_back(i); rt300@18: } rt300@18: vector mids = candidateSynth.getMappingIDForIndices(index); rt300@18: rt300@18: return mids; rt300@18: } rt300@18: rt300@18: void ExpMessageOrganiser::showCurrentSlot(){ rt300@19: rt300@19: if(expPresetManager.getCurrentPresetSlot() == NULL){ rt300@19: // hide next button rt300@50: nextButt->hide(); rt300@19: return; rt300@19: } rt300@19: presetIconPanel->setTextAndImage(expPresetManager.getCurrentPresetSlot()->name, expPresetManager.getCurrentPresetSlot()->getImage(),expPresetManager.getCurrentPresetSlot()->isFilled); rt300@28: rt300@44: //controlPanel->setIndicatorTexture(expPresetManager.getCurrentPresetSlot()->getImage()); rt300@28: rt300@19: if(expPresetManager.getCurrentPresetSlot()->isFilled){ rt300@50: // was already saved, show it rt300@19: loadPreset(expPresetManager.getCurrentPresetSlot()->name); rt300@44: controlPanel->setAndShowHint(expPresetManager.getCurrentPresetSlot()->getValues(), expPresetManager.getCurrentPresetSlot()->getImage()); rt300@44: targetSynth.setAllParams(expPresetManager.getCurrentPresetSlot()->getValues()); rt300@50: nextButt->show(); rt300@19: }else{ rt300@50: // nothing saved yet show default slidervals rt300@19: loadDefaultSound(); rt300@50: nextButt->hide(); rt300@44: controlPanel->showHint(false); rt300@19: } rt300@18: } rt300@18: rt300@18: void ExpMessageOrganiser::loadPreset(string pname){ rt300@18: rt300@18: vector values = expPresetManager.getPresetValuesForName(pname); rt300@18: if (values.size()){ rt300@18: candidateSynth.setAllParams(values); rt300@18: setAllSlidersToValues(values); rt300@18: }else{ rt300@18: cout << "ERROR, no preset found" << endl; rt300@18: } rt300@18: } rt300@19: void ExpMessageOrganiser::loadDefaultSound(){ rt300@19: vector values; rt300@19: for(int i = 0; i < TOTAL_NUM_PARAMS; i++){ rt300@19: values.push_back(0); rt300@19: } rt300@18: rt300@19: candidateSynth.setAllParams(values); rt300@19: setAllSlidersToValues(values); rt300@19: rt300@19: } rt300@18: rt300@18: rt300@18: //----------------------------------------------------------------------------- rt300@18: rt300@18: void ExpMessageOrganiser::buttonPressCallback(int mappingID, int value){ rt300@18: rt300@18: rt300@18: if (mappingID == TRIGGER_CANDIDATE_ID){ rt300@18: triggerCandidateSound(); rt300@18: rt300@18: return; rt300@18: } rt300@18: if(mappingID == SAVE_PRESET_HIT){ rt300@18: rt300@19: bool finished = expPresetManager.writeValuesToSlot(candidateSynth.getAllParamValues()); rt300@19: if(finished){ rt300@42: instructionPanel->setText("ALL PRESETS MADE\n Please go to menu and select TRAIN stage"); rt300@32: instructionPanel->show(); rt300@38: bottomPanel->show(); rt300@42: bottomPanel->showOnlyElementNamed("MENU"); rt300@43: okToGetMidi = false; rt300@28: controlPanel->hide(); rt300@28: rt300@19: }else{ rt300@19: showCurrentSlot(); rt300@19: } rt300@50: nextButt->show(); rt300@18: return; rt300@18: } rt300@18: rt300@44: if(mappingID == NEXT_PRESET_HIT){ rt300@44: rt300@44: expPresetManager.nextSlot(); rt300@44: showCurrentSlot(); rt300@44: rt300@44: rt300@44: return; rt300@44: } rt300@44: rt300@23: } rt300@23: