diff --git a/playground/js/a-app.js b/playground/js/a-app.js index 7c45998..fe19e87 100644 --- a/playground/js/a-app.js +++ b/playground/js/a-app.js @@ -1351,8 +1351,8 @@ async function init() { { id: 'modular', displayName: 'Modular', - paramCount: 512, - description: 'Shared mod pool (ADSRs + LFOs) routed through a matrix into a swappable voice. Starts with a 3-osc subtractive sub-engine.', + paramCount: 32, + description: 'Shared mod pool (4 ADSRs + 8 LFOs) driving a swappable voice via a routing matrix. Starts with a 3-osc subtractive sub-engine.', }, ]; const engineSwitcherEl = document.getElementById('synth-engine-switcher'); diff --git a/playground/js/ui/modular-ui.js b/playground/js/ui/modular-ui.js index 86d7fea..abb26a9 100644 --- a/playground/js/ui/modular-ui.js +++ b/playground/js/ui/modular-ui.js @@ -347,8 +347,7 @@ export function initModularUI({ getEngine, onStateChange } = {}) { // Seed current values from the engine's _lastRawByLabel map (which // tracks every write via setParam / _setRawByLabel / default patch), // falling back to the walk-entry init value for cells the user has - // never touched. - const destNames = engine.destNames || []; + // never touched. (destNames is already in scope from the early guard.) const lastRaw = engine._lastRawByLabel || new Map(); for (let d = 0; d < destNames.length; d++) { const destName = destNames[d];