docs(TODO-1.0): item 14 — Trigger-mode amp fades replaced by AHD with curves; amp envelope shape follows playback mode
This commit is contained in:
+125
-6
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
Post-1.0 queue for ReaSampler — chiefly the 9000 instrument, plus two
|
Post-1.0 queue for ReaSampler — chiefly the 9000 instrument, plus two
|
||||||
extension-side bugs. Items 1–3 are the first batch, in Daniel's ordering
|
extension-side bugs. Items 1–3 are the first batch, in Daniel's ordering
|
||||||
(2026-07-28); items 4–13 are a second batch (2026-07-28, later the same day).
|
(2026-07-28); items 4–13 are a second batch (2026-07-28, later the same day);
|
||||||
|
item 14 is a third, single-item batch (2026-07-28, later again).
|
||||||
Deliberately specified at the level of product
|
Deliberately specified at the level of product
|
||||||
intent, user-visible behavior, and acceptance criteria — **no implementation
|
intent, user-visible behavior, and acceptance criteria — **no implementation
|
||||||
design, no file/module references**. These were authored while Phase Q was
|
design, no file/module references**. These were authored while Phase Q was
|
||||||
@@ -47,13 +48,25 @@ written.
|
|||||||
|
|
||||||
A **second-batch second follow-up round** (2026-07-28, same day) closed item
|
A **second-batch second follow-up round** (2026-07-28, same day) closed item
|
||||||
8's last two questions — Hold's 0–100% reference, and the scope of the
|
8's last two questions — Hold's 0–100% reference, and the scope of the
|
||||||
1:1-overlay/combined-bound policy. **With that, no open question anywhere in
|
1:1-overlay/combined-bound policy. **With that, no open question then in the
|
||||||
this doc awaits a Daniel decision.** Everything still marked open is
|
doc awaited a Daniel decision.** Everything still marked open in items 1–13 is
|
||||||
verify-or-propose-at-implementation, not a blocker: item 9's loop-point
|
verify-or-propose-at-implementation, not a blocker: item 9's loop-point
|
||||||
regression verification and its spec details (crossfade units, storage
|
regression verification and its spec details (crossfade units, storage
|
||||||
confirmation, editing surface — each carries its own resolve-at-review path in
|
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
|
the item), and item 11's does-a-user-facing-pitch-velocity-curve-already-exist
|
||||||
check. Nothing is blocked on Daniel.
|
check. Nothing in items 1–13 is blocked on Daniel.
|
||||||
|
|
||||||
|
A **third batch** (2026-07-28, later again) appends item 14 — a single
|
||||||
|
consolidation enhancement: in Trigger mode the amp envelope's
|
||||||
|
fade-in-length/fade-out-length pair is replaced by item 8's AHD (with item 1's
|
||||||
|
curves), so the amp envelope's staged shape follows the playback mode —
|
||||||
|
Gate → AHDSR, Trigger → AHD. Item 8's sustain-stage scope rule then covers the
|
||||||
|
amp envelope literally, not just by analogy (a one-line cross-reference is
|
||||||
|
added there). Item 14 carries **one question awaiting a Daniel decision** —
|
||||||
|
whether item 2's filter AHDSR follows the same mode-driven shape — so the doc
|
||||||
|
is no longer decision-clean. Its other open question (stage-value state across
|
||||||
|
the Gate/Trigger switch) is propose-at-implementation-review, not
|
||||||
|
Daniel-blocking.
|
||||||
|
|
||||||
Ordering note: item 1's curve/overlay treatment explicitly anticipates item 2's
|
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
|
filter envelope ("filter to be added"), and item 3 layers on both. They can land
|
||||||
@@ -68,7 +81,10 @@ loop-sustain is a Gate-mode (Staged) feature and composes with item 3's
|
|||||||
Gate-unavailable-in-Spline rule. Item 13 (anti-aliasing audit) touches nearly
|
Gate-unavailable-in-Spline rule. Item 13 (anti-aliasing audit) touches nearly
|
||||||
every surface the other items repaint — sequencing it after the layout/knob
|
every surface the other items repaint — sequencing it after the layout/knob
|
||||||
work (1, 8, 10, 11, 12) likely avoids doing the polish twice; that is an
|
work (1, 8, 10, 11, 12) likely avoids doing the polish twice; that is an
|
||||||
observation, not a decision.
|
observation, not a decision. Item 14 (third batch) rides directly on item 8's
|
||||||
|
AHD definition and item 1's curve treatment — cheapest folded into or
|
||||||
|
immediately after that combined work — and repaints amp-deck/overlay surface
|
||||||
|
that items 10 and 13 later polish.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -638,7 +654,9 @@ change that turns the pitch envelope from AD into AHD**.
|
|||||||
into or immediately after that work; item 1's sloped-segment rule reads
|
into or immediately after that work; item 1's sloped-segment rule reads
|
||||||
Attack and Decay for the pitch AHD (Hold is flat, no curve dial). Item 3's
|
Attack and Decay for the pitch AHD (Hold is flat, no curve dial). Item 3's
|
||||||
Spline overlays are unaffected by construction: a spline always spans the
|
Spline overlays are unaffected by construction: a spline always spans the
|
||||||
full sample width already.
|
full sample width already. Item 14 extends the AHD to the amp envelope's
|
||||||
|
Trigger mode, so this scope rule selects by the envelope's current shape
|
||||||
|
under the active playback mode — see item 14.
|
||||||
|
|
||||||
**Open questions.**
|
**Open questions.**
|
||||||
|
|
||||||
@@ -904,3 +922,104 @@ high-DPI, high-resolution displays. Daniel named the visibly pixely surfaces:
|
|||||||
- The audit produces a short disposition list: surfaces checked, which needed
|
- The audit produces a short disposition list: surfaces checked, which needed
|
||||||
work, which were already clean.
|
work, which were already clean.
|
||||||
- Daniel signs off by eye on the named surfaces.
|
- Daniel signs off by eye on the named surfaces.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14 — Enhancement: Trigger-mode amp envelope — fade-in/fade-out replaced by the AHD (with curves)
|
||||||
|
|
||||||
|
**Daniel's ask (verbatim, 2026-07-28).**
|
||||||
|
|
||||||
|
> the amp env trigger mode fade in length fade out changes to the AHD envelope
|
||||||
|
> (with curves of course), to reduce code for the same thing, and consolidate
|
||||||
|
> under the new design.
|
||||||
|
|
||||||
|
**Intent.** Consolidation. In Trigger mode the amp envelope's fade-in-length /
|
||||||
|
fade-out-length pair is retired and replaced by the same three-stage
|
||||||
|
Attack → Hold → Decay envelope item 8 specifies for the pitch envelope — with
|
||||||
|
item 1's per-segment curves. Daniel's stated motive is reducing code for the
|
||||||
|
same job: one staged-envelope design covering what is currently two separate
|
||||||
|
mechanisms doing the same thing. The product consequence: **the amp envelope's
|
||||||
|
staged shape follows the playback mode** — Gate → AHDSR (sustain,
|
||||||
|
right-anchored release, per item 8); Trigger → AHD (sustain-less).
|
||||||
|
|
||||||
|
**Behavior.**
|
||||||
|
|
||||||
|
- **Trigger mode: fades out, AHD in.** In Trigger mode the amp envelope is an
|
||||||
|
AHD per item 8's definition: Hold spans 0–100% of the time remaining after
|
||||||
|
Attack and Decay, so A + H + D ≤ sample length holds by construction and the
|
||||||
|
overlay is 1:1 with the waveform's time axis. The fade-in-length and
|
||||||
|
fade-out-length controls go away in Trigger mode; Attack and Decay carry
|
||||||
|
those roles under the new design.
|
||||||
|
- **With curves.** The Trigger AHD's sloped segments — Attack and Decay; Hold
|
||||||
|
is flat, as everywhere — get item 1's full curve treatment: exponent 0.1–10,
|
||||||
|
inner dials, mid-segment overlay knots, tertiary-purple rendering.
|
||||||
|
- **Gate mode unchanged.** In Gate mode the amp envelope remains the AHDSR
|
||||||
|
with item 8's right-anchored release. Item 9's loop-sustain spec (a
|
||||||
|
Gate-mode feature) is untouched.
|
||||||
|
- **Item 8's scope rule now covers the amp envelope literally.** Item 8
|
||||||
|
settled that the 1:1-overlay property and the by-construction combined-time
|
||||||
|
bound apply to envelopes **without a sustain stage**, and the
|
||||||
|
right-anchored-release policy to those **with** one — Daniel's rationale:
|
||||||
|
"the 1:1 mapping only makes sense for trigger, not gated envelopes." With
|
||||||
|
this item the amp envelope in Trigger mode *is* sustain-less, so it takes
|
||||||
|
the 1:1 time-mapped overlay automatically; in Gate mode it keeps the
|
||||||
|
right-anchored release. The rationale now describes the amp envelope
|
||||||
|
directly, not just by analogy: the rule selects by the envelope's **current
|
||||||
|
shape under the active playback mode**, not by which processor the envelope
|
||||||
|
modulates. No new rule is needed — item 8's rule already decides both cases.
|
||||||
|
- **Pre-existing instances reopen sounding identical.** The doc's standing
|
||||||
|
migration framing (items 1, 2, 11) applies: a project saved before this
|
||||||
|
change reopens with unchanged audible behavior — in particular, a Trigger
|
||||||
|
instance's prior fade-in/fade-out contour is reproduced by the loaded AHD.
|
||||||
|
The evident mapping (Attack ← fade-in, Decay ← fade-out, Hold ← the full
|
||||||
|
remainder, curve exponents at whatever value reproduces the prior fade
|
||||||
|
shape) is a verify-at-implementation detail, not a Daniel call; the gate
|
||||||
|
below states the requirement. A prior zero fade-out is Decay = 0 — the
|
||||||
|
abrupt end stays representable, so nothing the old controls could express
|
||||||
|
is lost.
|
||||||
|
- **Cross-references.** Item 8 supplies the AHD definition and the scope rule
|
||||||
|
(this item is that rule's second consumer); item 1 supplies the curves —
|
||||||
|
sequencing: cheapest folded into or immediately after that combined work.
|
||||||
|
Item 3 is unaffected in Spline mode (a spline already plays as a
|
||||||
|
full-sample-length time function — the trigger model); its "save but
|
||||||
|
inactive" dual-state precedent bears on the second open question below.
|
||||||
|
Item 4's Trigger × Preserve end-of-sample click sits in the region the
|
||||||
|
fade-out currently governs — whichever of the two lands first, item 4's
|
||||||
|
gate must be re-verified under the surviving mechanism.
|
||||||
|
|
||||||
|
**Open questions.**
|
||||||
|
|
||||||
|
- **Does the filter AHDSR follow the same mode-driven shape?** Item 2's
|
||||||
|
filter envelope is the same staged machinery, so Gate → AHDSR /
|
||||||
|
Trigger → AHD would extend naturally — but Daniel said this only for the
|
||||||
|
amp envelope, and it is not asserted here. **Awaits a Daniel decision** —
|
||||||
|
currently the doc's only Daniel-pending question.
|
||||||
|
- **Stage-value state across the Gate/Trigger switch — shared or per-mode?**
|
||||||
|
The Gate AHDSR and Trigger AHD share stage names (A, H, D); whether they
|
||||||
|
share *values* (one envelope whose S and R fall away in Trigger) or keep
|
||||||
|
per-mode state (item 3's "save but inactive" dual-state precedent) is
|
||||||
|
unspecified. Migration leans per-mode: an old instance carries both its
|
||||||
|
AHDSR values and its Trigger fade values, and a shared-value model cannot
|
||||||
|
preserve both modes' prior sound at once. Resolve at implementation review
|
||||||
|
with a proposal — not Daniel-blocking, but the sound-identical gate must
|
||||||
|
hold for whichever mode a saved instance plays in.
|
||||||
|
|
||||||
|
**Acceptance criteria.**
|
||||||
|
|
||||||
|
- In Trigger mode the amp deck shows Attack / Hold / Decay — no fade-in or
|
||||||
|
fade-out control anywhere in Trigger mode — with curve inner dials on
|
||||||
|
Attack and Decay and none on Hold; when the amp envelope is overlay-active
|
||||||
|
(item 1's radio), its overlay is 1:1 with the waveform time axis, and no
|
||||||
|
combination of A, H, D settings exceeds the sample length (Hold = 100%
|
||||||
|
exactly fills it — by construction, no clamp).
|
||||||
|
- In Gate mode the amp envelope is the unchanged AHDSR: sustain stage,
|
||||||
|
right-anchored release per item 8.
|
||||||
|
- Switching between Gate and Trigger playback switches the amp envelope
|
||||||
|
surface (deck and overlay) between AHDSR and AHD accordingly.
|
||||||
|
- A project saved before this change reopens sounding identical: a Trigger
|
||||||
|
instance's prior fade-in/fade-out contour — including a zero fade-out's
|
||||||
|
abrupt end — is audibly reproduced by the loaded AHD.
|
||||||
|
- The Trigger amp AHD behaves stage-for-stage like item 8's pitch AHD — Hold
|
||||||
|
semantics, curve treatment, and overlay mapping match. (This is the
|
||||||
|
observable proxy for the consolidation motive: one staged-envelope design,
|
||||||
|
two consumers.)
|
||||||
|
|||||||
Reference in New Issue
Block a user