annotate TrainingMessageOrganiser.h @ 9:d5e928887f51

More refactoring. Mode for Synth value changes only sent to PD on triggering sound.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Fri, 17 Oct 2014 17:50:41 +0100
parents d59de9fd3496
children e25d2b1b185e
rev   line source
rt300@8 1 //
rt300@8 2 // TrainingMessageOrganiser.h
rt300@8 3 // riftathon
rt300@8 4 //
rt300@8 5 // Created by Robert Tubb on 17/10/2014.
rt300@8 6 //
rt300@8 7 //
rt300@8 8
rt300@8 9 #ifndef __riftathon__TrainingMessageOrganiser__
rt300@8 10 #define __riftathon__TrainingMessageOrganiser__
rt300@8 11
rt300@8 12 #include <iostream>
rt300@9 13 #include "trainingTestController.h"
rt300@9 14 #include "MessageOrganiser.h"
rt300@9 15 class TrainingMessageOrganiser : public MessageOrganiser {
rt300@9 16 public:
rt300@9 17 void init( PDSynthWrapper& cs, PDSynthWrapper& ts){
rt300@9 18
rt300@9 19 trainingTestController = new TrainingTestController;
rt300@9 20
rt300@9 21 MessageOrganiser::init(cs,ts);
rt300@8 22
rt300@9 23 }
rt300@8 24
rt300@9 25 void setupDefaultMapping(){
rt300@9 26 vector<int> mappingIDsForChangeableParams = getMappingIDsFromSynths();
rt300@9 27
rt300@9 28 controlPanelType cpt = REVISITABLE;
rt300@9 29 vector<controllerType> elemList;
rt300@9 30 for(int i = 0; i < 8; i++){
rt300@9 31 elemList.push_back(SLIDER);
rt300@9 32 }
rt300@9 33
rt300@9 34 vector<UIElement*> UIElemHandles = panel->generateControls(elemList, cpt);
rt300@9 35
rt300@9 36 mapSlidersToParams(UIElemHandles, mappingIDsForChangeableParams);
rt300@9 37
rt300@9 38 bottomPanel->show();
rt300@9 39 }
rt300@9 40
rt300@9 41 vector<int> getMappingIDsFromSynths(){
rt300@9 42 vector<int> index;
rt300@9 43 for(int i = 0; i < 8; i++){
rt300@9 44 index.push_back(i);
rt300@9 45 }
rt300@9 46 vector<int> mids = candidateSynth.getMappingIDForIndices(index);
rt300@9 47
rt300@9 48 return mids;
rt300@9 49 }
rt300@9 50
rt300@9 51 void setupNewTest(){
rt300@9 52
rt300@9 53
rt300@9 54 };
rt300@9 55
rt300@9 56 protected:
rt300@9 57 void mapSlidersToParams(vector<UIElement*> elems, vector<int> mids){
rt300@9 58
rt300@9 59 vector<UIElement*>::iterator elit;
rt300@9 60 vector<int> typeListLog;
rt300@9 61 int i = 0;
rt300@9 62 for(elit=elems.begin(); elit<elems.end();elit++){
rt300@9 63 if ( (*elit)->getType() == SLIDER){
rt300@9 64 if(i >= mids.size()){
rt300@9 65
rt300@9 66 cout << "ERROR ERROR: too many controls for mapping IDs: " << mids.size() << endl;
rt300@9 67 }
rt300@9 68
rt300@9 69 ButtronSlider* theSlider = (ButtronSlider*)(*elit);
rt300@9 70 mapControlToParam((*elit), mids[i]);
rt300@9 71 theSlider->setValueAndScale(candidateSynth.getParamValueForID(mids[i]));
rt300@9 72 cout << "Hint Value " << targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i])) << endl;
rt300@9 73 theSlider->setHintValue(targetSynth.getParamValueFromName(candidateSynth.getNameForMappingID(mids[i])));
rt300@9 74 i++;
rt300@9 75 typeListLog.push_back(int(SLIDER));
rt300@9 76
rt300@9 77 }else{
rt300@9 78 cout << "ERROR ERROR: ui type not handled my mapping function !" << endl;
rt300@9 79 }
rt300@9 80 }
rt300@9 81
rt300@9 82 eventLogger.logEvent(CONTROL_LIST,typeListLog);
rt300@9 83 };
rt300@9 84
rt300@9 85 void buttonPressCallback(int mappingID, int value){
rt300@9 86 if(mappingID == VOLUME_CHANGE_ID){
rt300@9 87 targetSynth.sendVolume(value);
rt300@9 88 candidateSynth.sendVolume(value);
rt300@9 89
rt300@9 90 }
rt300@9 91
rt300@9 92 if (mappingID == TRIGGER_CANDIDATE_ID){
rt300@9 93 triggerCandidateSound();
rt300@9 94 return;
rt300@9 95 }
rt300@9 96 }
rt300@9 97
rt300@9 98 TrainingTestController* trainingTestController;
rt300@8 99 };
rt300@8 100 #endif /* defined(__riftathon__TrainingMessageOrganiser__) */