summaryrefslogtreecommitdiff
path: root/TODO.md
diff options
context:
space:
mode:
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/TODO.md b/TODO.md
index 3c382d6..5fcad5d 100644
--- a/TODO.md
+++ b/TODO.md
@@ -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