diff options
Diffstat (limited to 'TODO.md')
| -rw-r--r-- | TODO.md | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -286,6 +286,42 @@ This file tracks prioritized tasks with detailed attack plans. ## Future Goals & Ideas (Untriaged) +### Audio Tools +- [ ] **Task #64: specplay Enhancements**: Extend audio analysis tool with new features + - **Priority 1**: Spectral visualization (ASCII art), waveform display, frequency analysis, dynamic range + - **Priority 2**: Diff mode (compare .wav vs .spec), batch mode (CSV report, find clipping) + - **Priority 3**: WAV export (.spec → .wav), normalization + - **Priority 4**: Spectral envelope, harmonic analysis, onset detection + - **Priority 5**: Interactive mode (seek, loop, volume control) + - See `tools/specplay_README.md` for detailed feature list + +- [ ] **Task #65: Data-Driven Tempo Control**: Move tempo variation from code to data files + - **Current**: `g_tempo_scale` is hardcoded in `main.cc` with manual animation curves + - **Goal**: Define tempo curves in `.seq` or `.track` files for data-driven tempo control + - **Approach A**: Add TEMPO directive to `.seq` format + - Example: `TEMPO 0.0 1.0`, `TEMPO 10.0 2.0`, `TEMPO 20.0 1.0` (time, scale pairs) + - seq_compiler generates tempo curve array in timeline.cc + - **Approach B**: Add tempo column to music.track + - Each pattern trigger can specify tempo_scale override + - tracker_compiler generates tempo events in music_data.cc + - **Benefits**: Non-programmers can edit tempo, easier iteration, version control friendly + - **Priority**: Low (current hardcoded approach works, but less flexible) + +### Developer Tools +- [ ] **Task #66: External Asset Loading for Debugging**: mmap() asset files instead of embedded data + - **Current**: All assets embedded in `assets_data.cc` (regenerate on every asset change) + - **Goal**: Load assets from external files in debug builds for faster iteration + - **Scope**: macOS only, non-STRIP_ALL builds only + - **Implementation**: + - Add `DEMO_ENABLE_EXTERNAL_ASSETS` CMake option + - Modify `GetAsset()` to check for external file first (e.g., `assets/final/<name>`) + - Use `mmap()` to map file into memory (replaces `uint8_t asset[]` array) + - Fallback to embedded data if file not found + - **Benefits**: Edit shaders/assets without regenerating assets_data.cc (~10s rebuild) + - **Trade-offs**: Adds runtime file I/O, only useful during development + - **Priority**: Low (current workflow acceptable, but nice-to-have for rapid iteration) + +### Visual Effects - [ ] **Task #52: Procedural SDF Font**: Minimal bezier/spline set for [A-Z, 0-9] and SDF rendering. - [x] **Task #53: Particles Shader Polish**: Improve visual quality of particles. (Completed February 6, 2026) - Implemented transparent circular particles with smooth distance-based falloff |
