{"id":"src-5xo","title":"Study memllib and memlp submodule interfaces","description":"Check out the submodules (git submodule update --init --recursive) and study the key interfaces that the firmware depends on. Focus on: AudioAppBase\u003cNPARAMS\u003e (Setup/Process/ProcessParams/SendParamsToQueue), AudioDriver (GetSampleRate, SetBlockCallback), InterfaceBase (setup, SendParamsToQueue), InterfaceRL (full RL wrapper: bindInterface, bindMIDI, readAnalysisParameters, INPUT_MODES, rlStatsView), MEMLNaut singleton (hardware abstraction), SharedBuffer\u003cT,N\u003e (lock-free inter-core), stereosample_t, memory placement macros (AUDIO_MEM, AUDIO_FUNC, APP_SRAM), timer macros (PERIODIC_RUN_US), and the embedded MLP.h/Dataset.hpp from memlp. Document what each provides and how nisps-core diverges from memlp.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:24Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:24Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-sas","title":"Study the playground JS port and verify ML fidelity","description":"Read all playground/js/nisps/ files (iml.js, mlp.js, layer.js, node.js, dataset.js) and compare line-by-line against nisps-core C++ headers. Document any differences in: activation functions, forward pass, backprop, weight init, moveWeights noise generation, training convergence, dataset management. Then read app.js (446 lines) for the two learning modes (examples vs RL), the RL reward loop (thumbsUp saves+trains+decays noise, thumbsDown amplifies noise+moveWeights), gamepad support, localStorage persistence, presets. Read the UI files (visualizer.js flow-field, joystick.js touch handling, controls.js, param-display.js) to understand the full demo architecture.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:17Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:17Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-767","title":"Study XIASRIAudioApp and XiasriAnalysis audio feature extraction","description":"Read XIASRIAudioApp.hpp (234 lines): reverb/FX engine with 4 delay lines, 6 all-pass filters, 2 comb filters, DC blocker, daisysp PitchShifter, OnePoleSmoother for parameter smoothing. Then read XiasriAnalysis.hpp/.cpp (62+170 lines): the 6-parameter feature extraction pipeline (pitch via zero-crossing + MedianFilter + CircularBuffer, aperiodicity as relative MAD, energy via envelope follower + log scaling, attack as energy derivative, brightness as HP/LP band ratio). Document the per-sample processing pipeline, normalization ranges, and how features flow from Core 1 analysis through SharedBuffer to Core 0 ML input.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:12Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:12Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-v1r","title":"Study ChannelStripAudioApp and console emulation voice spaces","description":"Read ChannelStripAudioApp.hpp (641 lines). Document: the full signal chain (pre-gain tanh → HP+LP input filters → 2x peak + low/high shelf EQ → dynamics → post-gain), stereo processing, the inline maxiDynamicsLite implementation (~290 lines: compander with knee, RMS/peak detection, attack/release ADSRLite envelopes, look-ahead delay, bezier knee curves), maxiRingBufLite, controlMessages enum for bypass toggles via queue_t. Then study voicespaces/ChannelStrip/basic.hpp (179 lines): 6 console emulation macros (Neve 1066, SSL 4K/9K, Male/Female Vox, Neve 80). Note the Neve 80 stepped-switch emulation using constexpr arrays + index math.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:06Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:06Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-eie","title":"Study PAFSynthAudioApp and PAF voice spaces","description":"Read PAFSynthAudioApp.hpp (358 lines). Document: 4 maxiPAFOperator instances, oscillator chaining (geometric detuning: freq0 → freq1=freq0*detune1 → freq2=freq1*detune2 → freq3=freq2*detune3), effects chain (ring mod → sine shaper → delay → tanh soft-clip), MIDI note queue handling via queue_t, and the 7 voice spaces (VoiceSpace1/2/Perc/Single1/QuadDetune/QuadOct/QuadDist). For each voice space macro, document which PAF operators are active, key parameter routings, and sonic character. Note the VoiceSpace\u003cNPARAMS\u003e struct (name + lambda) and VoiceSpaceFn type alias.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:00Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:00Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-mw5","title":"Study the Mode system and MEMLNautMode C++20 concept","description":"Read modes/MEMLNautMode.hpp (concept definition) and all four mode implementations: MEMLNautModePAFSynth (3 inputs, PAF synth), MEMLNautModeChannelStrip (4 inputs, channel strip), MEMLNautModeXIASRI (6 audio-feature inputs, reverb/FX), MEMLNautModeSoundAnalysisMIDI (9 inputs, audio+joystick, MIDI output). Document: how the concept enforces the interface without inheritance (duck typing), kN_InputParams per mode, how each mode configures InterfaceRL (input mode, dimensionality), MIDI setup patterns, display view creation, and the SharedBuffer pattern used by analysis modes for cross-core audio feature transport.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:13:54Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:13:54Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-6jj","title":"Study dual-core architecture and inter-core communication","description":"Read MEMLNaut-NISPS.ino (230 lines) focusing on the dual-core RP2040 design. Document: Core 0 responsibilities (UI loop, ML inference, hardware polling at 5ms), Core 1 responsibilities (audio processing, MIDI polling at 10ms), startup synchronization (4 volatile bool flags + MEMORY_BARRIER/WRITE_VOLATILE/READ_VOLATILE), the audio_block_callback signature and execution context, ROSC entropy seed generation, PERF timing macros, and the compile-time mode selection via #define MEMLNAUT_MODE_TYPE. Map the three inter-core communication patterns: (1) volatile flags + memory barriers, (2) RP2040 queue_t for MIDI/control, (3) SharedBuffer\u003cT,N\u003e for analysis params.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:13:47Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:13:47Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-0tr","title":"Study the original IMLInterface.hpp and InterfaceRL integration","description":"Read IMLInterface.hpp (276 lines) — the firmware-side ML interface inheriting InterfaceBase. Document: MLP architecture [n_inputs+bias, 10, 10, 14, n_outputs], training params (1000 iter, LR=1.0, convergence=0.00001), the INFERENCE_MODE/TRAINING_MODE state machine, STORE_VALUE_MODE vs STORE_POSITION_MODE for the two-step example capture, MLRandomise_/MLTraining_ flow, SendParamsToQueue for cross-core output delivery. Then study how InterfaceRL (from memllib submodule) wraps this with RL reward, INPUT_MODES (JOYSTICK, MACHINE_LISTENING, JOYSTICK_AND_MACHINE_LISTENING), and joystick/MIDI binding.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:13:43Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:13:43Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-ucr","title":"Study nisps-core MLP implementation (Node → Layer → MLP)","description":"Deep-read the core ML engine in nisps-core/include/nisps/. Start from utils.hpp (activation functions, math), then node.hpp (single neuron forward/backward), layer.hpp (vector of nodes, backprop), mlp.hpp + mlp_impl.hpp (full network: Train, TrainBatch, MoveWeights, SmoothUpdateWeights, policy gradient, Xavier init, NaN recovery). Document: weight initialization strategies, forward pass data flow, backprop implementation, gradient accumulation, loss functions (loss.hpp), and the CheckAndFixWeights safety net. Note differences between supervised and RL training paths.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:13:40Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:13:40Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-vah","title":"Study Dataset and IML interface (nisps-core)","description":"Read dataset.hpp + dataset_impl.hpp (max 100 examples, FIFO/RANDOM forget modes, ReplayMemory), sample.hpp (legacy Sample/TrainingSample), then iml.hpp + iml_impl.hpp (the user-facing API). Document: the two-step save_example() hardware workflow vs direct add_example() API, Mode::Inference vs Mode::Training state machine, how training is triggered on mode switch, weight randomisation + restoration pattern, input clamping, and the logger callback system. Compare with the original IMLInterface.hpp to understand what was extracted vs what's firmware-specific.","status":"open","priority":1,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:13:40Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:13:40Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"src-kqa","title":"Write comprehensive architecture notes to memory","description":"After completing all study issues, synthesize findings into structured memory files. Create: (1) architecture.md — system overview, dual-core design, data flow diagrams (input → ML → voice space → audio), inter-core patterns. (2) ml-engine.md — MLP architecture, training modes, RL vs supervised, weight management. (3) audio-dsp.md — all audio apps, voice spaces, signal chains, feature extraction. (4) playground-port.md — JS/C++ correspondence, any divergences found. (5) Update MEMORY.md with index and key insights. Goal: these notes should be detailed enough to rewrite the system in any architecture.","status":"open","priority":2,"issue_type":"task","owner":"w1n5t0n@lnfinitemonkeys.org","created_at":"2026-03-04T23:14:29Z","created_by":"w1n5t0n","updated_at":"2026-03-04T23:14:29Z","dependency_count":0,"dependent_count":0,"comment_count":0}