From 0bd2d4eae458d9017de4e2c4e04c1c1cc5315520 Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 3 Feb 2026 12:47:27 +0100 Subject: feat(audio): Fix tracker bugs and implement rock demo track Critical Bug Fixes: - Fixed pool exhaustion: Tracker slots never freed after use, music stopped after 8 patterns. Implemented round-robin allocation with cleanup. - Fixed note name parsing: Added automatic note-to-frequency conversion in tracker_compiler. Bass and melody now play correctly. - Fixed timing mismatch: Patterns are 2 seconds but triggered every 4 seconds, causing silence gaps. Updated SCORE to trigger every 2 seconds. Improvements: - Implemented dynamic resource sizing in tracker_compiler: Analyzes score to determine optimal MAX_VOICES/MAX_SPECTROGRAMS values. - Created comprehensive rock track: 11 patterns with drums, bass, power chords, and lead melody over 25 seconds. - Added 213 lines of asset system documentation with 8 prioritized tasks. Known Issues for next session: - Audio quality could be improved (some artifacts remain) - Note synthesis uses default parameters, needs tuning - Pattern overlaps might cause voice exhaustion under heavy load Files Changed: - src/audio/tracker.cc: Round-robin pool allocation, cleanup logic - tools/tracker_compiler.cc: Note name parser, resource usage analysis - src/audio/synth.h: Increased limits to 16 based on analysis - assets/music.track: 230-line rock arrangement - doc/ASSET_SYSTEM.md: Comprehensive documentation + 8 tasks - TODO.md: Updated with recent completions and known issues handoff(Gemini): Music system now functional but needs quality improvements. Audio artifacts and synthesis tuning remain. See TODO.md for details. Co-Authored-By: Claude Sonnet 4.5 --- src/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main.cc') diff --git a/src/main.cc b/src/main.cc index 7114460..76e366a 100644 --- a/src/main.cc +++ b/src/main.cc @@ -102,6 +102,7 @@ int main(int argc, char** argv) { const int step = beat_count % 16; +/* // Bass pattern if (step % 4 == 0) { float* back_buffer = synth_begin_update(bass_id); @@ -112,7 +113,7 @@ int main(int argc, char** argv) { } synth_trigger_voice(bass_id, 0.9f, 1.2f); } - +*/ ++beat_count; } tracker_update((float)t); -- cgit v1.2.3