instrument: the filter's velocity depth knob returns and multiplies the bipolar curve; the pre-v12 lift is a pure domain re-tag
This commit is contained in:
@@ -120,7 +120,8 @@ static void testFilterGroupCarriesItsToneControlsPlusModulation() {
|
||||
const std::vector<int> expected = {
|
||||
cell(DeckParam::kFilterMorph), cell(DeckParam::kFilterCutoff),
|
||||
cell(DeckParam::kFilterQ), cell(DeckParam::kFilterDrive),
|
||||
cell(DeckParam::kFilterModAmt), cell(DeckParam::kFilterKeyTrack)};
|
||||
cell(DeckParam::kFilterModAmt), cell(DeckParam::kFilterVel),
|
||||
cell(DeckParam::kFilterKeyTrack)};
|
||||
CHECK(f.cellIds == expected);
|
||||
// Off by default is a state question, but reachability is a layout one: the enable
|
||||
// toggle is in the caption row and the morph law in the knob row.
|
||||
@@ -237,9 +238,10 @@ static void testAmpGroupWidthSurvivesAGateTriggerFlip() {
|
||||
static void testWrappedDeckHeightAtTheEditorFloorWidth() {
|
||||
const std::vector<DeckGroupDesc> g = sampleDeckGroups(PlayMode::Gate);
|
||||
// At the floor (== default) 840 the deck takes three rows: PITCH + PITCH ENV + FILTER fill
|
||||
// the first, FILTER ENV + AMP + VELOCITY the second, VOICE + MASTER the third. The eight
|
||||
// groups total more than two rows can hold at this width — the VELOCITY group's three
|
||||
// cells are ~150 px more than the FILTER group gave back when its velocity depth retired.
|
||||
// the first (818 of the 824 available — six px of headroom, so one more FILTER cell would
|
||||
// wrap the group and reflow everything under it), FILTER ENV + AMP + VELOCITY the second,
|
||||
// VOICE + MASTER the third. Two rows cannot hold the eight groups in ANY order at this
|
||||
// width: 1666 px of group plus 72 px of gaps against a 1648 px two-row capacity.
|
||||
CHECK(deckRowCount(g, kAvailAtMinWidth) == 3);
|
||||
CHECK(deckHeight(g, kAvailAtMinWidth) == 3 * kDeckGroupH + 2 * kDeckRowGap);
|
||||
|
||||
@@ -285,7 +287,7 @@ static void testHitTestResolvesTheNewFilterControls() {
|
||||
CHECK(hit.kind == DeckHitKind::Knob);
|
||||
CHECK(hit.id == c.id);
|
||||
}
|
||||
CHECK(f.cells.size() == 6);
|
||||
CHECK(f.cells.size() == 7);
|
||||
CHECK(f.cells[1].id == cell(DeckParam::kFilterCutoff));
|
||||
|
||||
// The enable toggle's two segments and the morph-law row toggle's two.
|
||||
@@ -333,11 +335,12 @@ static void testBipolarKnobLawRoundTripsAndIsExactAtCentre() {
|
||||
}
|
||||
|
||||
static void testEveryDeckControlIsClassifiedLiveOrReloading() {
|
||||
// The live set: the six filter tone/modulation knobs, plus every stage time, stage level,
|
||||
// The live set: the seven filter tone/modulation knobs, plus every stage time, stage level,
|
||||
// hold fraction and curve exponent on all three envelopes — in BOTH mode shapes.
|
||||
const DeckParam live[] = {
|
||||
DeckParam::kFilterMorph, DeckParam::kFilterCutoff, DeckParam::kFilterQ,
|
||||
DeckParam::kFilterDrive, DeckParam::kFilterModAmt, DeckParam::kFilterKeyTrack,
|
||||
DeckParam::kFilterDrive, DeckParam::kFilterModAmt, DeckParam::kFilterVel,
|
||||
DeckParam::kFilterKeyTrack,
|
||||
DeckParam::kAttack, DeckParam::kHold, DeckParam::kDecay, DeckParam::kSustain,
|
||||
DeckParam::kRelease,
|
||||
DeckParam::kTrigAttack, DeckParam::kTrigHold, DeckParam::kTrigDecay,
|
||||
|
||||
Reference in New Issue
Block a user