Service both VST3 parameter channels, and promote pitch key-track and Trigger length so all 44 ids issue
The SDK's own single-component sample drains inputParameterChanges in process() and implements setParamNormalized; automation was reading the GUI channel alone. The audio thread now patches a block it solely owns.
This commit is contained in:
+12
-11
@@ -150,22 +150,23 @@ static void testTheExposedSetIsExactlyThePredicateAnswer() {
|
||||
}
|
||||
}
|
||||
|
||||
static void testAReservedRowIsNumberedButNotIssued() {
|
||||
// Key-track (pitch) and Trigger length are note-on-latch candidates that still route through
|
||||
// the reload tier, so they are NOT issued to the host today. Their numbers stay reserved
|
||||
// rather than retired: nothing shipped under them, so a later promotion issues the same id
|
||||
// and no other id moves.
|
||||
static void testEveryNumberedRowIsIssued() {
|
||||
// Key-track (pitch) and Trigger length were reserved-but-unissued while they routed through
|
||||
// the reload tier; both are note-on-latched now, so both are issued under the numbers that
|
||||
// were held for them and no other id moved — which is what the block-and-step scheme bought.
|
||||
CHECK(paramIdFor(DeckParam::kKeyTrack) == 1000);
|
||||
CHECK(paramIdFor(DeckParam::kTrigLength) == 1450);
|
||||
CHECK(!isExposed(DeckParam::kKeyTrack));
|
||||
CHECK(!isExposed(DeckParam::kTrigLength));
|
||||
CHECK(exposedRowFor(1000) == nullptr);
|
||||
CHECK(exposedRowFor(1450) == nullptr);
|
||||
CHECK(isExposed(DeckParam::kKeyTrack));
|
||||
CHECK(isExposed(DeckParam::kTrigLength));
|
||||
CHECK(exposedRowFor(1000) != nullptr);
|
||||
CHECK(exposedRowFor(1450) != nullptr);
|
||||
// Master gain IS issued: one atomic store the audio thread picks up next block is the live
|
||||
// tier by that tier's own definition.
|
||||
CHECK(isExposed(DeckParam::kMasterGain));
|
||||
CHECK(exposedRowFor(1700) != nullptr);
|
||||
CHECK(exposedParams().size() == paramTable().size() - 2);
|
||||
// The whole table is issued today — 44 of 44.
|
||||
CHECK(exposedParams().size() == paramTable().size());
|
||||
CHECK(exposedParams().size() == 44);
|
||||
}
|
||||
|
||||
static void testEveryRowCarriesADistinctTitleAndShortTitle() {
|
||||
@@ -186,7 +187,7 @@ int main() {
|
||||
testAnInnerDialSitsBesideTheKnobItShapes();
|
||||
testABlockCarriesOnlyItsOwnGroup();
|
||||
testTheExposedSetIsExactlyThePredicateAnswer();
|
||||
testAReservedRowIsNumberedButNotIssued();
|
||||
testEveryNumberedRowIsIssued();
|
||||
testEveryRowCarriesADistinctTitleAndShortTitle();
|
||||
if (g_fail == 0) std::printf("param_id: all tests passed\n");
|
||||
return g_fail == 0 ? 0 : 1;
|
||||
|
||||
Reference in New Issue
Block a user