memlnaut-nisps/playground/js/synth
monkey-w1n5t0n 01c1346dfd fix(modular): restore matrix in paramMeta; amp floor via positive-only mod_amp
b290144 made matrix cells opt-in to prevent joystick-silences-voice,
but that broke modular-ui.updateLive(): the matrix DOM stopped
reflecting live MLP outputs because matrixIndexCache was empty when
buildMatrixIndex() walked paramMeta. This was the same regression
6072fe8 had previously fixed.

Fix it structurally at the DSP layer instead: amp_val now computes
as `clamp(base_amp + max(0, mod_amp)) * level * vel_gain`, so matrix
d08_amp cells can only boost the amp floor — never cut it. base_amp
defaults to 1.0 (always audible), and presets that want classic
envelope-gated voices (slow pad, plucky bass, crystal, morphing
drone) drop base_amp to 0 and layer a positive ADSR→amp route on top.

With the DSP guard in place, all 480 matrix cells can safely live
in paramMeta again, and updateLive() gets its live visual feedback
back. Revert the opt-in gate in _rebuildParamMeta and the 32-param
test counts, and add a regression test asserting that every matrix
destination has 48 cells in paramMeta — that's what updateLive needs.
2026-04-11 09:39:58 +02:00
..
additive-engine.js feat(playground): Additive + FM engine integration, live engine switching (meml-mdy, meml-355) 2026-04-03 17:56:35 +01:00
additive-presets.js feat(playground): per-engine param presets for additive + FM (meml-ax4) 2026-04-03 18:26:12 +01:00
arpeggiator-worker.js feat(playground): engine abstraction layer + C15 adapter (meml-byk) 2026-04-03 17:30:28 +01:00
arpeggiator.js feat(playground): engine abstraction layer + C15 adapter (meml-byk) 2026-04-03 17:30:28 +01:00
c15-adapter.js feat(playground): EOC chain wired into audio graph, bypass mode manual sliders (meml-xp3) 2026-04-03 17:49:14 +01:00
c15-bridge.js feat(playground): EOC chain wired into audio graph, bypass mode manual sliders (meml-xp3) 2026-04-03 17:49:14 +01:00
engine-interface.js feat(playground): Faust WASM build pipeline + param auto-discovery (meml-5s3) 2026-04-03 17:30:23 +01:00
faust-engine-base.js fix(playground): FaustEngineBase creates AudioContext if none passed; add stop()/start() methods 2026-04-03 19:08:52 +01:00
faust-param-meta.js feat(tests): add 24 Playwright e2e tests for engine switching + fix hidden param filtering 2026-04-03 19:28:23 +01:00
fm-engine.js feat(playground): Additive + FM engine integration, live engine switching (meml-mdy, meml-355) 2026-04-03 17:56:35 +01:00
fm-presets.js feat(playground): per-engine param presets for additive + FM (meml-ax4) 2026-04-03 18:26:12 +01:00
midi-input.js fix(playground): decouple MIDIInput from C15Bridge — use SynthEngine interface (meml-se4) 2026-04-03 18:20:29 +01:00
modular-engine.js fix(modular): restore matrix in paramMeta; amp floor via positive-only mod_amp 2026-04-11 09:39:58 +02:00
modular-presets.js fix(modular): restore matrix in paramMeta; amp floor via positive-only mod_amp 2026-04-11 09:39:58 +02:00
osc-output.js feat(playground): add OSC output bridge for external synth control 2026-03-25 11:55:58 +02:00
param-map.js feat(playground): add synth parameter tooltips, group drawer with per-param curve/mute controls 2026-03-22 21:57:21 +02:00
presets.js feat(playground): add tiered synth parameter preset system 2026-03-23 00:50:56 +02:00