summaryrefslogtreecommitdiffstats
path: root/res/controllers/Hercules-mp3e2-compat.js
blob: 7caa812f55ca71308cab9fc6ab9aad6f5feab409 (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
MP3e2 = Object()

MP3e2.init = function(id) {
    HerculesMP3e2.init(id);
}

// Debug switch. set to true to print debug log messages in console.
var debug=false;

var c1 = '[Channel1]'
var c2 = '[Channel2]'

MP3e2.incomingData = function(data, length) {
    if (debug)
        print("******* Incoming Data from controller: data="+JSON.stringify(data)+", length="+length+" ;");
    for (var i = 0; i < length; i += 3) {
        var status = data[i];
        var midino = data[i+1];
        var value = data[i+2];
        var group;
        var f = null;

        if (status == 0xb0) {
            if ((midino > 0x38) ||
                ((midino < 0x34) && (midino & 1))) {
                group = c2;
            } else {
                group = c1;
            }
        } else if (status == 0x90) {
            if ((midino <= 20) || (midino >= 45)) {
                group = c1;
            } else if (midino < 40) {
                group = c2;
            } else if (midino < 45) {
                group = "[Paylist]";
            }
        }

        switch ((status<<8) | midino) {
            case 0x9001: case 0x9015:
            case 0x9002: case 0x9016:
            case 0x9003: case 0x9017:
            case 0x9004: case 0x9018:
            case 0x9005: case 0x9019:
            case 0x9006: case 0x901a:
            case 0x9007: case 0x901b:
            case 0x9008: case 0x901c:
                f = HerculesMP3e2.keyButton;
                break;
            case 0x900a: case 0x901e:
            case 0x900b: case 0x901f:
                f = HerculesMP3e2.pitchbend;
                break;
            case 0x900c: case 0x9020:
                f = HerculesMP3e2.wind;
                break;
            case 0x900d: case 0x9021:
                f = HerculesMP3e2.wind;
                break;
            case 0x900e: case 0x9022:
                f = HerculesMP3e2.cue;
                break;
            case 0x900f: case 0x9023:
                f = HerculesMP3e2.play;
                break;
            case 0x9010: case 0x9024:
                f = HerculesMP3e2.pfl;
                break;
            case 0x9011: case 0x9025:
                f = HerculesMP3e2.loadTrack;
                break;
            case 0x9012: case 0x9026:
                f = HerculesMP3e2.sync;
                break;
            case 0x9013: case 0x9027:
                f = HerculesMP3e2.masterTempo;
                break;


            case 0x9029:
                group = '[Playlist]';
                f = HerculesMP3e2.selectTrack;
                break;
            case 0x902a:
                group = '[Playlist]';
                f = HerculesMP3e2.mic;
                break;
            case 0x902b:
            case 0x902c:
                group = '[Playlist]';
                f = HerculesMP3e2.scroll;
                break;
            case 0x902d:
                f = HerculesMP3e2.scratch;
                break;
            case 0x902e:
                f = HerculesMP3e2.automix;
                break;

            case 0xb030: case 0xb031:
                f = HerculesMP3e2.jogWheel;
                break;
            case 0xb032: case 0xb033:
                f = HerculesMP3e2.pitch;
                break;
            case 0xb034: case 0xb039:
                f = HerculesMP3e2.volume;
                break;
            case 0xb035: case 0xb03a:
                f = HerculesMP3e2.filterHigh;
                break;
            case 0xb036: case 0xb03b:
                f = HerculesMP3e2.filterMid;
                break;
            case 0xb037: case 0xb03c:
                f = HerculesMP3e2.filterLow;
                break;
            case 0xb038:
                engine.setValue('[Master]', 'crossfader', script.absoluteLin(value, -1, 1));
                break;
        }

        if (typeof(f) == 'string') {
            engine.setValue(group, f, (value>0)?1:0);
        } else if (f) {
            f(0, midino, value, status, group);
        }
    }
}