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
|
////////////////////////////////////////////////////////////////////////
// JSHint configuration //
////////////////////////////////////////////////////////////////////////
/* global engine */
/* global script */
/* global print */
/* global midi */
////////////////////////////////////////////////////////////////////////
var BehringerCMDMicro = {};
// Configurable Options
BehringerCMDMicro.ScratchAlpha = 1.0 / 8;
BehringerCMDMicro.ScratchBeta = BehringerCMDMicro.ScratchAlpha / 32;
BehringerCMDMicro.ScratchRPM = 33 + (1.0 / 3);
BehringerCMDMicro.PitchBendsKey = false;
// Pitch Button State
BehringerCMDMicro.DownButtons = [0, 0];
BehringerCMDMicro.PitchReset = [false, false];
BehringerCMDMicro.wheelTouch = function(channel, control, value, status, grp) {
var forChannel = Number(grp);
if (0x90 === (status & 0xF0)) {
engine.scratchEnable(forChannel,
128,
BehringerCMDMicro.ScratchRPM,
BehringerCMDMicro.ScratchAlpha,
BehringerCMDMicro.ScratchBeta,
true);
} else {
engine.scratchDisable(forChannel, true);
}
};
BehringerCMDMicro.wheelTick = function(channel, control, value, status, grp) {
var forChannel = Number(grp);
value -= 64;
if (engine.isScratching(forChannel)) {
engine.scratchTick(forChannel, value);
} else {
engine.setValue('[Channel' + grp + ']', 'jog', value);
}
};
if (BehringerCMDMicro.PitchBendsKey) {
BehringerCMDMicro.pitch = function(channel, control, value, status, grp) {
var forChannel = Number(grp);
var up = (0x21 === control) || (0x11 === control);
var btnIdx = forChannel-1;
var btns = BehringerCMDMicro.DownButtons;
if (0x90 === (status & 0xF0)) {
btns[btnIdx] += 1;
if (btns[btnIdx] >= 2) {
BehringerCMDMicro.PitchReset[btnIdx] = true;
}
} else {
btns[btnIdx] -= 1;
if (BehringerCMDMicro.PitchReset[btnIdx]) {
if (0 === btns[btnIdx]) {
BehringerCMDMicro.PitchReset[btnIdx] = false;
engine.setValue('[Channel' + grp + ']',
'pitch',
0);
}
} else {
var cur = engine.getValue('[Channel' + grp + ']',
'pitch');
if (up) {
cur += 1;
} else {
cur -= 1;
}
engine.setValue('[Channel' + grp + ']',
'pitch',
cur);
}
}
};
} else {
BehringerCMDMicro.pitch = function(channel, control, value, status, grp) {
// 0x11 is the left deck pitch bend up button, while 0x21 is the right.
var up = (0x11 === control) || (0x21 === control);
var signal = 'rate_temp_down';
if (up) {
signal = 'rate_temp_up';
}
var isNoteOn = 0x90 === (status & 0xF0); // 0x90 is the 'Note On'
// MIDI command, which is
// sent when the button is
// pressed down.
engine.setValue('[Channel' + grp + ']', signal, isNoteOn);
};
}
BehringerCMDMicro.shutdown = function() {};
BehringerCMDMicro.init = function(id, debugging) {};
|