| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 16 hours | fix(audio): Fix spectrogram amplification issue and add diagnostic tool | skal | |
| ## Root Cause .spec files were NOT regenerated after orthonormal DCT changes (commit d9e0da9). They contained spectrograms from old non-orthonormal DCT (16x larger values), but were played back with new orthonormal IDCT. Result: 16x amplification → Peaks of 12-17x → Severe clipping/distortion ## Diagnosis Tool Created specplay tool to analyze and play .spec/.wav files: - Reports PCM peak and RMS values - Detects clipping during playback - Usage: ./build/specplay <file.spec|file.wav> ## Fixes 1. Revert accidental window.h include in synth.cc (keep no-window state) 2. Adjust gen.cc scaling from 16x to 6.4x (16/2.5) for procedural notes 3. Regenerated ALL .spec files with ./scripts/gen_spectrograms.sh ## Verified Results Before: Peak=16.571 (KICK_3), 12.902 (SNARE_2), 14.383 (SNARE_3) After: Peak=0.787 (BASS_GUITAR_FEEL), 0.759 (SNARE_909), 0.403 (KICK_606) All peaks now < 1.0 (safe range) | |||
| 18 hours | fix(audio): Scale procedural note generation for orthonormal DCT | skal | |
| Fixed procedural notes (NOTE_*) being inaudible by adding scaling compensation in gen.cc. Root Cause: - Old non-orthonormal DCT produced values ~16x larger (no sqrt scaling) - New orthonormal DCT: output *= sqrt(1/N) or sqrt(2/N) - Procedural note generation in gen.cc now produces 16x smaller spectrograms - IDCT expects same magnitude as .spec files -> notes too quiet Solution: - Added scale_factor = sqrt(DCT_SIZE / 2) = sqrt(256) = 16 - Multiply DCT output by 16 to match old magnitude - Procedural notes now have same loudness as sample-based notes Verification: - Checked spectral_editor: does not use DCT for procedural - Checked editor tools: no procedural generation with DCT - All 23 tests pass Procedural notes should now be audible at correct volume. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> | |||
| 6 days | clang-format | skal | |
| 7 days | style: add vertical compression rules to clang-format | skal | |
| - Enabled AllowShortFunctionsOnASingleLine: All - Enabled AllowShortBlocksOnASingleLine: Always - Enabled AllowShortIfStatementsOnASingleLine: Always - Enabled AllowShortLoopsOnASingleLine: true - Set MaxEmptyLinesToKeep: 1 - Applied formatting to all source files. | |||
| 7 days | Chore: Add missing newlines at end of source files | skal | |
| 7 days | Implement procedural audio generation, spectral effects, and WebGPU particle ↵ | skal | |
| system | |||
| 7 days | add notes | skal | |
