feat(patina): per-band compressor gain stage with Threshold, Ratio and Knee

Tester feedback asked for a threshold and a ratio. Each band now cuts like a
small compressor: Threshold (dB above the local floor) replaces Selectivity,
Ratio scales the cut per dB above it (inf:1 is the old behaviour), and a
Soft/Hard knee switch sets the curve. A small graph shows bump height in, cut
out. Mix and Output move to the slider panel so the detection panel fits.
common-ui gains rotary_text for knobs with custom value text.
This commit is contained in:
nvrl committed 2026-11-06 17:29:54 +01:00
1 parent 7b989f7685
commit 9ca4e4f9dd
13 files changed
+568 -102

No files matched your search

+7
View File
@@ -114,6 +114,13 @@ fn effect_ports_state_latency_and_audio_lifecycle() {
envelope
.params
.insert("sensitivity_1".into(), ParamValue::F32(-12.));
envelope
.params
.insert("threshold".into(), ParamValue::F32(6.));
envelope.params.insert("ratio".into(), ParamValue::F32(3.));
envelope
.params
.insert("knee".into(), ParamValue::String("hard".into()));
let encoded = serde_json::to_vec(&envelope).unwrap();
let mut framed = (encoded.len() as u64).to_le_bytes().to_vec();
framed.extend_from_slice(&encoded);