我正在尝试创建一个 audioworklet 循环单个声音实例以创建一种持续效果。无论我循环输入多少个部分,我都会不断听到一种跳动的声音。一个实例有多少次对处理器的调用?
为了给你一个想法,这就是我到目前为止所拥有的:
constructor() {
super();
this.sound = [];
this.count = 20;
this.step = [0, 0];
}
process(inputs, outputs, parameters) {
if (inputs && inputs.length) {
for (var i = 0; i < inputs[0].length; i++) {
var input = inputs[0][i];
var output = outputs[0][i];
if (!this.sound[i]) {
this.sound[i] = [];
}
if (this.sound[i].length < this.count) {
this.sound[i].push([]);
for (var j = 0; j < input.length; j++) {
this.sound[i][this.sound[i].length - 1][j] = input[j];
}
} else if (this.sound[i]) {
var s = this.sound[i][this.step[i] % this.sound[i].length];
for (var j = 0; j < s.length; j++) {
output[j] = s[j];
}
this.step[i]++;
}
}
}
return true;
}
所以我的想法是我在每个通道的 N 长度数组中捕获输入输入(在我的情况下有 2 个通道)。然后,一旦该数组已满,我会循环遍历该数组以填充输出,直到该节点被禁用。