From 19e0ed7ad7e48033b5ad00301bfa76f6ceee7478 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Sun, 9 Aug 2026 11:50:01 -0700 Subject: [PATCH] docs(design): automated parameters read live instead of drawing their lane MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An earlier pass drew each automation lane's envelope shape inside its module. Dropped: the lane already has a home in the timeline, and a second small drawing of it in the rack is decoration. What the rack is actually missing is the CURRENT value. The panel already receives that — FxSectionProps.liveAutomationValues exists because "an automated parameter's stored number is only the seed the lane replaced, so a rack that shows it stands still while the carve is audibly working". So an automated row is now an ordinary parameter row whose number is live at the playhead, marked `~` to say it is driven rather than set, with the marker moving with it. Stopped, the values go grey and hold. Better on its own terms and cheaper to build: no new drawing, and it consumes a prop that already exists for exactly this. Co-Authored-By: Claude Opus 5 (1M context) --- plans/audio-fx-presets.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plans/audio-fx-presets.md b/plans/audio-fx-presets.md index cf6c57b4a7..ac253e85f5 100644 --- a/plans/audio-fx-presets.md +++ b/plans/audio-fx-presets.md @@ -315,12 +315,23 @@ quietest, which matters on a surface authors stare at while mixing. | Numbered nodes 01…06 | implicit top-to-bottom order | | Bypassed node: ring drawn open, wire beside it solid and unbroken | a row at 50% opacity | | Preset nodes gathered under a right-hand brace with its name | no grouping at all | -| An automated parameter draws its lane shape; the value column reads `lane` | a stale number the lane already replaced | +| An automated parameter's value reads **live at the playhead** and ticks while the transport runs, marked `~` | the stale seed the lane already replaced | | A measuring module gets a second ring | nothing distinguishes carve from a hand-set chain | That last pair is the static-versus-script distinction from §4, delivered as drawing rather than documentation. +**Automated parameters show numbers, not shapes.** An earlier pass drew each +lane's envelope inside the module; that was dropped. The lane already has a home +in the timeline, and a second small drawing of it in the rack is decoration — +what the rack is missing is the *current* value. The panel already receives it: +`FxSectionProps.liveAutomationValues` exists precisely because "an automated +parameter's stored number is only the seed the lane replaced, so a rack that +shows it stands still while the carve is audibly working". So the row is an +ordinary parameter row whose number is live, `~` on the label saying it is +driven rather than set, and the marker moving with it. Stopped, the values go +grey and hold at the playhead. + **The preset menu preview is the chain** — each row previews the nodes it will draw as small connected rings in their family colours, so the shape you pick is the shape you get. Smart entries read `MEASURES` instead.