-
Notifications
You must be signed in to change notification settings - Fork 4
/
JamMode.js
100 lines (80 loc) · 2.43 KB
/
JamMode.js
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
/**
* @classdesc Abstract class that represents a General Mode for the Matrix Buttons
* @class
*
**/
function JamMode(mainView, trackView, sceneView) {
var intermediateView = null;
this.mainView = mainView;
this.handleEvent = function (/*sender, row, col, value , notenr*/ ) {
};
this.receiveNote = function (/*on, note, velocity */) {
};
this.notifyShift = function (/*shiftDown*/) {
};
this.notifyModifier = function (/*modifierState*/) {
};
this.modifyGrid = function (/*incValue, pressedModifier*/) {
};
this.pushAction = function (/* value */) {
};
this.notifyClear = function (/*clearDown*/) {
};
this.recalcView = function () {
};
this.navigate = function (/*direction*/) {
};
this.handleBlink = function () {
};
this.update = function () {
this.mainView.update();
sceneView.update();
trackView.update();
};
this.handleEvent = function (sender, row, col, value, notenr) {
switch (sender.id) {
case GroupControlsId.BUTTON:
if (intermediateView) {
intermediateView.handleEvent(row, col, value);
} else {
this.mainView.handleEvent(row, col, value, notenr);
}
break;
case GroupControlsId.GROUP:
trackView.handleEvent(col, value);
break;
case GroupControlsId.SCENE:
sceneView.handleEvent(col, value);
break;
}
};
this.switchToIntermediateView = function (view) {
intermediateView = view;
this.mainView.exit();
intermediateView.enter();
};
this.exitIntermediateView = function () {
if (intermediateView) {
intermediateView.exit();
intermediateView = null;
this.mainView.enter();
}
};
this.enter = function () {
sceneView.enter();
trackView.enter();
this.mainView.enter();
this.postEnter();
};
this.postEnter = function () {
};
this.exit = function () {
this.mainView.exit();
sceneView.exit();
trackView.exit();
if (intermediateView) {
intermediateView.exit();
intermediateView = null;
}
};
}