feat(S9/S8): bank-generation change-detection + instrument-side assignment reader
Extension stamps a monotonic bank_generation counter, bumped at content mutations; the VST3 instrument polls it off-thread on an editor timer and consumes assignment requests, refreshing playback hands-free.
This commit is contained in:
@@ -45,6 +45,19 @@ inline constexpr const char* kProjExtTailKey = "tail_setting";
|
||||
// The per-project minted-GUID identity key.
|
||||
inline constexpr const char* kProjExtGuidKey = "project_guid";
|
||||
|
||||
// The S9 BANK-GENERATION key. The EXTENSION stamps a monotonic decimal counter here that it
|
||||
// bumps on every bank-content mutation that changes what a live instance would PLAY (capture
|
||||
// add, re-capture-in-place, sample remove, move/copy affecting banks, ingest import). The VST3
|
||||
// instrument READS it off the audio thread on a UI-timer cadence and, when the value differs
|
||||
// from what it last saw, calls reloadFromBank() so a recapture/ingest refreshes playing
|
||||
// instances hands-free (the S9 change-detection trigger). WIRE-SHARED (instrument reads it);
|
||||
// the instrument never WRITES it (the extension owns it, same read-only-over-bank rule as the
|
||||
// assignment request). Additive to the persist blob — an absent stamp reads as generation 0
|
||||
// (a pre-S9 project), and the first bump (>= 1) then reads as a change. FOREVER-STABLE once
|
||||
// shipped: changing this spelling resets every already-shipped instance's change-detection
|
||||
// baseline (a one-time spurious reload), so it is fixed like every sibling key.
|
||||
inline constexpr const char* kProjExtBankGenKey = "bank_generation";
|
||||
|
||||
// The S8 ingest ASSIGNMENT-REQUEST key. The EXTENSION writes an assignment request here
|
||||
// after an ingest-with-assign (arrange capture / Media-Explorer import / drop-onto-panel):
|
||||
// "the active sampler instance should now play THIS sample." The value is the pure
|
||||
|
||||
Reference in New Issue
Block a user