summaryrefslogtreecommitdiffstats
path: root/res/controllers/Behringer-BCR2000-scripts.js
blob: 9d151908d35508eee90b0a4b79a65ae86be2d87c (plain)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/**
 * Mixxx controller mapping for a Behringer BCR2000 controller.
 */

/* Globally available objects are declared as variables to avoid linter errors */
var behringer = behringer, BCR2000Preset = BCR2000Preset;

var BCR2000 = new behringer.extension.GenericMidiController({
    configurationProvider: function() {

        /* Shortcut variables */
        var c = components;
        var e = behringer.extension;
        var p = BCR2000Preset;
        var cc = p.STATUS_CONTROL_CHANGE;

        return {
            init: function() {
                p.setPreset(1);
            },
            decks: [{
                deckNumbers: [1],
                components: [
                    {
                        type: e.ShiftButton, options:
                        {
                            midi: [cc, p.buttonRow1[3]],
                            group: "[Controls]",
                            key: "touch_shift",
                            target: this
                        }
                    },
                    {
                        type: e.RangeAwareEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[0].encoder], key: "pitch", bound: 6
                        }
                    },
                    {
                        type: e.Trigger, options: {
                            midi: [cc, p.pushEncoderGroup1[0].button], inKey: "pitch_set_zero"
                        }
                    },
                    {
                        type: c.Button, options: {midi: [cc, p.buttonRow1[0]], key: "keylock"}
                    },
                    {
                        type: e.EnumToggleButton, shift: true, options: {
                            midi: [cc, p.buttonRow1[0]], inKey: "vinylcontrol_mode", maxValue: 2
                        }
                    },
                    {
                        type: e.BackLoopButton,
                        options: {midi: [cc, p.buttonRow1[1]], outKey: "loop_enabled"}
                    },
                    {
                        type: c.Button, shift: true,
                        options: {midi: [cc, p.buttonRow1[1]], key: "beatlooproll_activate"}
                    },
                    {
                        type: c.Button, options: {midi: [cc, p.buttonRow1[2]], key: "reverse"}
                    },
                    {
                        type: c.Button, shift: true,
                        options: {midi: [cc, p.buttonRow1[2]], key: "reverseroll"}
                    },
                    {
                        type: e.LoopEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[1].encoder], key: "beatloop_size"
                        }
                    },
                    {
                        type: e.LoopMoveEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[2].encoder],
                            inKey: "loop_move",
                            sizeControl: "beatjump_size"
                        }
                    },
                    {
                        type: e.LoopEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[3].encoder], key: "beatjump_size"
                        }
                    },
                    {
                        type: c.EffectAssignmentButton, options: {
                            midi: [cc, p.buttonBox[0]],
                            effectUnit: 1,
                            type: c.Button.prototype.types.push
                        }
                    },
                    {
                        type: c.EffectAssignmentButton, options: {
                            midi: [cc, p.buttonBox[2]],
                            effectUnit: 2,
                            type: c.Button.prototype.types.push
                        }
                    },
                ],
                equalizerUnit: {
                    feedback: true,
                    midi: {
                        enabled: [cc, p.pushEncoderGroup2[0].button],
                        super1: [cc, p.pushEncoderGroup2[0].encoder],
                        parameterKnobs: {
                            1: [cc, p.pushEncoderGroup2[1].encoder],
                            2: [cc, p.pushEncoderGroup2[2].encoder],
                            3: [cc, p.pushEncoderGroup2[3].encoder],
                        },
                        parameterButtons: {
                            1: [cc, p.pushEncoderGroup2[1].button],
                            2: [cc, p.pushEncoderGroup2[2].button],
                            3: [cc, p.pushEncoderGroup2[3].button],
                        },
                    }
                },
            },
            {
                deckNumbers: [2],
                components: [
                    {
                        type: e.ShiftButton, options:
                        {
                            midi: [cc, p.buttonRow1[7]],
                            group: "[Controls]",
                            key: "touch_shift",
                            target: this
                        }
                    },
                    {
                        type: e.RangeAwareEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[4].encoder], key: "pitch", bound: 6
                        }
                    },
                    {
                        type: e.Trigger, options: {
                            midi: [cc, p.pushEncoderGroup1[4].button], inKey: "pitch_set_zero"
                        }
                    },
                    {
                        type: c.Button, options: {midi: [cc, p.buttonRow1[4]], key: "keylock"}
                    },
                    {
                        type: e.EnumToggleButton, shift: true, options: {
                            midi: [cc, p.buttonRow1[4]], inKey: "vinylcontrol_mode", maxValue: 2
                        }
                    },
                    {
                        type: e.BackLoopButton,
                        options: {midi: [cc, p.buttonRow1[5]], outKey: "loop_enabled"}
                    },
                    {
                        type: c.Button, shift: true,
                        options: {midi: [cc, p.buttonRow1[5]], key: "beatlooproll_activate"}
                    },
                    {
                        type: c.Button, options: {midi: [cc, p.buttonRow1[6]], key: "reverse"}
                    },
                    {
                        type: c.Button, shift: true,
                        options: {midi: [cc, p.buttonRow1[6]], key: "reverseroll"}
                    },
                    {
                        type: e.LoopEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[5].encoder], key: "beatloop_size"
                        }
                    },
                    {
                        type: e.LoopMoveEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[6].encoder],
                            inKey: "loop_move",
                            sizeControl: "beatjump_size"
                        }
                    },
                    {
                        type: e.LoopEncoder, options: {
                            midi: [cc, p.pushEncoderGroup1[7].encoder], key: "beatjump_size"
                        }
                    },
                    {
                        type: c.EffectAssignmentButton, options: {
                            midi: [cc, p.buttonBox[1]],
                            effectUnit: 1,
                            type: c.Button.prototype.types.push
                        }
                    },
                    {
                        type: c.EffectAssignmentButton, options: {
                            midi: [cc, p.buttonBox[3]],
                            effectUnit: 2,
                            type: c.Button.prototype.types.push
                        }
                    },
                ],
                equalizerUnit: {
                    feedback: true,
                    midi: {
                        enabled: [cc, p.pushEncoderGroup2[4].button],
                        super1: [cc, p.pushEncoderGroup2[4].encoder],
                        parameterKnobs: {
                            1: [cc, p.pushEncoderGroup2[5].encoder],
                            2: [cc, p.pushEncoderGroup2[6].encoder],
                            3: [cc, p.pushEncoderGroup2[7].encoder],
                        },
                        parameterButtons: {
                            1: [cc, p.pushEncoderGroup2[5].button],