| Age | Commit message (Collapse) | Author |
|
logging infrastructure
MILESTONE: Audio System Robustness & Debugging
Core Audio Backend Optimization:
- Fixed stop-and-go audio glitches caused by timing mismatch
- Core Audio optimized for 44.1kHz (10ms periods), but 32kHz expected ~13.78ms
- Added allowNominalSampleRateChange=TRUE to force OS-level 32kHz native
- Added performanceProfile=conservative for 4096-frame buffers (128ms)
- Result: Stable ~128ms callbacks, <1ms jitter, zero underruns
Ring Buffer Improvements:
- Increased capacity from 200ms to 400ms for tempo scaling headroom
- Added comprehensive bounds checking with abort() on violations
- Fixed tempo-scaled buffer fill: dt * g_tempo_scale
- Buffer maintains 400ms fullness during 2.0x acceleration
NOTE_ Parsing Fix & Sample Caching:
- Fixed is_note_name() checking only first letter (A-G)
- ASSET_KICK_1 was misidentified as A0 (27.5 Hz)
- Required "NOTE_" prefix to distinguish notes from assets
- Updated music.track to use NOTE_E2, NOTE_G4 format
- Discovered resource exhaustion: 14 unique samples → 228 registrations
- Implemented comprehensive caching in tracker_init()
- Assets: loaded once from AssetManager, cached synth_id
- Generated notes: created once, stored in persistent pool
- Result: MAX_SPECTROGRAMS 256 → 32 (88% memory reduction)
Debug Logging Infrastructure:
- Created src/util/debug.h with 7 category macros
(AUDIO, RING_BUFFER, TRACKER, SYNTH, 3D, ASSETS, GPU)
- Added DEMO_ENABLE_DEBUG_LOGS CMake option (defines DEBUG_LOG_ALL)
- Converted all diagnostic code to use category macros
- Default build: macros compile to ((void)0) for zero runtime cost
- Debug build: comprehensive logging for troubleshooting
- Updated CONTRIBUTING.md with pre-commit policy
Resource Analysis Tool:
- Enhanced tracker_compiler to report pool sizes and cache potential
- Analysis: 152/228 spectrograms without caching, 14 with caching
- Tool generates optimization recommendations during compilation
Files Changed:
- CMakeLists.txt: Add DEBUG_LOG option
- src/util/debug.h: New debug logging header (7 categories)
- src/audio/miniaudio_backend.cc: Use DEBUG_AUDIO/DEBUG_RING_BUFFER
- src/audio/ring_buffer.cc: Use DEBUG_RING_BUFFER for underruns
- src/audio/tracker.cc: Implement sample caching, use DEBUG_TRACKER
- src/audio/synth.cc: Use DEBUG_SYNTH for validation
- src/audio/synth.h: Update MAX_SPECTROGRAMS (256→32), document caching
- tools/tracker_compiler.cc: Fix is_note_name(), add resource analysis
- assets/music.track: Update to use NOTE_ prefix format
- doc/CONTRIBUTING.md: Add debug logging pre-commit policy
- PROJECT_CONTEXT.md: Document milestone
- TODO.md: Mark tasks completed
Verification:
- Default build: No debug output, audio plays correctly
- Debug build: Comprehensive logging, audio plays correctly
- Caching working: 14 unique samples cached at init
- All tests passing (17/17)
handoff(Claude): Audio system now stable with robust diagnostic infrastructure.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Updated PROJECT_CONTEXT.md and TODO.md to reflect recent milestones:
PROJECT_CONTEXT.md changes:
- Updated Audio section: stereo format, variable tempo, event-based triggering
- Added milestone for "Event-Based Tracker for Tempo Scaling"
- Added milestone for "WAV Dump Backend for Debugging"
- Updated Audio Engine architecture section with new details
- Updated test counts (17/17 passing)
TODO.md changes:
- Added "Event-Based Tracker for Tempo Scaling" to Recently Completed
* Refactored from pattern compositing to individual event triggering
* Dynamic beat calculation enables notes to respect tempo scaling
* ActivePattern tracking with start_music_time and next_event_idx
* All 17 tests pass, WAV dump confirms correct behavior
- Added "WAV Dump Backend for Debugging" to Recently Completed
* WavDumpBackend for offline rendering to .wav files
* Fixed critical stereo format bug (mono/stereo mismatch)
* Added regression test with stereo format assertion
* Command-line option: --dump_wav output.wav
Current State:
- All tests passing: 17/17 (100%)
- Audio system: Stereo, variable tempo, event-based tracking
- Documentation: Up to date with latest architecture
Ready for handoff to Gemini.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Documented completion of major audio system improvements:
- Task #51: Tracker timing verification (0.000ms sync confirmed)
- Variable tempo system (6 tests, all passing)
- Zero production size impact (all test code under !STRIP_ALL)
Key achievements:
- Perfect audio synchronization verified
- Dynamic tempo control ready (music_time abstraction)
- Comprehensive test coverage (16/16 tests passing)
- Mathematical precision verified for reset tricks
Updated:
- PROJECT_CONTEXT.md: Added milestone section
- HANDOFF_2026-02-04.md: Complete state snapshot for handoff
System ready for:
- Dynamic tempo animation
- Physics & collision (Task #49)
- 3D scene pipeline (Task #18)
handoff(Claude): Audio milestone complete, state saved
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
|
|
Added unit tests for DCT and procedural audio generation. Enhanced synth tests to cover rendering and resource management. Audio subsystem coverage increased to 93%.
|
|
Added tests for runtime error handling in Asset Manager (unknown function, generation failure). Updated asset_packer to warn instead of fail on unknown functions to facilitate testing. Increased coverage from 71% to 88%.
|
|
Updated gen_coverage_report.sh to accept an optional argument for targeting specific directories using lcov --extract.
|
|
Added tests for gen_perlin and make_periodic. Improved parameter handling checks. Coverage for src/procedural/generator.cc increased to 96%.
|
|
Added CMake support for coverage builds and a script to generate HTML reports using lcov on macOS. Also cleaned up .gitignore.
|
|
architecture
- Fixed black screen by ensuring clear operations in Pass 2 when Skybox pass is skipped.
- Resolved WebGPU validation errors by synchronizing depth-stencil state.
- Implemented rotating skybox using world-space ray unprojection (inv_view_proj).
- Improved procedural noise generation (multi-octave Value Noise).
- Restored scene integrity by correcting object indexing and removing artifacts.
- Updated documentation (TODO.md, PROJECT_CONTEXT.md).
|
|
Assigned reference numbers to all remaining tasks in documentation:
- Task #34: Full STL Removal
- Task #35: CRT Replacement
- Task #36: Blender Exporter
- Task #37: Asset Ingestion
- Task #38: Runtime Loader
- Task #39: Visual Debugging System
- Task #40: Advanced Lighting & Transparency
- Task #41: Spectrogram Editor HTML Tool
- Task #42: Vectorial Spectrogram Reader (C++)
- Task #43: Spectrogram Drawing Bricks
Ensured consistent task numbering across PROJECT_CONTEXT.md and TODO.md.
|
|
Lowered the priority of the 'replace STL' task. It will be addressed in the final optimization phase (Phase 2) to simplify current development. Hot paths in AssetManager and Procedural remain optimized.
handoff(Gemini): STL usage is now permitted for non-critical paths until the final optimization phase. PROJECT_CONTEXT.md and TODO.md updated accordingly.
|
|
- 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.
|
|
Consolidated 'Recently Completed' sections in PROJECT_CONTEXT.md and TODO.md. Verified all recent tasks (Build System, Asset Pipeline, Shader Testing) are correctly recorded. Making a final commit to preserve current progress before moving to Platform Hygiene.
|
|
Implemented comprehensive unit tests for ShaderComposer and a validation test for production WGSL shader assets. This ensures the shader asset pipeline is robust and that all shaders contain required entry points and snippets. Also improved InitShaderComposer to be more robust during testing.
|
|
Added a new sub-task to the project roadmap for developing comprehensive tests for ShaderComposer and WGSL shader code assets. This will ensure robustness and correctness of the shader asset pipeline.
|
|
Updated PROJECT_CONTEXT.md and TODO.md to reflect the completion of the asset conversion sub-task and the build system consolidation (Task #25).
|
|
Updated project roadmap and to-do list to reflect the completion of the modular build system refactor.
|
|
Completed the first part of Task #25. Created static libraries for each subsystem (audio, gpu, 3d, util, procedural) and refactored all executables to link against them. This improves modularity and simplifies the build process. Also fixed linker errors related to glfw, wgpu, and miniaudio.
|
|
|
|
Updates status in PROJECT_CONTEXT.md and TODO.md.
|
|
Updates ASSET_SYSTEM.md to describe shader asset handling. Adds Task #24 to TODO.md and PROJECT_CONTEXT.md to extract hardcoded shaders and integrate them with the AssetManager and ShaderComposer.
|
|
This commit finalizes the session by updating the project documentation to reflect recent progress and future priorities.
- **Recently Completed**: Summarized the finalization of the audio tracker, implementation of build stripping (STRIP_ALL), and resolution of WebGPU stability issues on macOS.
- **Re-prioritization**: Promoted 'Platform & Code Hygiene' (Task #20) to Priority 1 and established '3D System Enhancements' (Task #18) as Priority 2, focusing on Blender integration.
- **Session Summary**: Appended a detailed summary of the session's key achievements to SESSION_NOTES.md.
|
|
|
|
optimization tasks
|
|
|
|
|
|
|
|
- Consolidated recent 3D and High-DPI fixes into PROJECT_CONTEXT.md.
- Generated a prioritized task list in TODO.md with detailed attack plans.
- Moved completed tasks to the 'Recently Completed' section.
- Set up roadmap for Task #8 (Stripping), Task #20 (Code Hygiene), and Task #21 (Shader Optimization).
|
|
- Expanded 'Task #18: 3D System Enhancements' to include specific debugging features mentioned in the original 3D.md file:
- Collision points visualization.
- Interactive ray/object intersection visualization.
- Visualization of light sources and their shadow maps.
- This ensures all potential debugging needs are captured and tracked for future implementation.
|
|
|
|
- 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.
|
|
- Updated Renderer3D shader to include 'map_scene' and 'calc_shadow' functions.
- Shader now iterates over all objects (up to kMaxObjects) to evaluate the scene SDF globally.
- Implemented hard/soft shadows from a fixed directional light.
- Updated GlobalUniforms struct with proper packing/padding for WebGPU compatibility.
- Captured 'GPU BVH & Shadows' task in PROJECT_CONTEXT.md for future optimization.
|
|
- Moved 3D.md into the doc/ directory to centralize documentation.
- Updated README.md to reflect the new location of 3D.md.
- Captured the action items from 3D.md (visual debug mode, Blender exporter) and added them as a new task (#18) in the PROJECT_CONTEXT.md roadmap.
|
|
- Moved completed tasks #4b and #10 to a new 'Recently Completed' section.
- Cleaned up the 'Next Up' list to reflect the current priorities.
- Ensures the project roadmap is an accurate, up-to-date reflection of the project's status.
|
|
- Moved Task #4a from TODO.md (Next Up) to PROJECT_CONTEXT.md (Future Optimizations).
- This reflects its current status as a lower-priority, long-term goal.
|
|
- Restructured PROJECT_CONTEXT.md to introduce a clear roadmap with 'Next Up', 'In Progress', and 'Future Goals'.
- Condensed the 'Session Decisions' section into a concise 'Architectural Overview' focusing on the current state.
- Updated TODO.md to reflect the highest priority tasks: finalizing the build system and optimizing spectrogram assets.
|
|
new file: TODO.md
|
|
- Marked 3D renderer integration and procedural asset tasks as complete in PROJECT_CONTEXT.md.
- Added a new 'Platform & Windowing' section to document the major refactoring, high-DPI fix, and custom resolution feature.
- Updated HOWTO.md to include instructions for the new '--resolution' command-line option.
|
|
- Refactored asset manager to use a static array for caching, improving performance and memory efficiency.
- Updated asset_packer to correctly generate ASSET_LAST_ID for array sizing.
- Modified asset_manager.h to use a forward declaration for AssetId.
- Updated asset_manager.cc to use the conditional include for generated asset headers.
- Added a test case in test_assets to verify the array-based cache and ASSET_LAST_ID logic.
|
|
- Replaced white noise with smooth value-like noise.
- Implemented periodic texture generation (seam blending).
- Integrated bump mapping into Renderer3D using finite difference of displaced SDF.
- Updated test_3d_render with noise texture and multiple SDF shapes (Box, Sphere, Torus).
|
|
- Extended mini_math.h with mat4 multiplication and affine transforms.
- Implemented TextureManager for runtime procedural texture generation and GPU upload.
- Added 3D system components: Camera, Object, Scene, and Renderer3D.
- Created test_3d_render mini-demo for interactive 3D verification.
- Fixed WebGPU validation errors regarding depthSlice and unimplemented WaitAny.
|
|
|
|
Adds a 'seq_compiler' tool that converts a text-based timeline (assets/demo.seq) into a generated C++ file. This allows editing effect sequences and timing without modifying engine code. Replaces manual sequence creation with a generated 'LoadTimeline' function.
|
|
Refactors the rendering pipeline into a modular Sequence/Effect system. 'MainSequence' manages the final frame rendering and a list of 'Sequence' layers. 'Sequence' manages a timeline of 'Effect' objects (start/end/priority). Concrete effects (Heptagon, Particles) are moved to 'demo_effects.cc'. Updates main loop to pass beat and aspect ratio.
|
|
|
|
|
|
|
|
Add details about the new spectrogram generation module (NoteParams, core functions, data flow, future work) to PROJECT_CONTEXT.md.
Update Incoming tasks list to include implementing the add_note function.
|
|
|