docs(TODO-1.0): close item 8 — Hold is a share of the post-A+D remainder, so the length bound holds by construction; 1:1 overlay scoped to sustain-less envelopes

This commit is contained in:
2026-07-28 20:00:26 -04:00
parent 587032ffa4
commit b2013f2056
+54 -24
View File
@@ -45,6 +45,16 @@ becomes an **AHD** (a Hold stage is added), and the doc's own prose (items 1
and 8) is updated to match — Daniel's verbatim asks stay exactly as originally
written.
A **second-batch second follow-up round** (2026-07-28, same day) closed item
8's last two questions — Hold's 0100% reference, and the scope of the
1:1-overlay/combined-bound policy. **With that, no open question anywhere in
this doc awaits a Daniel decision.** Everything still marked open is
verify-or-propose-at-implementation, not a blocker: item 9's loop-point
regression verification and its spec details (crossfade units, storage
confirmation, editing surface — each carries its own resolve-at-review path in
the item), and item 11's does-a-user-facing-pitch-velocity-curve-already-exist
check. Nothing is blocked on Daniel.
Ordering note: item 1's curve/overlay treatment explicitly anticipates item 2's
filter envelope ("filter to be added"), and item 3 layers on both. They can land
in sequence or together, but 1 and 2 are prerequisites for 3's full surface.
@@ -571,6 +581,12 @@ FX-button path remains unregressed.
> to 100%, and the visual overlay for the envelope is then 1:1 scale with the
> waveform time. D is not release, so it is not right anchored.
**Daniel's second follow-up (verbatim, 2026-07-28).**
> 1) 100% of the sample length - attack+decay times
> 2) for all envelopes that DON'T have a sustain stage. The 1:1 mapping only
> makes sense for trigger, not gated envelopes
**Intent.** A layout-policy change to the staged envelope overlay so it uses
the full panel width: today, with little or no release, the sustain portion
occupies only a small stretch and the whole figure reads off-center. The
@@ -594,13 +610,29 @@ change that turns the pitch envelope from AD into AHD**.
change, not a clarification. The doc's own prose — here and item 1's
sloped-segment reading — is updated to match; Daniel's verbatim asks stay
as written.)*
- **Hold ranges 0 to 100%.** Of *what* is unstated — see Open questions.
- **A + H + D combined cannot exceed the sample length:** the three segment
lengths' total time displacement is hard-bounded by the full sample
length.
- **Because of that bound, the pitch-envelope overlay is 1:1 scale with the
waveform time axis** — the drawn envelope maps directly onto the
displayed sample's time.
- **Hold ranges 0 to 100% of the time remaining after Attack and Decay** —
i.e. 100% of (sample length (attack time + decay time)). At 100%, Hold
fills all the remaining time; at 0% it takes none. *(Settled by second
follow-up.)*
- **The A + H + D ≤ sample-length bound holds by construction**, not by a
separate clamp: Hold is expressed as a fraction of what is left after
Attack and Decay, so the sum cannot overflow. Daniel's stated bound
("the combined A H and D segment lengths cannot exceed the full sample
length") is a *property* of the Hold definition, not a constraint to
enforce on top of it.
- **The overlay is therefore 1:1 scale with the waveform time axis** — the
drawn envelope maps directly onto the displayed sample's time.
- **Scope rule — split on the sustain stage.** The 1:1-overlay property and
the combined-time bound apply to **all envelopes that do NOT have a sustain
stage**; envelopes **with** a sustain stage (the amp and filter AHDSRs) get
the right-anchored-release policy instead. Daniel's rationale: the 1:1
mapping only makes sense for trigger, not gated envelopes — that is the
reasoning behind the stage-list rule, not a second competing rule. Today
the pitch AHD is the only sustain-less envelope, but the rule is general:
it governs any future sustain-less envelope too. The two policies
**coexist rather than merge**, split cleanly on whether the envelope has a
sustain stage — the prior revision's open reading, now confirmed. *(Settled
by second follow-up.)*
- **Cross-references.** Item 1 reworks this same overlay surface (radio
switch, mid-segment curve knots, recolor) — this item is cheapest folded
into or immediately after that work; item 1's sloped-segment rule reads
@@ -610,16 +642,11 @@ change that turns the pitch envelope from AD into AHD**.
**Open questions.**
- **Hold's 0100% — percent of what?** Daniel did not say: the full sample
length, the time remaining after Attack, or something else. A narrow Daniel
call — do not assume at implementation.
- **Are the 1:1-overlay property and the A+H+D ≤ sample-length bound
pitch-specific, or intended for all staged envelopes?** Daniel stated both
in the pitch-AHD context. An AHDSR with a right-anchored release cannot be
strictly 1:1 across an indefinite sustain, so the two policies appear to
coexist (right-anchoring for envelopes with a release; the 1:1 time-bounded
overlay for the pitch AHD) rather than merge — but that is an open reading
to confirm, not a settled conclusion.
- None remaining — both prior questions (Hold's 0100% reference; the scope
of the 1:1/combined-bound policy) closed by the second-batch second
follow-up round. The coexist-vs-merge reading the prior revision flagged is
confirmed: the two policies coexist, split cleanly on whether the envelope
has a sustain stage.
**Acceptance criteria.**
@@ -627,14 +654,17 @@ change that turns the pitch envelope from AD into AHD**.
right edge — the overlay reads full-width, not bunched left.
- Dragging the sustain→release top node adjusts release; the bottom-right
corner is fixed and not draggable.
- The envelopes with a release (amp, and filter once present) follow the same
anchoring policy; the pitch envelope's Decay is **not** right-anchored.
- The envelopes with a sustain stage (amp, and filter once present) follow
the same anchoring policy; the pitch envelope's Decay is **not**
right-anchored.
- The pitch envelope plays and displays three stages — Attack, Hold, Decay —
with Hold spanning 0100% of its (to-be-confirmed) reference; no
combination of A, H, and D settings yields a combined time displacement
exceeding the sample length.
- The pitch-envelope overlay is 1:1 with the waveform's time axis: a stage
boundary at N seconds sits over the waveform at N seconds.
with Hold spanning 0100% of the time remaining after Attack and Decay. By
construction, no combination of A, H, and D settings yields a combined time
displacement exceeding the sample length (at Hold = 100% the three stages
exactly fill it) — no separate clamp fires, because none is needed.
- The overlay of any sustain-less envelope (today: the pitch AHD) is 1:1 with
the waveform's time axis: a stage boundary at N seconds sits over the
waveform at N seconds.
---