public/audio-worklets/pink-noise-processor.js
Rama chore/all-my-stuffs · réplica de lectura del repositorio original.
class PinkNoiseProcessor extends AudioWorkletProcessor {
b0 = 0;
b1 = 0;
b2 = 0;
b3 = 0;
b4 = 0;
b5 = 0;
b6 = 0;
process(inputs, outputs) {
const output = outputs[0];
for (const channel of output) {
for (let i = 0; i < channel.length; i++) {
const white = Math.random() * 2 - 1;
this.b0 = 0.99886 * this.b0 + white * 0.0555179;
this.b1 = 0.99332 * this.b1 + white * 0.0750759;
this.b2 = 0.969 * this.b2 + white * 0.153852;
this.b3 = 0.8665 * this.b3 + white * 0.3104856;
this.b4 = 0.55 * this.b4 + white * 0.5329522;
this.b5 = -0.7616 * this.b5 - white * 0.016898;
let pink = this.b0 + this.b1 + this.b2 + this.b3 + this.b4 + this.b5 + this.b6 + white * 0.5362;
this.b6 = white * 0.115926;
channel[i] = pink * 0.11;
}
}
return true;
}
}
registerProcessor('pink-noise-processor', PinkNoiseProcessor);