サウンドの単一のインスタンスをループして一種のサステイン効果を作成するオーディオワークレットを作成しようとしています。入力の何セクションをループしても、ブリップ型のスキップ音が聞こえ続けます。1 つのインスタンスはプロセッサへの呼び出しの数?
あなたにアイデアを与えるために、これは私がこれまでに持っているものです:
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 つのチャンネルがあります)。次に、その配列がいっぱいになると、ノードが無効になるまで、その配列を循環して出力を埋めます。