Mercurial > hg > tweakathon2ios
diff MessageOrganiser.h @ 18:36cdb73691da
PIMPL speed compile?
eventlogger now just saves as it goes
more refactoring
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Wed, 22 Oct 2014 15:00:14 +0100 |
parents | 2a7320a8cbed |
children | 5cf2b80909fc |
line wrap: on
line diff
--- a/MessageOrganiser.h Tue Oct 21 18:58:25 2014 +0100 +++ b/MessageOrganiser.h Wed Oct 22 15:00:14 2014 +0100 @@ -60,52 +60,16 @@ class MessageOrganiser { public: - void init(PDSynthWrapper& cs, PDSynthWrapper& ts){ - candidateSynth = cs; - targetSynth = ts; - - onlyChangeCandidateOnTrigger = true; - } - // could template for ui element type?? - void mapButtonToAction(UIElement* control, int mappingID){ - UICallbackFunction callbackF; - callbackF = boost::bind(&MessageOrganiser::buttonPressCallback, this, _1,_2); - control->addHandler(callbackF, mappingID); - currentMapping.insert(std::pair<int,UIElement*>(mappingID,control)); - } + void init(PDSynthWrapper& cs, PDSynthWrapper& ts); // could template for ui element type?? + void mapButtonToAction(UIElement* control, int mappingID); - - void setControlPanel(SliderPanel* p){ // a bit specific?? - panel = p; - - }; - void setBottomPanel(ButtonPanel * ntb){ - bottomPanel = ntb; - }; - - - void setIconPanel(IconPanel * ip){ - presetIconPanel = ip; - } - void setInstructionPanel(TextPanel * ip){ - instructionPanel = ip; - instructionPanel->show(); - } - - + void setControlPanel(SliderPanel* p); + void setBottomPanel(ButtonPanel * ntb); + void setIconPanel(IconPanel * ip); + void setInstructionPanel(TextPanel * ip); //----------------------------------------------------------------------------- - void hideMyPanels(){ - presetIconPanel->hide(); - instructionPanel->hide(); - bottomPanel->hide(); - panel->hide(); - } - void showMyPanels(){ - presetIconPanel->show(); - instructionPanel->show(); - bottomPanel->show(); - panel->show(); - } + void hideMyPanels(); + void showMyPanels(); protected: PDSynthWrapper candidateSynth; @@ -119,148 +83,24 @@ map<int,UIElement*> currentMapping; // could get more sophisticated if not 1-1 ? - void triggerCandidateSound(){ - // log event - sendSynthValuesAgain(); - candidateSynth.trigger(); - eventLogger.logEvent(CANDIDATE_PLAYED); - // flash panel? - panel->flash(); - } + void triggerCandidateSound(); + void paramChangeCallback(int mappingID, int value); + void sendSynthValuesAgain(); + void setAllSlidersToValues(vector<int> values); - void paramChangeCallback(int mappingID, int value){ - - if(onlyChangeCandidateOnTrigger){ - candidateSynth.paramChangeCallback(mappingID, value, false); - }else{ - candidateSynth.paramChangeCallback(mappingID, value, true); - } - - vector<int> evtData; - evtData.push_back(mappingID); // or just index? - evtData.push_back(value); - - eventLogger.logEvent(CANDIDATE_PARAM_ADJUSTED, evtData); - }; - - void sendSynthValuesAgain(){ - candidateSynth.sendAllParams(); - targetSynth.sendAllParams(); - }; - - - void setAllSlidersToValues(vector<int> values){ - for(int i = 0; i < values.size(); i++){ - setUIToParam(i, values[i]); - } - } // we want to set UI object - void setUIToParam(int index, int value){ // e.g. from MIDI incoming, will handle both box and sliders... - // theXY->setValueAndScale(candidateSynth.getParamValueForID(mids[i]), candidateSynth.getParamValueForID(mids[i+1])); - UIElement* elem; - // get the element - if(panel->subElements.size() <= index){ - cout << "ERROR: index out of range for num sliders" << endl; - return; - } - elem = panel->subElements[index]; - if ( elem->getType() == SLIDER){ - ButtronSlider* theSlider = (ButtronSlider*)elem; - theSlider->setValueAndScale(value); - - }else{ - cout << "ERROR ERROR: ui type not handled by setUIToParam!" << endl; - } - - }; - - - void mapControlToParam(UIElement* control, int mappingID){ - - UICallbackFunction callbackF; - callbackF = boost::bind(&MessageOrganiser::paramChangeCallback, this, _1,_2); - control->addHandler(callbackF, mappingID); - // put in our map so we can send param values to gui - currentMapping.insert(std::pair<int,UIElement*>(mappingID,control)); - cout << " Mapped control to ID: " << mappingID << "Name: " << candidateSynth.getNameForMappingID(mappingID) << endl; - control->setLabel(candidateSynth.getNameForMappingID(mappingID)); - }; - + void setUIToParam(int index, int value); + void mapControlToParam(UIElement* control, int mappingID); //----------------------------------------------------------------------------- - void mapSlidersToParams(vector<UIElement*> elems, vector<int> mids){ - - vector<UIElement*>::iterator elit; - vector<int> typeListLog; - int i = 0; - for(elit=elems.begin(); elit<elems.end();elit++){ - if ( (*elit)->getType() == SLIDER){ - if(i >= mids.size()){ - - cout << "ERROR ERROR: too many controls for mapping IDs: " << mids.size() << endl; - } - - ButtronSlider* theSlider = (ButtronSlider*)(*elit); - mapControlToParam((*elit), mids[i]); - theSlider->setValueAndScale(candidateSynth.getParamValueForID(mids[i])); - cout << "Hint Value " << targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i])) << endl; - theSlider->setHintValue(targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i]))); - i++; - typeListLog.push_back(int(SLIDER)); - - }else{ - cout << "ERROR ERROR: ui type not handled my mapping function !" << endl; - } - } - - eventLogger.logEvent(CONTROL_LIST,typeListLog); - }; + void mapSlidersToParams(vector<UIElement*> elems, vector<int> mids); + void mapXYToParams(ButtronXY* control, int mappingIDX, int mappingIDY); - void mapXYToParams(ButtronXY* control, int mappingIDX, int mappingIDY){ - UICallbackFunction callback; - - callback = boost::bind(&MessageOrganiser::paramChangeCallback, this, _1,_2); - - control->addHandler(callback, mappingIDX, mappingIDY); - - // put in our map so we can send param values to gui - //currentMapping.insert(std::pair<int,UIElement*>(mappingID,control)); - - - cout << " Mapped control to XID: " << mappingIDX << "Name: " << candidateSynth.getNameForMappingID(mappingIDX) << endl; - cout << " Mapped control to YID: " << mappingIDY << "Name: " << candidateSynth.getNameForMappingID(mappingIDY) << endl; - control->setLabel(candidateSynth.getNameForMappingID(mappingIDX), candidateSynth.getNameForMappingID(mappingIDY)); - - }; - + void mapControlToParam(UIElement* control, string paramName); + virtual void buttonPressCallback(int mappingID, int value); - void mapControlToParam(UIElement* control, string paramName){ - // get mapping ID from synth - int mappingID = candidateSynth.getMappingIDForName(paramName); - mapControlToParam(control, mappingID); - control->setLabel(paramName); - }; - - virtual void buttonPressCallback(int mappingID, int value){ - - }; - - - void setSlidersToTarget(){ - // this will actually show sliders with target vals - for "memorisation" purposes mwa heh heh - // get target values - // set ui - vector<int> vals = targetSynth.getAllParamValues(); - for(int i=1; i < vals.size(); i++){ - setUIToParam(i, vals[i]); - } - } - void setSlidersToDefault(){ - for(int i=1; i < targetSynth.getNumParams(); i++){ - setUIToParam(i, 0); - } - } - + void setSlidersToTarget(); + void setSlidersToDefault(); bool onlyChangeCandidateOnTrigger; };