feat: process selected sample gain and peak normalization with atomic bounds checks

This commit is contained in:
Johannes Findeisen 2026-11-06 01:07:23 +01:00
commit ddef6cd73d
7 changed files with 26 additions and 9 deletions

View file

@ -37,3 +37,7 @@ Remove DC offset subtracts the mean of the selected range from only that range.
## Phase 75
Sample fades offers four offline curves: linear in/out and equal-power in/out (sinusoidal amplitude). The entire selection is the fade duration; both endpoints are included in the curve. Fewer than two frames reject. These curves change copied sample data and stack with existing playback clip fades after adoption; they do not form a linked clip crossfade.
## Phase 76
Gain / normalize processes only selected samples. Mode 0 accepts linear gain 0..16; mode 1 accepts a linear peak target above 0 and at most 1, rejecting silent selections or required gain above 16. Finite values above unity are not clipped; float overflow rejects atomically. This changes sample data in the local snapshot, unlike the existing clip-gain normalization command; it provides neither true-peak nor LUFS processing.

View file

@ -1792,12 +1792,12 @@ Implemented: selected-range linear/equal-power fade-in/out processing with expli
Process selected sample gain or peak normalization with finite bounded parameters, whole-result validation, silence rejection and reversible edits.
### Tasks and acceptance criteria
- [ ] Implement bounded C99 analysis/processing and accessible FLTK controls.
- [ ] Preserve source files, atomic error handling, history and callback safety.
- [ ] Pass meaningful core and GUI checks; document exact behavior and limits.
- [x] Implement bounded C99 analysis/processing and accessible FLTK controls.
- [x] Preserve source files, atomic error handling, history and callback safety.
- [x] Pass meaningful core and GUI checks; document exact behavior and limits.
### Implementation status
Planned.
Implemented: selected sample gain (0..16) and peak normalization (target >0..1, gain cap 16) with silence/NaN/parameter rejection and finite result validation. Exact selected/unselected samples, retained values above unity and GUI processing/undo pass.
---