No description
Find a file
monkey-w1n5t0n 469a38ae16 test(manifold): port probe-API contract + spine-invariant e2e from playground
Migrate the specs worth keeping from playground/tests/e2e (retired in P1) into
manifold/tests/e2e, adapted to Manifold's probe surface:

- probe-api.spec.ts: the window.__nisps debug-probe contract (ready, bounded
  outputs, example count, randomise, setInputs inference, thumbsUp/Down,
  addExample, train loss non-increasing, async train, clearExamples, evalLoss,
  inferBatch, getLayerStats, getWeights). Retargeted to MLP<32,10,14,18,126>
  (weight_count 3148) and Manifold's direct addExample/routedOutputs surface;
  dropped the playground's __init/iml-poke escape hatches and stream-pending
  skips.
- spine.spec.ts: the spine invariant — setInputs -> processed -> ml -> routed
  yields bounded, consistent routed outputs; the probe stays alive across dock
  output-mode switches (driven via the real selector UI, replacing the
  playground's localStorage-reload mode cycling).
- helpers.ts: loadProbe(?debug=1 + cleared storage + __ready wait), settleInputs
  for EMA convergence, bounded/changed assertions.

Dropped playground UI specs (ui-interactions, persistence, mode-registry list)
that die with the playground chrome. No probe.ts changes needed.
2026-07-13 23:26:00 +02:00
.claude/worktrees/agent-ae87fe47/playground/js/shapeseq hello come back to me 2026-03-30 17:05:45 +03:00
.github/workflows build(vcv): cross-platform CI + Linux dist + /next/vcv publish flow 2026-06-28 04:49:40 +02:00
.vscode memlnautmodes, channelstrip 2025-11-19 15:17:37 +00:00
assets/media docs: restructure design docs into docs/specs (adr/plans/recon), update path references 2026-07-13 23:15:46 +03:00
codegen feat(midi-devices): canonical external-synth CC templates + dual codegen 2026-06-28 20:03:17 +02:00
data view order 2025-11-04 17:35:24 +00:00
docs chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
firmware wip(firmware): select SLPWorkshop mode variant 2026-07-13 23:17:08 +03:00
manifold test(manifold): port probe-API contract + spine-invariant e2e from playground 2026-07-13 23:26:00 +02:00
nisps chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
playground chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
schemas feat(slp-workshop): new MEMLCelium-based mode + port Jolt & OU-noise RL learning 2026-06-28 22:15:36 +02:00
scripts chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
src chore(beads): switch to embedded Dolt mode, ignore runtime files; add specs README; bump memllib 2026-06-14 10:06:47 -10:00
tests chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
vcv docs: restructure design docs into docs/specs (adr/plans/recon), update path references 2026-07-13 23:15:46 +03:00
.envrc chore: add .envrc + playground package-lock 2026-06-28 04:14:30 +02:00
.gitignore chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
.gitmodules Stream 6: extract firmware glue under firmware/ 2026-04-29 17:05:38 +03:00
AGENTS.md chore(agents): converge project instructions 2026-07-13 22:58:26 +02:00
ALIGNMENT.md docs(ergo): update task guidance 2026-07-13 22:58:26 +02:00
CLAUDE.md chore(agents): converge project instructions 2026-07-13 22:58:26 +02:00
LICENSE Initial commit 2025-04-10 14:17:18 +01:00
MAP.md chore(build): P0 plumbing — WASM build/parity retarget to manifold/public 2026-07-13 23:14:23 +02:00
NISPS_CORE_EXTRACTION_PLAN.md fix: audit and fix nisps-core extraction issues 2026-02-08 18:01:48 +01:00
NISPS_CORE_TASKS.md add nisps-core extraction task graph 2026-02-08 17:03:40 +01:00
package-lock.json feat(playground): add Modular audio mode with shared mod pool 2026-04-11 07:34:41 +02:00
package.json feat(tests): add Playwright e2e suite + debug probe for a-immersive 2026-04-03 16:38:04 +01:00
playwright.config.js feat(tests): add Playwright e2e suite + debug probe for a-immersive 2026-04-03 16:38:04 +01:00
README.md Preserve firmware variant capitalization 2026-04-16 00:46:02 +09:00
synth-midi-cc.json feat(midi-devices): canonical external-synth CC templates + dual codegen 2026-06-28 20:03:17 +02:00

Neural Interactive Shaping of Parameter Spaces

https://musicallyembodiedml.github.io/memlnaut/approaches/nisps

Firmware

The hardware firmware targets the MEMLNaut RP2350 build and uses repo-local helper scripts for the known-good build configuration:

git submodule update --init --recursive

scripts/build-firmware.sh
scripts/flash-firmware.sh
scripts/build-and-flash-firmware.sh

Notes:

  • The scripts build for rp2040:rp2040:solderparty_rp2350_stamp_xl with Optimize3.
  • The build forces C++20 because the firmware uses std::span and concepts.
  • build-firmware.sh accepts an optional variant name such as MEMLCelium or BreakOr. Matching remains case-insensitive, so memlcelium still works. If you omit it in an interactive shell, the script parses MEMLNaut-NISPS.ino, prompts for a variant, and rewrites the active MEMLNAUT_MODE_TYPE before building.
  • flash-firmware.sh accepts an optional mountpoint argument, or auto-detects common UF2 bootloader mounts such as /run/media/$USER/RP2350 and /run/media/$USER/RPI-RP2.

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.