Optimize phase wrap; make voices k-rate
This commit is contained in:
parent
aabf122161
commit
be3a88b09c
1 changed files with 5 additions and 4 deletions
|
|
@ -507,6 +507,7 @@ class SuperSawOscillatorProcessor extends AudioWorkletProcessor {
|
||||||
name: 'voices',
|
name: 'voices',
|
||||||
defaultValue: 5,
|
defaultValue: 5,
|
||||||
min: 1,
|
min: 1,
|
||||||
|
automationRate: 'k-rate',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
@ -518,12 +519,10 @@ class SuperSawOscillatorProcessor extends AudioWorkletProcessor {
|
||||||
// this.port.postMessage({ type: 'onended' });
|
// this.port.postMessage({ type: 'onended' });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const output = outputs[0];
|
const output = outputs[0];
|
||||||
|
const voices = pv(params.voices, 0); // k-rate
|
||||||
for (let i = 0; i < output[0].length; i++) {
|
for (let i = 0; i < output[0].length; i++) {
|
||||||
const detune = pv(params.detune, i);
|
const detune = pv(params.detune, i);
|
||||||
const voices = pv(params.voices, i);
|
|
||||||
const freqspread = pv(params.freqspread, i);
|
const freqspread = pv(params.freqspread, i);
|
||||||
const panspread = pv(params.panspread, i) * 0.5 + 0.5;
|
const panspread = pv(params.panspread, i) * 0.5 + 0.5;
|
||||||
const gain1 = Math.sqrt(1 - panspread);
|
const gain1 = Math.sqrt(1 - panspread);
|
||||||
|
|
@ -552,7 +551,9 @@ class SuperSawOscillatorProcessor extends AudioWorkletProcessor {
|
||||||
output[0][i] += v * gainL;
|
output[0][i] += v * gainL;
|
||||||
output[1][i] += v * gainR;
|
output[1][i] += v * gainR;
|
||||||
|
|
||||||
this.phase[n] = ffrac(this.phase[n] + dt);
|
let pn = this.phase[n] + dt;
|
||||||
|
if (pn >= 1.0) pn -= 1.0;
|
||||||
|
this.phase[n] = pn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue