diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-06 18:31:14 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-06 18:31:14 +0100 |
| commit | 69fd884aaec5523871696149cd39aff6b10c9397 (patch) | |
| tree | f76401c7fbea84910e19fdc17be363eb35115a7f /assets | |
| parent | 819394afe35a754f8408a98dc3f42e58ef5f69f9 (diff) | |
feat(audio): Add RMS normalization to spectool for consistent sample loudness
IMPLEMENTATION:
- Added --normalize flag to spectool analyze command
- Default target RMS: 0.15 (customizable via --normalize [rms])
- Two-pass processing: load all PCM → calculate RMS/peak → normalize → DCT
- Peak-limiting safety: prevents clipping by limiting scale factor if peak > 1.0
- Updated gen_spectrograms.sh to use --normalize by default
ALGORITHM:
1. Calculate original RMS and peak of input audio
2. Compute scale factor to reach target RMS (default 0.15)
3. Check if scaled peak would exceed 1.0 (after windowing + IDCT)
4. If yes, reduce scale factor to keep peak ≤ 1.0 (prevents clipping)
5. Apply scale factor to all PCM samples before windowing/DCT
RESULTS:
Before normalization:
- RMS range: 0.054 - 0.248 (4.6x variation, ~13 dB)
- Some peaks > 1.0 (clipping)
After normalization:
- RMS range: 0.049 - 0.097 (2.0x variation, ~6 dB) ✅ 2.3x improvement
- All peaks < 1.0 (no clipping) ✅
SAMPLES REGENERATED:
- All 14 .spec files regenerated with normalization
- High dynamic range samples (SNARE_808, CRASH_DMX, HIHAT_CLOSED_DMX)
were peak-limited to prevent clipping
- Consistent loudness across all drum and bass samples
GITIGNORE CHANGE:
- Removed *.spec from .gitignore to track normalized spectrograms
- This ensures reproducibility and prevents drift from source files
handoff(Claude): RMS normalization implemented and working. All samples now have consistent loudness with no clipping.
Diffstat (limited to 'assets')
| -rw-r--r-- | assets/final/BASS_GUITAR_FEEL.spec | bin | 0 -> 51216 bytes |
| -rw-r--r-- | assets/final/BASS_SYNTH_1.spec | bin | 32784 -> 32784 bytes |
| -rw-r--r-- | assets/final/CRASH_DMX.spec | bin | 0 -> 217104 bytes |
| -rw-r--r-- | assets/final/HIHAT_CLOSED_DMX.spec | bin | 0 -> 20496 bytes |
| -rw-r--r-- | assets/final/HIHAT_CLOSED_DUFF.spec | bin | 0 -> 12304 bytes |
| -rw-r--r-- | assets/final/HIHAT_CLOSED_ER_1.spec | bin | 0 -> 16400 bytes |
| -rw-r--r-- | assets/final/KICK_606.spec | bin | 0 -> 139280 bytes |
| -rw-r--r-- | assets/final/KICK_90S_2.spec | bin | 0 -> 30736 bytes |
| -rw-r--r-- | assets/final/RIDE_CUP_1.spec | bin | 0 -> 3577872 bytes |
| -rw-r--r-- | assets/final/SNARE_808.spec | bin | 0 -> 120848 bytes |
| -rw-r--r-- | assets/final/SNARE_909_TUNE_8.spec | bin | 0 -> 43024 bytes |
| -rw-r--r-- | assets/final/SNARE_BLUE_ROOM.spec | bin | 0 -> 43024 bytes |
| -rw-r--r-- | assets/final/SPLASH_GROUNDED.spec | bin | 0 -> 57360 bytes |
| -rw-r--r-- | assets/final/SYNTH_BASS_DISTORT.spec | bin | 0 -> 32784 bytes |
14 files changed, 0 insertions, 0 deletions
diff --git a/assets/final/BASS_GUITAR_FEEL.spec b/assets/final/BASS_GUITAR_FEEL.spec Binary files differnew file mode 100644 index 0000000..54f49a6 --- /dev/null +++ b/assets/final/BASS_GUITAR_FEEL.spec diff --git a/assets/final/BASS_SYNTH_1.spec b/assets/final/BASS_SYNTH_1.spec Binary files differindex decc341..33bc0a0 100644 --- a/assets/final/BASS_SYNTH_1.spec +++ b/assets/final/BASS_SYNTH_1.spec diff --git a/assets/final/CRASH_DMX.spec b/assets/final/CRASH_DMX.spec Binary files differnew file mode 100644 index 0000000..45ee52d --- /dev/null +++ b/assets/final/CRASH_DMX.spec diff --git a/assets/final/HIHAT_CLOSED_DMX.spec b/assets/final/HIHAT_CLOSED_DMX.spec Binary files differnew file mode 100644 index 0000000..8fce1d2 --- /dev/null +++ b/assets/final/HIHAT_CLOSED_DMX.spec diff --git a/assets/final/HIHAT_CLOSED_DUFF.spec b/assets/final/HIHAT_CLOSED_DUFF.spec Binary files differnew file mode 100644 index 0000000..f738271 --- /dev/null +++ b/assets/final/HIHAT_CLOSED_DUFF.spec diff --git a/assets/final/HIHAT_CLOSED_ER_1.spec b/assets/final/HIHAT_CLOSED_ER_1.spec Binary files differnew file mode 100644 index 0000000..bb03f5e --- /dev/null +++ b/assets/final/HIHAT_CLOSED_ER_1.spec diff --git a/assets/final/KICK_606.spec b/assets/final/KICK_606.spec Binary files differnew file mode 100644 index 0000000..10af84a --- /dev/null +++ b/assets/final/KICK_606.spec diff --git a/assets/final/KICK_90S_2.spec b/assets/final/KICK_90S_2.spec Binary files differnew file mode 100644 index 0000000..126409e --- /dev/null +++ b/assets/final/KICK_90S_2.spec diff --git a/assets/final/RIDE_CUP_1.spec b/assets/final/RIDE_CUP_1.spec Binary files differnew file mode 100644 index 0000000..78867c1 --- /dev/null +++ b/assets/final/RIDE_CUP_1.spec diff --git a/assets/final/SNARE_808.spec b/assets/final/SNARE_808.spec Binary files differnew file mode 100644 index 0000000..2923c3c --- /dev/null +++ b/assets/final/SNARE_808.spec diff --git a/assets/final/SNARE_909_TUNE_8.spec b/assets/final/SNARE_909_TUNE_8.spec Binary files differnew file mode 100644 index 0000000..4693c05 --- /dev/null +++ b/assets/final/SNARE_909_TUNE_8.spec diff --git a/assets/final/SNARE_BLUE_ROOM.spec b/assets/final/SNARE_BLUE_ROOM.spec Binary files differnew file mode 100644 index 0000000..b24baa7 --- /dev/null +++ b/assets/final/SNARE_BLUE_ROOM.spec diff --git a/assets/final/SPLASH_GROUNDED.spec b/assets/final/SPLASH_GROUNDED.spec Binary files differnew file mode 100644 index 0000000..a919be4 --- /dev/null +++ b/assets/final/SPLASH_GROUNDED.spec diff --git a/assets/final/SYNTH_BASS_DISTORT.spec b/assets/final/SYNTH_BASS_DISTORT.spec Binary files differnew file mode 100644 index 0000000..33bc0a0 --- /dev/null +++ b/assets/final/SYNTH_BASS_DISTORT.spec |
