Skip to content

Commit 1acd0a5

Browse files
mkschulzeclaude
andcommitted
fix(14.1): guard metronome APVTS sync during prelisten mode
syncApvtsToAtomics() runs every processBlock and overwrites config_metronome with the UI slider value, undoing the force-mute set by PrelistenCommand. Skip metronome sync when prelisten_mode is active so the zero volume persists. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a11d2a5 commit 1acd0a5

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

juce/JamWideJuceProcessor.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,17 @@ void JamWideJuceProcessor::syncApvtsToAtomics()
196196
client->config_mastermute.store(
197197
*apvts.getRawParameterValue("masterMute") >= 0.5f,
198198
std::memory_order_relaxed);
199-
client->config_metronome.store(
200-
*apvts.getRawParameterValue("metroVol"),
201-
std::memory_order_relaxed);
202-
client->config_metronome_mute.store(
203-
*apvts.getRawParameterValue("metroMute") >= 0.5f,
204-
std::memory_order_relaxed);
199+
// During prelisten, metronome is force-muted by the run thread.
200+
// Skip APVTS→atomic sync so the zero isn't overwritten every buffer.
201+
if (!prelisten_mode.load(std::memory_order_relaxed))
202+
{
203+
client->config_metronome.store(
204+
*apvts.getRawParameterValue("metroVol"),
205+
std::memory_order_relaxed);
206+
client->config_metronome_mute.store(
207+
*apvts.getRawParameterValue("metroMute") >= 0.5f,
208+
std::memory_order_relaxed);
209+
}
205210
}
206211
}
207212

0 commit comments

Comments
 (0)