forked from VCVRack/Rack
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathRack2.post.js
50 lines (42 loc) · 1.54 KB
/
Rack2.post.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
class PortProcessor extends AudioWorkletProcessor {
constructor() {
super();
var self = this;
this.port.onmessage = (event) => {
if (event.data.cmd == 'init') {
var k = librack({
buffer: event.data.buffer,
PthreadWorkerInit: event.data.PthreadWorkerInit,
stackSize: event.data.stackSize,
stackBase: event.data.stackBase,
tempDoublePtr: event.data.tempDoublePtr,
TOTAL_MEMORY: event.data.TOTAL_MEMORY,
STATICTOP: event.data.STATICTOP,
DYNAMIC_BASE: event.data.DYNAMIC_BASE,
DYNAMICTOP_PTR: event.data.DYNAMICTOP_PTR,
});
self.lr = k;
} else if (event.data.cmd == 'start') {
self.addr = event.data.addr;
} else if (event.data.cmd == 'stop') {
self.addr = 0;
}
};
}
process(inputs, outputs, parameters) {
if (!this.addr)
return true;
var out = outputs[0];
var channel0 = out[0];
var channel1 = out[1];
var pData = this.addr;
pData >>= 2;
this.lr._processAudioJS(channel0.length);
for (var i = 0; i < channel0.length; ++i) {
channel0[i] = this.lr.HEAPF32[pData++];
channel1[i] = this.lr.HEAPF32[pData++];
}
return true;
}
}
registerProcessor('port-processor', PortProcessor);