No description
Previous fix pulled matrix cells out of paramMeta to avoid the default-patch-clobbering silence issue. Side effect: paramCount dropped from 512 to 32, the heatmap strip and synth visualizer shrank dramatically, and moving the joystick no longer animated matrix cells (the user's two most recent complaints). Better approach: put matrix cells back in paramMeta (512 outputs), but when iml.exampleCount === 0 substitute the normalised default-patch vector for the raw MLP output in routeOutputs. The engine sees the default patch exactly, audio works, and the user still sees 512 cells in the heatmap / matrix grid. As soon as they capture their first training example the MLP resumes driving everything normally. ModularEngine.getDefaultNormalizedOutputs() returns the normalised default value per paramMeta entry, reading from _lastRawByLabel first (so user edits via click or _setRawByLabel propagate) and falling back to the walk-entry init field. modular-ui setCell now prefers engine.setParam over _setRawByLabel when the cell is in paramMeta, so writes flow through the normal tracking path and are visible to getDefaultNormalizedOutputs on the next tick. Verified in headless Chromium: switching to modular, cold start, reading engine._lastRawByLabel after routeOutputs ticks shows ampRaw=1, attackRaw=0.01, enableRaw=1 — the default patch is preserved. paramCount is 512 again. 0 console errors. |
||
|---|---|---|
| .beads | ||
| .claude/worktrees/agent-ae87fe47/playground/js/shapeseq | ||
| .github/workflows | ||
| .vscode | ||
| data | ||
| modes | ||
| nisps-core | ||
| playground | ||
| src | ||
| tests/e2e | ||
| vcv | ||
| voicespaces | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| ChannelStripAudioApp.hpp | ||
| CLAUDE.md | ||
| IMLInterface.hpp | ||
| LICENSE | ||
| MEMLNaut-NISPS.ino | ||
| NISPS_CORE_EXTRACTION_PLAN.md | ||
| NISPS_CORE_TASKS.md | ||
| package-lock.json | ||
| package.json | ||
| PAFSynthAudioApp.hpp | ||
| playwright.config.js | ||
| README.md | ||
| ThruAudioApp.hpp | ||
| XiasriAnalysis.cpp | ||
| XiasriAnalysis.hpp | ||
| XIASRIAudioApp.hpp | ||
Neural Interactive Shaping of Parameter Spaces
https://musicallyembodiedml.github.io/memlnaut/approaches/nisps
Web Playground
Try NISPS in your browser — no hardware required:
cd playground
python3 -m http.server
# Open http://localhost:8000
Train a neural network to map joystick positions to generative visuals through interactive machine learning. Two learning modes: direct example mapping and reinforcement learning with thumbs up/down feedback.
The playground UI includes an Expand toggle on the visual surface so you can make the canvas nearly full-screen while compressing parameter/control panels into a minimal strip beneath it.