No description
Find a file
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
.vscode memlnautmodes, channelstrip 2025-11-19 15:17:37 +00:00
data view order 2025-11-04 17:35:24 +00:00
modes bypass toggle colours 2025-12-10 17:35:48 +00:00
nisps-core feat: extract nisps-core platform-agnostic ML library 2026-02-08 17:47:23 +01:00
src bypass toggle colours 2025-12-10 17:35:48 +00:00
voicespaces bypass toggle colours 2025-12-10 17:35:48 +00:00
.gitignore Revert "Censored MacOS files" 2025-11-12 10:25:30 +00:00
.gitmodules Changed gitmodules to https 2025-04-29 10:21:43 +01:00
ChannelStripAudioApp.hpp stereo channel strip 2026-01-13 08:23:01 +00:00
CLAUDE.md feat: extract nisps-core platform-agnostic ML library 2026-02-08 17:47:23 +01:00
IMLInterface.hpp speed optim, no clicking 2025-05-07 23:58:06 +01:00
LICENSE Initial commit 2025-04-10 14:17:18 +01:00
MEMLNaut-NISPS.ino xiasri latest, and channel strip changes for 4D input 2025-12-10 16:40:00 +00:00
NISPS_CORE_EXTRACTION_PLAN.md add nisps-core extraction plan 2026-02-08 16:16:00 +01:00
NISPS_CORE_TASKS.md add nisps-core extraction task graph 2026-02-08 17:03:40 +01:00
PAFSynthAudioApp.hpp memlnautmodes, channelstrip 2025-11-19 15:17:37 +00:00
README.md Update project title and add reference link 2025-11-13 17:24:18 +00:00
ThruAudioApp.hpp refactoring interface into modes 2025-11-24 11:29:33 +00:00
XiasriAnalysis.cpp xiasri latest, and channel strip changes for 4D input 2025-12-10 16:40:00 +00:00
XiasriAnalysis.hpp refactoring interface into modes 2025-11-24 11:29:33 +00:00
XIASRIAudioApp.hpp xiasri latest, and channel strip changes for 4D input 2025-12-10 16:40:00 +00:00

Neural Interactive Shaping of Parameter Spaces

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