Ξ-W2-T1 re-review cleanup: soften ordering claim, bound bake guard fields, dedup gain/play-mode rationale, quiet foreign WrongProject noise

This commit is contained in:
2026-08-01 17:23:00 -04:00
parent 39c2d1cdb4
commit a09e45fc1d
8 changed files with 51 additions and 26 deletions
+6 -3
View File
@@ -298,9 +298,12 @@ void ReaSamplerProcessor::publishBuiltLocked(std::unique_ptr<LoadedInstrument> b
graveyard_.end());
LoadedInstrument* prev = live_.exchange(built.release());
// A bake's reset gain lands here rather than at its call site, so the gain and the
// capture it belongs to become audible to process() in the same instant. A tail still
// ringing out of the drain does take the new gain — one gain sits above every snapshot,
// the same shape as ONE BLOCK, ONE RATE (see builtSampleRate_).
// capture it belongs to become audible to process() within one block of each other.
// live_.exchange above and the gain store below are two independent relaxed atomics
// with no ordering between them, so the honest bound is "within one block", not "the
// same instant" — a tail still ringing out of the drain does take the new gain, one
// gain sitting above every snapshot, the same shape as ONE BLOCK, ONE RATE (see
// builtSampleRate_).
if (gainAtNextPublish_) {
setMasterGainLinear(*gainAtNextPublish_);
gainAtNextPublish_.reset();