mirror of
https://codeberg.org/uzu/strudel
synced 2026-08-03 14:01:56 -04:00
Optimizations
This commit is contained in:
@@ -1412,6 +1412,10 @@ class TransientProcessor extends AudioWorkletProcessor {
|
||||
this.sustainAmt = clamp(sustain, -1, 1);
|
||||
this.scaling = 0.5 + 5 * clamp(sensitivity, 0, 1);
|
||||
this.mix = clamp(mix, 0, 1);
|
||||
const maxAttackDb = this.attackAmt * 6;
|
||||
const maxSustainDb = this.sustainAmt * 36;
|
||||
this.attackMaxGain = dbToLin(maxAttackDb) - 1; // increasing from 1
|
||||
this.sustainMaxGain = dbToLin(maxSustainDb) - 1;
|
||||
}
|
||||
|
||||
process(inputs, outputs, _params) {
|
||||
@@ -1433,15 +1437,17 @@ class TransientProcessor extends AudioWorkletProcessor {
|
||||
attEnv = lerp(attEnv, x, this.attackCoeff);
|
||||
susEnv = lerp(susEnv, x, this.sustainCoeff);
|
||||
const peakiness = clamp((this.scaling * (attEnv - susEnv)) / (susEnv + 1e-6), -1.5, 1.5);
|
||||
const attScale = Math.max(0, peakiness);
|
||||
const susScale = Math.max(0, -peakiness);
|
||||
const attackGain = dbToLin(this.attackAmt * attScale * 18); // max 18db
|
||||
const sustainGain = dbToLin(this.sustainAmt * susScale * 36); // max 36db
|
||||
const attScale = peakiness > 0 ? peakiness : 0;
|
||||
const susScale = peakiness < 0 ? -peakiness : 0;
|
||||
const attackGain = 1 + attScale * this.attackMaxGain;
|
||||
const sustainGain = 1 + susScale * this.sustainMaxGain;
|
||||
const gain = clamp(attackGain * sustainGain, 0, 8);
|
||||
avgGain = lerp(avgGain, gain, this.gainCoeff);
|
||||
const makeup = avgGain > 1e-3 ? 1 / avgGain : 1;
|
||||
const wet = x * gain * makeup;
|
||||
output[ch][n] = lerp(sample, wet, this.mix);
|
||||
let y = lerp(sample, wet, this.mix);
|
||||
y /= (1 + Math.abs(y)); // soft clip
|
||||
output[ch][n] = y;
|
||||
}
|
||||
this.attackEnv[ch] = attEnv;
|
||||
this.sustainEnv[ch] = susEnv;
|
||||
|
||||
Reference in New Issue
Block a user