-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCCToPluginParam.js
89 lines (80 loc) · 2.02 KB
/
CCToPluginParam.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
/* Remap MIDI CC to plugin parameters or other CC.
v.1
Updates: https://github.com/viovar-black/logic_pro_scripts/blob/master/scripts/CCToPluginParam.js
Set NUMBER for more slots.
*/
const NUMBER = 6;
var Sources = Array();
var Destinations = new Map();
var PluginParameters = [
{
name: "Channel",
type: "lin",
defaultValue: 1,
minValue: 1,
maxValue: 16,
numberOfSteps: 15
},
{
name: "Thru",
type: "checkbox",
defaultValue: 0
}
];
for (var n = 0; n < NUMBER; n++) {
var src = {
name: "CC_" + n,
type: "lin",
minValue: 1,
maxValue: 127,
numberOfSteps: 126,
defaultValue: 1,
p_type: "src",
p_id: n,
enabled: false
}
var dest = {
name: "CC_" + n + "_DEST",
type: "target",
p_type: "dest",
p_id: n,
defaultValue: -1 // OFF
}
PluginParameters.push(src);
Sources.push(src);
PluginParameters.push(dest);
Destinations.set(src.name, dest);
}
PluginParameters.push(
{
name: "*change NUMBER for more slots",
type: "text"
}
)
function ParameterChanged(param, value) {
var param_obj = PluginParameters[param];
param_obj.value = value
if (param_obj.p_type === "dest") {
Sources[param_obj.p_id].enabled = value !== -1;
}
}
function HandleMIDI(event) {
if (event instanceof ControlChange) {
if (GetParameter("Channel") === event.channel) {
for (var n = 0; n < Sources.length; n++) {
var src = Sources[n];
if (src.enabled && src.value === event.number) {
var new_event = new TargetEvent();
new_event.target = src.name + "_DEST";
new_event.value = event.value / 127.0;
new_event.send();
}
}
if (GetParameter("Thru")) {
event.send();
}
}
} else {
event.send();
}
}