Commit graph

197 commits

Author SHA1 Message Date
chriskiefer
dd78891783 start of break|| 2026-02-22 11:39:27 +00:00
w1n5t0n
2c2c9f769d playground: add expandable visual mode and docs 2026-02-14 08:47:47 +00:00
w1n5t0n
3039221165 playground: add loss history tracking and diagnostics panel 2026-02-11 15:56:24 +00:00
w1n5t0n
96a88f4b0f playground: add follow-mode joystick and RL hotkeys 2026-02-11 15:56:19 +00:00
w1n5t0n
6187a4b4ae playground: add orbiting repulsor field controls 2026-02-11 15:50:06 +00:00
w1n5t0n
0498bbe371 playground: add inertia and drag velocity memory 2026-02-11 15:48:34 +00:00
w1n5t0n
06833cdd19 playground: add blended advection modes 2026-02-11 15:47:13 +00:00
w1n5t0n
97acfd2824 playground: add particle lifetime and respawn modes 2026-02-11 15:45:50 +00:00
w1n5t0n
0550088516 playground: add attractor and dispersion controls 2026-02-11 15:44:33 +00:00
monkey-w1n5t0n
57aae34870 feat: add web-based interactive playground for NISPS
Faithful JS port of nisps-core MLP + IML engine with a touch-friendly
UI for exploring neural parameter mapping visually. Two learning modes:
example-based (set slider targets) and RL feedback (thumbs up/down with
exploration noise). Flow field particle system controlled by 8 MLP outputs.
2026-02-11 13:17:17 +01:00
monkey-w1n5t0n
45193a2c01 fix: audit and fix nisps-core extraction issues
- Remove platform-specific code (ARM_MATH_CM33, XMOS __XS3A__, std::printf)
- Add set_output()/set_outputs()/add_example() API for programmatic training
- Fix release build crash: side effect inside assert() for loss function init
- Replace fake smoke test with real convergence tests (5 tests, all pass)
- Rewrite example to demonstrate actual training with real output
- Update README, CHANGELOG, and extraction plan to match reality
2026-02-08 18:01:48 +01:00
monkey-w1n5t0n
be85a5cd71 feat: extract nisps-core platform-agnostic ML library
Extract the interactive machine learning engine from MEMLNaut-NISPS
firmware into a standalone, platform-agnostic C++20 header-only library.

What is nisps-core?
-------------------
NISPS (Neural Interactive Shaping of Parameter Spaces) core is a
parameter mapping engine. It takes N input parameters (joystick,
sensors, audio features) and maps them to M output parameters through
an interactively-trained neural network.

Use it to control: synthesizers, effects, lights, robots, game
parameters, or anything that responds to continuous control data.

Key Features
------------
- Header-only: No compilation needed, just include and use
- Platform-agnostic: Pure C++20, works anywhere
- Zero dependencies: Only standard library
- Interactive learning: Train by demonstration
- Lightweight: ~3,500 lines of optimized neural network code
- Flexible: Map 1-100 inputs to 1-100 outputs

Architecture
------------
Core components:
- IML: High-level interactive ML interface
- MLP: Multi-layer perceptron (feedforward neural network)
- Dataset: Training data management with replay memory
- Layer/Node: Neural network building blocks
- Loss: MSE and categorical cross-entropy functions
- Utils: Activation functions (sigmoid, ReLU, tanh, etc.)

Transformations Applied
-----------------------
 Removed Arduino/RP2040 dependencies (Serial, SD, Pico SDK)
 Removed audio synthesis code (nisps-core is control-only)
 Added nisps namespace to all code
 Converted to header-only library with _impl.hpp pattern
 Updated to C++20 (required for std::span)
 Removed platform-specific serialization
 Replaced debug macros with no-op stubs
 Added comprehensive documentation and examples

