rt300@0: // rt300@0: // MessageOrganiser.h rt300@0: // tweakathlon rt300@0: // rt300@0: // Created by Robert Tubb on 10/12/2013. rt300@0: // rt300@0: // This object handles the mapping from GUI to params rt300@0: // rt300@0: // and sends their messages to PD and eventLogger rt300@0: #pragma once rt300@0: #include "eventLogger.h" rt300@0: #include rt300@0: #include rt300@0: #include rt300@0: #include "boost/bind.hpp" rt300@0: #include "boost/function.hpp" rt300@0: rt300@0: #include rt300@0: #include rt300@0: #include rt300@0: #include rt300@0: #include "TestController.h" rt300@0: #include "timeController.h" rt300@0: #include "PDSynthWrapper.h" rt300@0: #include "ofxTimer.h" rt300@0: #include "sliderPanel.h" rt300@0: //#include "testApp.h" rt300@0: #include "targetSymbol.h" rt300@0: #include "3Dbox.h" rt300@24: #include "6Dbox.h" rt300@0: #include "TextPanel.h" rt300@0: #include "CountdownText.h" rt300@0: #include "buttonPanel.h" rt300@6: #include "ExplorePresetManager.h" rt300@16: #include "IconPanel.h" rt300@6: rt300@6: // should be called TIMED TEST MESSAGE ORGANISER ? rt300@0: rt300@0: // event logger needs to know rt300@0: // which controls were showing in what mode rt300@0: // which controls were mapped to what param rt300@0: // what was the target sound params rt300@0: // all the updates of control movements, submit, quit etc rt300@0: rt300@0: // this is the bit that handles mapping from UI elements to synth i.e testApp DOESNT DO THAT rt300@0: rt300@0: // has links to panel sliders can show hide them rt300@0: rt300@0: // controls flow of stuff rt300@0: rt300@0: //--------------------------------------------------------------------- rt300@0: //--------------------------------------------------------------------- rt300@0: extern TimeController timeController; rt300@0: rt300@0: extern EventLogger eventLogger; rt300@0: rt300@6: extern ExplorePresetManager expPresetManager; rt300@4: rt300@11: //typedef boost::function AppModeChangeFunction; rt300@0: rt300@0: class MessageOrganiser { rt300@8: rt300@8: public: rt300@18: void init(PDSynthWrapper& cs, PDSynthWrapper& ts); // could template for ui element type?? rt300@18: void mapButtonToAction(UIElement* control, int mappingID); rt300@27: void setupDefaultMapping(controlPanelType whichInterfaceAreWeUsing); rt300@18: void setControlPanel(SliderPanel* p); rt300@18: void setBottomPanel(ButtonPanel * ntb); rt300@18: void setIconPanel(IconPanel * ip); rt300@43: void setSkipButton(Buttron* b); rt300@18: void setInstructionPanel(TextPanel * ip); rt300@32: void setSeqNumPanel(TextPanel * snp); rt300@32: void setScoreNumPanel(TextPanel * snp); rt300@38: void setDistanceSlider(ButtronSlider * s); rt300@43: void setMiddlePanel(TextPanel* tp); rt300@16: //----------------------------------------------------------------------------- rt300@18: void hideMyPanels(); rt300@18: void showMyPanels(); rt300@32: void midiFromLeap(int ctl_num, int ctl_val); rt300@37: void setPanelType(controlPanelType p); rt300@38: void update(); rt300@48: virtual void reset(){}; rt300@8: protected: rt300@8: rt300@8: PDSynthWrapper candidateSynth; rt300@0: PDSynthWrapper targetSynth; rt300@9: ButtonPanel* bottomPanel; // shows during test : play buttons and submit rt300@27: SliderPanel* controlPanel; rt300@16: rt300@16: IconPanel* presetIconPanel; rt300@16: TextPanel* instructionPanel; rt300@32: TextPanel * seqNumPanel; rt300@32: TextPanel * scoreNumPanel; rt300@43: TextPanel* middlePanel; rt300@9: map currentMapping; // could get more sophisticated if not 1-1 ? rt300@8: rt300@27: vector getMappingIDsFromSynths(); rt300@18: void triggerCandidateSound(); rt300@18: void paramChangeCallback(int mappingID, int value); rt300@18: void sendSynthValuesAgain(); rt300@18: void setAllSlidersToValues(vector values); rt300@22: void setCandidateAndSlidersToRandom(); rt300@38: void setSlidersToCandidate(); rt300@0: // we want to set UI object rt300@18: void setUIToParam(int index, int value); rt300@18: void mapControlToParam(UIElement* control, int mappingID); rt300@32: rt300@32: void showSeqNum(int num); rt300@32: void showScoreNum(int num); rt300@32: rt300@16: //----------------------------------------------------------------------------- rt300@16: rt300@18: void mapSlidersToParams(vector elems, vector mids); rt300@18: void mapXYToParams(ButtronXY* control, int mappingIDX, int mappingIDY); rt300@16: rt300@18: void mapControlToParam(UIElement* control, string paramName); rt300@18: virtual void buttonPressCallback(int mappingID, int value); rt300@0: rt300@18: void setSlidersToTarget(); rt300@18: void setSlidersToDefault(); rt300@21: void showTargetAsHints(); rt300@9: bool onlyChangeCandidateOnTrigger; rt300@23: bool okToGetMidi; rt300@37: controlPanelType panelType; rt300@38: ButtronSlider * distanceSlider; rt300@43: Buttron* skipButton; rt300@43: rt300@0: }; rt300@0: