Γ-W1-T1 review fixes: mode-independent taper rounding, sharper drag-step test, reset-sweep verifies stored fields
Swap nearbyint for std::round (MXCSR-independent); derive the finest-drag test from the editor floor, not the knob; verify resets against fields, not norms; record the spline-point modifier exclusion.
This commit is contained in:
@@ -48,6 +48,16 @@ void setDeckParam(DeckParam id, PlaySeconds& play, double value, int segment);
|
||||
// For knob-valued controls — a toggle has no reset gesture.
|
||||
void resetDeckParam(DeckParam id, PlaySeconds& play);
|
||||
|
||||
// The ADDRESS of the one stored field `id` owns — the mechanism resetDeckParam bypasses the taper
|
||||
// with. Exposed beyond that one caller so a test can verify a reset (or any other mutation)
|
||||
// against the actual stored field rather than its normalized read-back, which deckParamNorm does
|
||||
// not guarantee is injective. Null for a control with no reset gesture (a toggle, radio, or
|
||||
// curve-popup cell) or one whose value lives outside PlaySeconds (master gain, key-track).
|
||||
double* deckDoubleField(DeckParam id, PlaySeconds& p);
|
||||
// The filter's four tone controls store their normalized position as float — see deckFloatField's
|
||||
// definition for why that is a second resolver rather than a widened first one.
|
||||
float* deckFloatField(DeckParam id, PlaySeconds& p);
|
||||
|
||||
// THE snap-unit table: which whole unit Shift snaps each control to. Includes the deck's
|
||||
// processor-side ids (voice count, master gain), which have no entry in the two functions above
|
||||
// because their VALUE lives outside the parameter set — the unit does not.
|
||||
|
||||
Reference in New Issue
Block a user