From 70c64867baa30c83334559d3023153dfe3f9ff79 Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 9 Feb 2026 10:43:11 +0100 Subject: docs: Simplify all design docs (50% reduction, 1687 lines removed) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consolidated and streamlined all documentation: **Merged:** - PROCEDURAL.md → deleted (content in ASSET_SYSTEM.md) - FETCH_DEPS.md → BUILD.md (dependencies section) **Simplified (line reductions):** - HOWTO.md: 468→219 (53%) - CONTRIBUTING.md: 453→173 (62%) - SPECTRAL_BRUSH_EDITOR.md: 497→195 (61%) - SEQUENCE.md: 355→197 (45%) - CONTEXT_MAINTENANCE.md: 332→200 (40%) - test_demo_README.md: 273→122 (55%) - ASSET_SYSTEM.md: 271→108 (60%) - MASKING_SYSTEM.md: 240→125 (48%) - 3D.md: 196→118 (40%) - TRACKER.md: 124→76 (39%) - SCENE_FORMAT.md: 59→49 (17%) - BUILD.md: 83→69 (17%) **Total:** 3344→1657 lines (50.4% reduction) **Changes:** - Removed verbose examples, redundant explanations, unimplemented features - Moved detailed task plans to TODO.md (single source of truth) - Consolidated coding style rules - Kept essential APIs, syntax references, technical details **PROJECT_CONTEXT.md:** - Added "Design Docs Quick Reference" with 2-3 line summaries - Removed duplicate task entries - All design docs now loaded on-demand via Read tool Result: Context memory files reduced from 31.6k to ~15k tokens. --- doc/TRACKER.md | 74 +++++++++++----------------------------------------------- 1 file changed, 13 insertions(+), 61 deletions(-) (limited to 'doc/TRACKER.md') diff --git a/doc/TRACKER.md b/doc/TRACKER.md index f3a34a3..6e71951 100644 --- a/doc/TRACKER.md +++ b/doc/TRACKER.md @@ -1,56 +1,17 @@ # Minimal Audio Tracker -in addition to being able to generate spectrograms (aka "Samples") on the -fly and play them at once, we need a way to assemble samples (assets or -generated) into modifiable patterns and loops. Like what the Trackers were -doing in the old time. - -## The idea - -A script can take a 'tracker music' text file that describes the sequence -of samples (a 'pattern') in a first part. In a second part, these sequence -a laid out with a timestamp (potentially overlapping) to generate the full -music score. - -The patterns' samples (spectrograms) are not yet generated, it's just the -'musical score' here. We still need to 'play' the score but with modifiers -applied. - -### Modifiers - -For diversity, these essential patterns can be modified on the fly before -being generated as spectrogram on the fly. -Modifiers could be: - * randomize (for drums, e.g.) - * add accents and stresses - * modulate volume - * add distortion or noise - * add 'grain' and static noise - * flanger, vocoding, robotic voice, etc. - * etc. - -These modifiers are applied to a predefined pattern just before it's -generated for playback (or assembling in the final track). - -### How would that work in practice? - -The musical score is a text file, that a tool will convert to run-time -code to be compiled in the final binary demo64k. -This generated code can be mixed with fixed code from the demo codebase -itself (explosion predefined at a given time ,etc.) -The baking is done at compile time, and the code will go in src/generated/ +System for assembling audio samples (assets or procedural) into patterns and loops. ## .track File Format -### Timing System +### Timing Convention -**Unit-less Timing Convention:** -- All time values are **unit-less** (not beats or seconds) -- Convention: **1 unit = 4 beats** -- Conversion to seconds: `seconds = units * (4 / BPM) * 60` +**Unit-less timing:** +- **1 unit = 4 beats** +- Conversion: `seconds = units * (4 / BPM) * 60` - At 120 BPM: 1 unit = 2 seconds -This makes patterns independent of BPM - changing BPM only affects playback speed, not pattern structure. +Patterns are BPM-independent. Changing BPM only affects playback speed. ### File Structure @@ -96,29 +57,20 @@ PATTERN melody LENGTH 1.0 0.50, NOTE_G4, 0.8, 0.0 ``` -### Conversion Reference - -At 120 BPM (1 unit = 4 beats = 2 seconds): - -| Units | Beats | Seconds | Description | -|-------|-------|---------|-------------| -| 0.00 | 0 | 0.0 | Start | -| 0.25 | 1 | 0.5 | Quarter | -| 0.50 | 2 | 1.0 | Half | -| 0.75 | 3 | 1.5 | Three-quarter | -| 1.00 | 4 | 2.0 | Full pattern | - ### Pattern Length -- `LENGTH` parameter is optional, defaults to 1.0 -- Can be any value (0.5 for half-length, 2.0 for double-length, etc.) -- Events must be within range `[0.0, LENGTH]` +- `LENGTH` parameter defaults to 1.0 if omitted +- Can be any value (0.5 for half-length, 2.0 for double-length) +- Events must be within `[0.0, LENGTH]` -Example of half-length pattern: +Example half-length pattern: ``` PATTERN short_fill LENGTH 0.5 # 2 beats = 1 second at 120 BPM 0.00, ASSET_HIHAT, 0.7, 0.0 0.50, ASSET_HIHAT, 0.6, 0.0 # 0.50 * 0.5 = 1 beat into the pattern ``` +### Future: Modifiers +Potential runtime modifiers (not yet implemented): +- Randomization, accents, volume modulation, distortion, noise, effects -- cgit v1.2.3