rt300@17
|
1 //
|
rt300@17
|
2 // expMessageOrganiser.cpp
|
rt300@17
|
3 // riftathon
|
rt300@17
|
4 //
|
rt300@17
|
5 // Created by Robert Tubb on 21/10/2014.
|
rt300@17
|
6 //
|
rt300@17
|
7 //
|
rt300@17
|
8
|
rt300@17
|
9 #include "ExpMessageOrganiser.h"
|
rt300@18
|
10
|
rt300@18
|
11 void ExpMessageOrganiser::init( PDSynthWrapper& cs, PDSynthWrapper& ts){
|
rt300@18
|
12 numParamsToUse = TOTAL_NUM_PARAMS;
|
rt300@18
|
13 MessageOrganiser::init(cs,ts);
|
rt300@18
|
14
|
rt300@27
|
15 }
|
rt300@27
|
16 void ExpMessageOrganiser::setup(controlPanelType whichInterfaceAreWeUsing){
|
rt300@27
|
17
|
rt300@18
|
18
|
rt300@27
|
19 setupDefaultMapping(whichInterfaceAreWeUsing);
|
rt300@18
|
20 expPresetManager.goToFirstEmptySlot();
|
rt300@44
|
21
|
rt300@21
|
22 instructionPanel->setLabel("Find a sound\n that expresses:");
|
rt300@21
|
23 instructionPanel->show();
|
rt300@27
|
24 bottomPanel->show();
|
rt300@42
|
25 bottomPanel->showAllElements();
|
rt300@50
|
26 nextButt->hide();
|
rt300@28
|
27 controlPanel->show();
|
rt300@28
|
28 controlPanel->showValueIndicators(true);
|
rt300@44
|
29 if (whichInterfaceAreWeUsing == LEAP6DOF){
|
rt300@44
|
30 distanceSlider->show();
|
rt300@46
|
31 }else{
|
rt300@46
|
32 distanceSlider->hide();
|
rt300@44
|
33 }
|
rt300@28
|
34
|
rt300@23
|
35 okToGetMidi = true;
|
rt300@44
|
36 controlPanel->setActive(true);
|
rt300@44
|
37 showCurrentSlot();
|
rt300@18
|
38 }
|
rt300@18
|
39
|
rt300@18
|
40
|
rt300@18
|
41 vector<int> ExpMessageOrganiser::getMappingIDsFromSynths(){
|
rt300@18
|
42 vector<int> index;
|
rt300@18
|
43 for(int i = 0; i < numParamsToUse; i++){
|
rt300@18
|
44 index.push_back(i);
|
rt300@18
|
45 }
|
rt300@18
|
46 vector<int> mids = candidateSynth.getMappingIDForIndices(index);
|
rt300@18
|
47
|
rt300@18
|
48 return mids;
|
rt300@18
|
49 }
|
rt300@18
|
50
|
rt300@18
|
51 void ExpMessageOrganiser::showCurrentSlot(){
|
rt300@19
|
52
|
rt300@19
|
53 if(expPresetManager.getCurrentPresetSlot() == NULL){
|
rt300@19
|
54 // hide next button
|
rt300@50
|
55 nextButt->hide();
|
rt300@19
|
56 return;
|
rt300@19
|
57 }
|
rt300@19
|
58 presetIconPanel->setTextAndImage(expPresetManager.getCurrentPresetSlot()->name, expPresetManager.getCurrentPresetSlot()->getImage(),expPresetManager.getCurrentPresetSlot()->isFilled);
|
rt300@28
|
59
|
rt300@44
|
60 //controlPanel->setIndicatorTexture(expPresetManager.getCurrentPresetSlot()->getImage());
|
rt300@28
|
61
|
rt300@19
|
62 if(expPresetManager.getCurrentPresetSlot()->isFilled){
|
rt300@50
|
63 // was already saved, show it
|
rt300@19
|
64 loadPreset(expPresetManager.getCurrentPresetSlot()->name);
|
rt300@44
|
65 controlPanel->setAndShowHint(expPresetManager.getCurrentPresetSlot()->getValues(), expPresetManager.getCurrentPresetSlot()->getImage());
|
rt300@44
|
66 targetSynth.setAllParams(expPresetManager.getCurrentPresetSlot()->getValues());
|
rt300@50
|
67 nextButt->show();
|
rt300@19
|
68 }else{
|
rt300@50
|
69 // nothing saved yet show default slidervals
|
rt300@19
|
70 loadDefaultSound();
|
rt300@50
|
71 nextButt->hide();
|
rt300@44
|
72 controlPanel->showHint(false);
|
rt300@19
|
73 }
|
rt300@18
|
74 }
|
rt300@18
|
75
|
rt300@18
|
76 void ExpMessageOrganiser::loadPreset(string pname){
|
rt300@18
|
77
|
rt300@18
|
78 vector<int> values = expPresetManager.getPresetValuesForName(pname);
|
rt300@18
|
79 if (values.size()){
|
rt300@18
|
80 candidateSynth.setAllParams(values);
|
rt300@18
|
81 setAllSlidersToValues(values);
|
rt300@18
|
82 }else{
|
rt300@18
|
83 cout << "ERROR, no preset found" << endl;
|
rt300@18
|
84 }
|
rt300@18
|
85 }
|
rt300@19
|
86 void ExpMessageOrganiser::loadDefaultSound(){
|
rt300@19
|
87 vector<int> values;
|
rt300@19
|
88 for(int i = 0; i < TOTAL_NUM_PARAMS; i++){
|
rt300@19
|
89 values.push_back(0);
|
rt300@19
|
90 }
|
rt300@18
|
91
|
rt300@19
|
92 candidateSynth.setAllParams(values);
|
rt300@19
|
93 setAllSlidersToValues(values);
|
rt300@19
|
94
|
rt300@19
|
95 }
|
rt300@18
|
96
|
rt300@18
|
97
|
rt300@18
|
98 //-----------------------------------------------------------------------------
|
rt300@18
|
99
|
rt300@18
|
100 void ExpMessageOrganiser::buttonPressCallback(int mappingID, int value){
|
rt300@18
|
101
|
rt300@18
|
102
|
rt300@18
|
103 if (mappingID == TRIGGER_CANDIDATE_ID){
|
rt300@18
|
104 triggerCandidateSound();
|
rt300@18
|
105
|
rt300@18
|
106 return;
|
rt300@18
|
107 }
|
rt300@18
|
108 if(mappingID == SAVE_PRESET_HIT){
|
rt300@18
|
109
|
rt300@19
|
110 bool finished = expPresetManager.writeValuesToSlot(candidateSynth.getAllParamValues());
|
rt300@19
|
111 if(finished){
|
rt300@42
|
112 instructionPanel->setText("ALL PRESETS MADE\n Please go to menu and select TRAIN stage");
|
rt300@32
|
113 instructionPanel->show();
|
rt300@38
|
114 bottomPanel->show();
|
rt300@42
|
115 bottomPanel->showOnlyElementNamed("MENU");
|
rt300@43
|
116 okToGetMidi = false;
|
rt300@28
|
117 controlPanel->hide();
|
rt300@28
|
118
|
rt300@19
|
119 }else{
|
rt300@19
|
120 showCurrentSlot();
|
rt300@19
|
121 }
|
rt300@50
|
122 nextButt->show();
|
rt300@18
|
123 return;
|
rt300@18
|
124 }
|
rt300@18
|
125
|
rt300@44
|
126 if(mappingID == NEXT_PRESET_HIT){
|
rt300@44
|
127
|
rt300@44
|
128 expPresetManager.nextSlot();
|
rt300@44
|
129 showCurrentSlot();
|
rt300@44
|
130
|
rt300@44
|
131
|
rt300@44
|
132 return;
|
rt300@44
|
133 }
|
rt300@44
|
134
|
rt300@23
|
135 }
|
rt300@23
|
136
|