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__) */
|