Report the instrument's automatable parameters to the host under a frozen id table, in signal-flow order, with real units
42 of 44 ids issued: pitch key-track and Trigger length stay reserved pending a live path. Master gain reclassified Live — it never reloaded.
This commit is contained in:
@@ -40,6 +40,10 @@ static void testEveryDeckControlIsClassifiedIntoOneOfTheThreeCommitTiers() {
|
||||
DeckParam::kFilterEnvAttackCurve, DeckParam::kFilterEnvDecayCurve,
|
||||
DeckParam::kFilterEnvReleaseCurve,
|
||||
DeckParam::kFilterTrigAttackCurve, DeckParam::kFilterTrigDecayCurve,
|
||||
// The one live control that does not ride the live block: a lock-free atomic the audio
|
||||
// thread applies as a post-sum multiply. The tier answers "does an edit reach the audio
|
||||
// without a reload", not "which mechanism carries it".
|
||||
DeckParam::kMasterGain,
|
||||
};
|
||||
for (DeckParam p : live) CHECK(deckParamCommit(p) == LiveCommit::Live);
|
||||
|
||||
@@ -60,7 +64,7 @@ static void testEveryDeckControlIsClassifiedIntoOneOfTheThreeCommitTiers() {
|
||||
DeckParam::kAmpEnvSelect, DeckParam::kPitchEnvSelect, DeckParam::kFilterEnvSelect,
|
||||
DeckParam::kAmpEnvMode, DeckParam::kPitchEnvMode, DeckParam::kFilterEnvMode,
|
||||
DeckParam::kVoiceCount, DeckParam::kVoiceMode,
|
||||
DeckParam::kMonoTrigger, DeckParam::kMasterGain, DeckParam::kLimiterEnable,
|
||||
DeckParam::kMonoTrigger, DeckParam::kLimiterEnable,
|
||||
DeckParam::kMasterMeter, DeckParam::kMasterGr,
|
||||
};
|
||||
for (DeckParam p : reloads) CHECK(deckParamCommit(p) == LiveCommit::Reload);
|
||||
@@ -96,7 +100,10 @@ static void testOnlyALiveControlsDragTakesTheLiveTier() {
|
||||
// it move a sounding note) nor as Reload (which would re-decode the WAV under a swept knob).
|
||||
CHECK(knob(DeckParam::kRate) == LiveCommit::NoteOnLatched);
|
||||
CHECK(knob(DeckParam::kTrigLength) == LiveCommit::Reload);
|
||||
CHECK(knob(DeckParam::kMasterGain) == LiveCommit::Reload);
|
||||
// Master gain is Live and reaches the audio BESIDE the live block rather than through it —
|
||||
// one atomic the audio thread applies as a post-sum multiply. Classifying it Reload would
|
||||
// claim a gain move re-decodes the WAV, which it never did.
|
||||
CHECK(knob(DeckParam::kMasterGain) == LiveCommit::Live);
|
||||
CHECK(knob(DeckParam::kAmpEnvSelect) == LiveCommit::Reload);
|
||||
// The shell's processor-side sentinels (preview velocity is -2) and any out-of-range id
|
||||
// are not parameter-set controls, so they must never reach the enum.
|
||||
|
||||
Reference in New Issue
Block a user