mirror of
https://github.com/got-feedBack/feedBack-desktop.git
synced 2026-09-11 06:04:10 +00:00
68f9bc5fad5d10dc6e2bc1ffb8164a27c1b170dd
The v1 BackingLeveler tracked SHORT-TERM (400 ms) loudness with a ~300 ms gain follower and +/-24 dB authority. That re-converges on every musical section: quiet verses got boosted toward -12 LUFS and loud choruses pulled down, flattening the song's own macro-dynamics, and loud->quiet transitions left the gain low for a beat (reported as "the song suddenly plays quiet, then swells back up"). Simulated on a synthetic song (10 s verse -20 / 10 s chorus -9 / 10 s verse -20, 11 dB of real contrast): the v1 gain swung 11.1 dB between sections -> the player hears 0.0 dB of verse/chorus contrast. Loudness normalization should behave like a per-track gain (Spotify-style), not a compressor. v2 keeps the K-weighted measurement but accumulates INTEGRATED loudness (gated < -50 LUFS so silence/count-ins don't dilute it) and slews the make-up gain with a rate limit: up to 6 dB/s while the measurement is young (first ~8 s of signal, inaudible at song start) then locked to a 0.25 dB/s creep. Authority reduced +/-24 -> +/-12 dB. The -1 dBFS brickwall stays for boosted peaks. Same RT-safety (no allocation), same prepare()/reset-on-load semantics, same call signature - no changes outside this header. Same simulation with v2: 7.3 dB of contrast already preserved at the first chorus, converging to fully static (all 11 dB) as the measurement matures over the song. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Languages
C++
52%
TypeScript
18.6%
JavaScript
17.9%
Shell
7.3%
CMake
2.4%
Other
1.8%