-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModesManager.cpp
More file actions
122 lines (111 loc) · 3.95 KB
/
ModesManager.cpp
File metadata and controls
122 lines (111 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include "ModesManager.h"
#define NB_MODES 6
ModesManager::ModesManager(Gui &gui, State &state, Storage &storage, Controls &controls)
: _gui(gui)
, _state(state)
, _controls(controls)
, _fa(FaHandler())
, _muteChannel1(BtnHandlerMuteChannel(state, 0))
, _muteChannel2(BtnHandlerMuteChannel(state, 1))
, _clickCursor(BtnHandlerClickCursor(gui))
, _nudgeReset(BtnHandlerNudgeAction(gui, state, *this, false))
, _nudgeApply(BtnHandlerNudgeAction(gui, state, *this, true))
, _stepSequenceReset(BtnHandlerStepSequenceReset(state))
, _loopSteps(BtnHandlerLoopSteps(gui))
, _chordsReset(BtnHandlerChordsReset(state))
, _saveStateEeprom(BtnHandlerSaveEeprom(storage, gui, true))
, _saveSettingsEeprom(BtnHandlerSaveEeprom(storage, gui, false))
, _cursorX(PotHandlerCursorX(gui))
, _cursorY(PotHandlerCursorY(gui))
, _rand1(PotHandlerRandom(0, state))
, _rand2(PotHandlerRandom(1, state))
, _transpose1(PotHandlerTranspose(0, state))
, _transpose2(PotHandlerTranspose(1, state))
, _nudgeH(PotHandlerNudge(gui, 31, true))
, _nudgeV(PotHandlerNudge(gui, 3, false))
, _channelIn(PotHandlerMidiChannel(gui, 255))
, _channelOut1(PotHandlerMidiChannel(gui, 0))
, _channelOut2(PotHandlerMidiChannel(gui, 1))
{
_controls.btn1.setCallback(*this);
switchToMode(0);
}
void ModesManager::onClick()
{
_mode++;
switchToMode(_mode % NB_MODES);
}
void ModesManager::switchToPerform()
{
switchToMode(0);
}
void ModesManager::switchToMode(uint8_t mode)
{
_mode = mode;
_gui.switchMode(_mode);
_state.resetAllSwags();
_state.resetAllNudges();
switch (_mode)
{
case 0: // perform
_gui.showCursor(false);
_state.setHandleChordMode(0);
_controls.btn2.setCallback(_muteChannel1);
_controls.btn3.setCallback(_muteChannel2);
_controls.pot1.setCallback(_rand1);
_controls.pot2.setCallback(_transpose1);
_controls.pot3.setCallback(_rand2);
_controls.pot4.setCallback(_transpose2);
break;
case 1: // nudge
_gui.showCursor(true);
_state.setHandleChordMode(0);
_controls.btn2.setCallback(_nudgeReset);
_controls.btn3.setCallback(_nudgeApply);
_controls.pot1.setCallback(_cursorY);
_controls.pot2.setCallback(_fa);
_controls.pot3.setCallback(_nudgeH);
_controls.pot4.setCallback(_nudgeV);
break;
case 2: // step sequence
_gui.showCursor(true);
_state.setHandleChordMode(2);
_controls.btn2.setCallback(_stepSequenceReset);
_controls.btn3.setCallback(_loopSteps);
_controls.pot1.setCallback(_cursorY);
_controls.pot2.setCallback(_cursorX);
_controls.pot3.setCallback(_fa);
_controls.pot4.setCallback(_fa);
break;
case 3: // manual edit
_gui.showCursor(true);
_state.setHandleChordMode(0);
_controls.btn2.setCallback(_clickCursor);
_controls.btn3.setCallback(_saveStateEeprom);
_controls.pot1.setCallback(_cursorY);
_controls.pot2.setCallback(_cursorX);
_controls.pot3.setCallback(_fa);
_controls.pot4.setCallback(_fa);
break;
case 4: // chords
_gui.showCursor(false);
_state.setHandleChordMode(1);
_controls.btn2.setCallback(_chordsReset);
_controls.btn3.setCallback(_fa);
_controls.pot1.setCallback(_fa);
_controls.pot2.setCallback(_transpose1);
_controls.pot3.setCallback(_fa);
_controls.pot4.setCallback(_transpose2);
break;
case 5: // settings
_gui.showCursor(false);
_state.setHandleChordMode(0);
_controls.btn2.setCallback(_fa);
_controls.btn3.setCallback(_saveSettingsEeprom);
_controls.pot1.setCallback(_channelIn);
_controls.pot2.setCallback(_channelOut1);
_controls.pot3.setCallback(_channelOut2);
_controls.pot4.setCallback(_fa);
break;
}
}