summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-14 18:07:05 +0100
committerskal <pascal.massimino@gmail.com>2026-02-14 18:07:05 +0100
commita477013931a3cc7d62cd7bab5e3b556f5af1936b (patch)
tree5524b439831ad3a529522d2af4087d13e5ec848d
parente9dde3cea39e69d6188a7f49034f6d95e4c8b6b4 (diff)
docs: mark tracker humanization task as IMPLEMENTED
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
-rw-r--r--TODO.md18
1 files changed, 10 insertions, 8 deletions
diff --git a/TODO.md b/TODO.md
index 7d89e9e..2ee19ef 100644
--- a/TODO.md
+++ b/TODO.md
@@ -47,20 +47,22 @@ Enhanced CNN post-processing with multi-dimensional feature inputs.
---
-## Priority 3: Tracker Humanization & Sample Offset
+## ~~Priority 3: Tracker Humanization & Sample Offset~~ [IMPLEMENTED]
Enhance tracker with sample offset and humanization for realistic playback.
+**Status:** ✅ Both features implemented and tested (commit e9dde3c)
+
**Features:**
-1. **Sample Offset:** Intrinsic offset value per sample (shifts trigger left, preserves beat sync)
- - Add `offset_sec` to `NoteParams` (gen.h) and `Sample` struct
- - Extend `.track` SAMPLE syntax: `SAMPLE <name> [OFFSET <sec>] [VOL <vol>]`
- - Apply negative `start_offset_samples` in `trigger_note_event()`
+1. **Sample Offset (compile-time):** Intrinsic offset per sample, zero runtime cost
+ - `.track` syntax: `SAMPLE <name> OFFSET <sec>`
+ - Applied during compilation, preserves beat sync
-2. **Humanization:** Per-note random timing/volume variation (baked into WAV export)
- - Add to `TrackerScore`: `humanize_seed`, `timing_variation_pct`, `volume_variation_pct`
+2. **Humanization (runtime, deterministic):** Per-note timing/volume variation
- `.track` syntax: `HUMANIZE SEED <int> TIMING <pct> VOLUME <pct>`
- - Apply per-event RNG modulation in `tracker_update()`
+ - Deterministic RNG ensures identical playback and WAV export
+
+**Test:** `data/test_humanize.track`
---