From f6a43f1b1019c081c321bc7dc96b73dcb6167466 Mon Sep 17 00:00:00 2001 From: Aria Date: Thu, 8 Jan 2026 20:28:53 -0600 Subject: [PATCH] Make the scaling by freq in FM a separate node so that modulators behave like the fm control --- packages/superdough/helpers.mjs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/superdough/helpers.mjs b/packages/superdough/helpers.mjs index 8bd8b067b..460dd283c 100644 --- a/packages/superdough/helpers.mjs +++ b/packages/superdough/helpers.mjs @@ -461,10 +461,11 @@ export function applyFM(param, value, begin) { nodes[`fm_${idx}`] = [osc]; } const { input, output, freq, osc, toCleanup } = fms[idx]; - const g = gainNode(amt * freq); - io.push(isMod ? output.connect(g) : input); - cleanupOnEnd(osc, [...toCleanup, g]); - nodes[`fm_${idx}_gain`] = [g]; + const gAmt = gainNode(amt); + const gFreq = gainNode(freq); + io.push(isMod ? output.connect(gAmt).connect(gFreq) : input); + cleanupOnEnd(osc, [...toCleanup, gAmt, gFreq]); + nodes[`fm_${idx}_gain`] = [gAmt]; } if (!io[1]) { logger(