instrument: deliver continuous playback params live to sounding voices via a seqlock block, holding normalized stage position across time edits
This commit is contained in:
@@ -72,6 +72,20 @@ enum DeckGroupId {
|
||||
// reservation (knob_deck.h) so a mode flip never reflows the neighbouring groups.
|
||||
std::vector<DeckGroupDesc> sampleDeckGroups(PlayMode playMode);
|
||||
|
||||
// Whether control `id` is delivered LIVE — straight to the voices that are already sounding —
|
||||
// rather than through an instrument reload. The line is drawn at continuously-valued playback
|
||||
// controls, so this is a routing decision at the editor's commit site rather than a property
|
||||
// of any one knob; moving a control across the line is a change here and nowhere else.
|
||||
//
|
||||
// Deliberately NOT live, each for its own reason: the discrete toggles (play mode, pitch
|
||||
// engine, filter enable/law, pitch-envelope enable) name a different sound rather than a
|
||||
// different setting of one; the three capture-anchored overrides (root, loop span, start
|
||||
// frame) name positions in the decoded PCM; pitch key-track and the velocity->cutoff depth
|
||||
// feed values a voice latches at note-on by design (the pitch ratio and the velocity-curve
|
||||
// result), so making them live would retune or re-gain a note already struck; and Trigger's
|
||||
// %-length and fades resolve a play span that is a fact about the note.
|
||||
bool isLiveDeckParam(DeckParam id);
|
||||
|
||||
// The deck's BIPOLAR knob law: 0.5 of the knob's travel is zero depth, the ends are -1 and
|
||||
// +1. Exact inverses, and exact at the centre detent (0.5 -> 0 -> 0.5), so a knob parked at
|
||||
// centre can never persist a hair of modulation. Out-of-range norm clamps to the endpoints.
|
||||
|
||||
Reference in New Issue
Block a user