Files Added
-----------
- nisps-core/README.md: Complete documentation and API reference
- nisps-core/CHANGELOG.md: Version history and migration guide
- nisps-core/include/nisps/*.hpp: 13 header files (~3,500 lines)
- nisps-core/test/main.cpp: XOR test demonstrating basic usage
- nisps-core/examples/simple_mapping.cpp: Interactive demo
- nisps-core/CMakeLists.txt: Build system for tests

Testing
-------
 Compiles with GCC 14.2 (C++20)
 All tests passing
 Successfully instantiates networks and runs inference

Performance
-----------
- Inference: 1-10 µs for small networks (2-10-10-4)
- Training: 10-100 ms for 100 examples, 1000 iterations
- Memory: ~1 KB per hidden neuron

Migration from Embedded IMLInterface
------------------------------------
Old (embedded):
  IMLInterface iml(n_inputs, n_outputs);

New (nisps-core):
  nisps::IML<float> iml(n_inputs, n_outputs);

All method names remain the same, just add the namespace.

Related
-------
- Implements: NISPS_CORE_EXTRACTION_PLAN.md
- Task graph: NISPS_CORE_TASKS.md
- Origin: MEMLNaut-NISPS firmware
- Docs: https://musicallyembodiedml.github.io/memlnaut/

Co-authored-by: Claude Code <claude@anthropic.com>
2026-02-08 17:47:23 +01:00
monkey-w1n5t0n
733ff90083 add nisps-core extraction task graph
Atomic tasks for AI agents to execute without decisions.
18 tasks with explicit dependencies, exact file contents,
and verification steps.
2026-02-08 17:03:40 +01:00
monkey-w1n5t0n
0ae854a802 add nisps-core extraction plan
Platform-agnostic C++17 parameter mapping engine.
Control data in → ML → control data out.
2026-02-08 16:16:00 +01:00
monkey-w1n5t0n
5dd7029643 add CLAUDE.md for AI assistant context 2026-02-08 15:49:16 +01:00
chriskiefer
706a969cdc memory storeage modes 2026-02-07 10:36:26 +00:00
chriskiefer
b8a7a6a9a1 memory storage modes 2026-01-13 17:20:19 +00:00
chriskiefer
43fae9a915 stereo channel strip 2026-01-13 08:23:01 +00:00
chriskiefer
75166e85d8 bypass toggle colours 2025-12-10 17:35:48 +00:00
chriskiefer
ec02ff68f1 xiasri and CS 2025-12-10 16:40:28 +00:00
chriskiefer
bb1e6de3df xiasri latest, and channel strip changes for 4D input 2025-12-10 16:40:00 +00:00
chriskiefer
b853326ab6 xiasri, channelstrip 2025-11-28 14:59:36 +00:00
chriskiefer
faf704fe7a refactor 2025-11-24 11:29:59 +00:00
chriskiefer
28f8bc7711 refactoring interface into modes 2025-11-24 11:29:33 +00:00
chriskiefer
0626f4aa14 modes 2025-11-23 15:48:34 +00:00
chriskiefer
d623adfe42 modes 2025-11-23 15:48:14 +00:00
chriskiefer
81a7cb80b9 memlnautmodes, channelstrip 2025-11-19 15:17:37 +00:00
Chris Kiefer
adc6e3f279
Update project title and add reference link 2025-11-13 17:24:18 +00:00
Andrea Martelloni
b63f77bb27 Revert "Censored MacOS files"
This reverts commit a21f06760f.
2025-11-12 10:25:30 +00:00
Andrea Martelloni
a21f06760f Censored MacOS files 2025-11-12 10:06:28 +00:00
chriskiefer
fca7b90f58 rc2 2025-11-06 17:59:31 +00:00
chriskiefer
abbe22029a NISPS rc1 2025-11-06 14:59:29 +00:00
chriskiefer
dc9df2b34a midi out 16 params 2025-11-06 14:58:33 +00:00
chriskiefer
baa859617d midi output improvement 2025-11-05 16:49:06 +00:00
chriskiefer
fd516c30a0 cmsis and screen switching 2025-11-05 09:22:05 +00:00
chriskiefer
e03416c770 fixed loading and saving 2025-11-05 08:35:42 +00:00
chriskiefer
01a55c28ab fixed play view 2025-11-04 17:49:45 +00:00
chriskiefer
a085f4874b view order 2025-11-04 17:35:24 +00:00
chriskiefer
cb9c046eef more voice spaces 2025-11-04 17:18:20 +00:00
chriskiefer
66ff5b756c voice space selectotr 2025-11-04 13:26:08 +00:00
chriskiefer
4e3145c385 version 2025-11-04 12:26:42 +00:00
chriskiefer
daef06e012 help screen 2025-11-04 12:26:18 +00:00
chriskiefer
1adff3b18b -ve reward decay 2025-11-04 11:42:52 +00:00
chriskiefer
96cd070bc6 voice updates 2025-11-03 17:36:26 +00:00
chriskiefer
1408a238b5 activations 2025-10-30 20:35:28 +00:00
chriskiefer
3234a2f884 pre-switch to different RL 2025-10-28 12:16:20 +00:00
chriskiefer
4159e05f4c setvisible bubble 2025-10-20 15:16:30 +01:00
chriskiefer
a833a5843c xy view, graphs in rl stats 2025-10-20 14:18:21 +01:00
chriskiefer
6ad19d58c6 memlp 2025-10-15 21:22:54 +01:00
chriskiefer
9d41d1318b paf upgrades 2025-10-15 17:48:26 +01:00