| Age | Commit message (Collapse) | Author |
|
Problem: Coverage script failed with error:
lcov: ERROR: (source) unable to open /Users/skal/demo/src/platform.cc
Root Cause:
- Old .gcno/.gcda coverage files referenced old src/platform.cc path
- File was moved to src/platform/platform.cc in earlier refactor
- Stale coverage data persisted between runs
Solution:
1. Added 'source' to LCOV_OPTS ignore list
- Handles missing source files gracefully
- Common when files are moved/renamed between coverage runs
2. Enable automatic cleanup of build_coverage/ directory
- Removes stale coverage data before each run
- Prevents conflicts from moved/renamed files
- Changed from commented-out to active cleanup
Result:
- Coverage report generates successfully
- 57.8% line coverage, 76.0% function coverage
- No errors about missing src/platform.cc
- Clean builds prevent stale data accumulation
The script now handles project reorganizations gracefully.
|
|
Problem: The spectool.cc include path bug was not caught by the test suite
because check_all.sh only built tests, not tools.
Root Cause Analysis:
- check_all.sh used -DDEMO_BUILD_TESTS=ON only
- Tools (spectool, specview, specplay) are built with -DDEMO_BUILD_TOOLS=ON
- CTest runs tests but doesn't verify tool compilation
- Result: Tool compilation failures went undetected
Solution: Updated scripts/check_all.sh to:
1. Enable both -DDEMO_BUILD_TESTS=ON and -DDEMO_BUILD_TOOLS=ON
2. Explicitly verify all tools compile (spectool, specview, specplay)
3. Add clear output messages for each verification stage
4. Document what the script verifies in header comments
Updated doc/CONTRIBUTING.md:
- Added "Automated Verification (Recommended)" section
- Documented that check_all.sh verifies tests AND tools
- Provided manual verification steps as alternative
- Clear command examples with expected behavior
Verification:
- Tested by intentionally breaking spectool.cc include
- Script correctly caught the compilation error
- Reverted break and verified all tools build successfully
This ensures all future tool changes are verified before commit.
Prevents regression: Similar include path issues will now be caught
by pre-commit verification.
|
|
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.
|
|
|
|
Updated gen_coverage_report.sh to accept an optional argument for targeting specific directories using lcov --extract.
|
|
Added CMake support for coverage builds and a script to generate HTML reports using lcov on macOS. Also cleaned up .gitignore.
|
|
- Consolidated all WebGPU shims and platform-specific logic into src/platform.h.
- Refactored platform_init to return PlatformState by value and platform_poll to automatically refresh time and aspect_ratio.
- Removed STL dependencies (std::map, std::vector, std::string) from AssetManager and Procedural subsystems.
- Fixed Windows cross-compilation by adjusting include paths and linker flags in CMakeLists.txt and updating build_win.sh.
- Removed redundant direct inclusions of GLFW/glfw3.h and WebGPU headers across the project.
- Applied clang-format and updated documentation.
handoff(Gemini): Completed Task #20 and 20.1. Platform abstraction is now unified, and core paths are STL-free. Windows build is stable.
|
|
Add -j8 flag to all cmake --build commands to use 8 threads for
faster parallel compilation across gen_assets.sh, crunch_demo.sh,
and build_win.sh scripts.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Created a new script, scripts/gen_spectrograms.sh, to robustly convert all audio files in assets/originals to .spec format. The new script is more portable and provides better feedback. Added the newly generated drum and bass samples to the asset list, organizing them by type for clarity. This completes the requested sub-task.
|
|
- Replaced invalid 'i++' with 'i = i + 1' in the shader's calc_shadow function loop.
- This resolves the shader parsing error and allows the 3D renderer test to run successfully on all platforms.
|
|
|
|
- Task #4b: Added scripts/check_all.sh to build and test all platform targets (native and Windows cross-compile) to ensure pre-commit stability.
- Task #10: Modified spectool to trim both leading and trailing silent frames from generated .spec files, reducing asset size.
|
|
- Updated CMakeLists.txt to generate assets.h and assets_data.cc in src/generated/.
- Updated scripts/gen_assets.sh to reflect the new output location.
- Modified asset_packer.cc to generate correct include paths in assets_data.cc.
- Updated source files (main.cc, asset_manager.cc, test_assets.cc) to include headers from the 'generated/' subdirectory.
- Ensured all targets have correct include paths to find generated headers.
- Removed stale generated files from src/.
|
|
Fixes seq_compiler build for Windows cross-compilation. Moves common WebGPU compatibility shims to gpu.h. Applies project-wide coding style via clang-format. Verified on both macOS (native) and Windows (cross-compile).
|
|
|
|
|
|
|
|
|
|
|
|
Ensures that test assets are also generated when the production pipeline is run.
|
|
Synchronizes scripts/gen_assets.sh with the current project structure: uses 'demo_assets.txt' and outputs to the 'src/' directory.
|
|
UPX is unreliable on macOS. Switched to using standard 'strip -u -r' and 'gzexe' for binary compression on Darwin systems.
Achieved a compressed binary size of ~48KB (dynamically linked).
Updated FETCH_DEPS.md to reflect that UPX is now only required for Linux/Windows.
|
|
Adds 'scripts/crunch_demo.sh' to automate building a stripped binary and compressing it with UPX.
Updates 'FETCH_DEPS.md' with UPX installation instructions and 'HOWTO.md' with usage guide.
This addresses Task 3 (add binary crunchers).
|
|
Replaces the complex wgpu-native submodule and manual platform-specific surface creation with a system-wide wgpu-native install (via Homebrew) and the glfw3webgpu helper library.
- Updates scripts/project_init.sh to fetch glfw3webgpu and ensure wgpu-native is installed.
- Refactors CMakeLists.txt to link against the system wgpu-native library.
- Simplifies src/platform.cc to use glfwCreateWindowWGPUSurface.
- Simplifies src/gpu/gpu.cc to use standard WebGPU headers.
- Updates FETCH_DEPS.md with new installation instructions.
- Updates PROJECT_CONTEXT.md with the new integration strategy.
|
|
This commit fulfills tasks 1 and 2, and adds a synchronized visual effect.
- **Fullscreen Mode**: Added '--fullscreen' command-line argument and dynamic toggling via 'F' key.
- **Keyboard Controls**: Implemented 'Esc' to exit and 'F' to toggle fullscreen in 'src/platform.cc'.
- **Synchronized Visuals**: Added a pulsating heptagon effect in 'src/gpu/gpu.cc' and 'src/gpu/shader.wgsl' that scales and changes color based on the real-time audio peak from the synth.
- **Refactor**: Abstracted platform-specific WebGPU surface creation into 'src/platform.cc' to keep 'src/gpu/gpu.cc' cross-platform.
- **Build System**: Corrected 'CMakeLists.txt' to properly link 'wgpu-native' and platform frameworks, and updated 'project_init.sh' to build the submodule.
- **Documentation**: Updated 'HOWTO.md' and 'PROJECT_CONTEXT.md' with new features and decisions.
|
|
|