Unify root timing and persistent lane targets

This commit is contained in:
Your Name 2026-10-02 01:11:55 -04:00
parent f5a39aee39
commit 1b2b4ad3d2
11 changed files with 175 additions and 33 deletions

View file

@ -4,6 +4,10 @@ Project `:fps` is the playback and export grid. Each symbol has its own native
`:fps` and `:frames`; keys, spans, trace choices and corrections stay in that
native space. A symbol without an explicit rate inherits the document rate;
changing project fps first records that rate so its existing timing stays put.
The untouched symbol in a new document is deliberately different: it has no
authored timing to preserve, so it stays on the project grid and its empty frame
extent is rescaled to keep the same duration. This makes changing fps before
authoring establish the editor's grid instead of preserving the 30fps default.
An output frame selects the latest native frame at or before its time:
`floor(output-frame * native-fps / output-fps)`. Thus 30fps content in a 12fps