fix: close round-3 review findings — smallest-target-first, residue test fix, extraction
Waveform overlay now resolves node/tab/marker click collisions by target area instead of check order; residue test now uses a distinguishing fixture; Gate-unavailable-while-drawn logic extracted to one pure helper shared by resolvePlay and applyControl.
This commit is contained in:
@@ -232,13 +232,14 @@ public:
|
||||
// True once the cursor has settled on the contour's LAST segment. On its own this does NOT
|
||||
// make a 0 read here a terminus: the final segment's LEFT endpoint can also be 0 (a 2-point
|
||||
// contour is nothing but a single "final" segment starting at frame 0), which would read 0
|
||||
// while about to rise. Voice::tickAmplitude pairs this with terminalValue() == 0 — the
|
||||
// while about to rise. Voice::tickAmplitude pairs this with segmentEndValue() == 0 — the
|
||||
// segment's RIGHT endpoint, i.e. the whole contour's true end — before calling a 0 read the
|
||||
// note's genuine permanent terminus.
|
||||
bool onFinalSegment() const { return seg_ + 2 == n_; }
|
||||
// The current segment's right endpoint — the whole contour's terminal Y only when paired
|
||||
// with onFinalSegment() (see there).
|
||||
double terminalValue() const { return y1_; }
|
||||
// The CURRENT SEGMENT's right endpoint — not a contour-level concept despite the name's
|
||||
// shape; it is the whole contour's terminal Y only when paired with onFinalSegment() (see
|
||||
// there). Named for what it returns, not for its one call site's use of it.
|
||||
double segmentEndValue() const { return y1_; }
|
||||
|
||||
// `phase` is normalized position over the contour's whole span, [0,1]; out-of-range clamps
|
||||
// to the terminal values (a note past its span holds the contour's last level).
|
||||
|
||||
Reference in New Issue
Block a user