Commit graph

73 commits

Author SHA1 Message Date
monkey-w1n5t0n
ffac04090c refactor(firmware): delete vendored daisysp and the input_router layer
Phase 1 group 8 (S8, ST2, L14).

- S8: the vendored src/daisysp tree (96 files, 41 .cpp compiled into every
  firmware build) and its sketch-tree symlink. Zero consumers — nisps replaced
  daisysp's PitchShifter with a custom granular implementation. Corrected
  firmware/README.md and setup-firmware-toolchain.sh, which called it a live
  submodule. The attribution comment in nisps/dsp/pitch_shift.hpp stays: it is
  an honest provenance note about a port, not a dependency.
  Noted while verifying: src/memllib/examples/KassiaAudioApp includes
  ../../daisysp/..., but examples/ is not symlinked into the sketch tree and is
  never compiled by the firmware build, so the deletion stands.
- ST2: input_router.hpp was a zero-logic speculative layer with one consumer;
  the .ino now calls bind_peripherals directly.
- L14: peripherals.hpp — deleted kAnalogInputCount, PeripheralBindings and the
  unused spread local, and extracted the duplicated commit-and-train block into
  one helper. The audit's suggested commit_and_train(mode, feedback) signature
  could NOT be behaviour-identical: repositioning() implies placing() (both
  live in ExploreState::Placing), so dispatching on feedback state inside the
  helper would silently reroute a TogB2 press mid-reposition from commit_place
  to commit_reposition, which differs (no snapshot restore, clears
  reposition_). Implemented as commit_and_train(mode, feedback, bool
  reposition) with the branch decided at the call site, preserving behaviour.

Firmware is not compiled by any gate yet (that arrives with the PlatformIO
migration, plan §5/S9), so this group is verified by reading and grep only.
Gates: run-all-tests.sh ALL GREEN.
2026-07-21 12:49:25 +02:00
monkey-w1n5t0n
43ef6d5dae chore(submodule): re-pin memllib gitlink to the real working commit b37fc53
The recorded 4733ca0 was unfetchable ('not our ref') and the tree has been
built against b37fc53 (feat/nisps-core-swap) since June. NOTE: b37fc53 is
not on the memllib remote either — fresh clones still need the MAP.md
gotcha; pushing feat/nisps-core-swap to a reachable remote is the real fix
(operator decision, flagged in session report).
2026-07-13 23:33:53 +02:00
w1n5t0n
2b939bb812 chore(beads): switch to embedded Dolt mode, ignore runtime files; add specs README; bump memllib
- .beads/metadata.json: dolt_mode server -> embedded
- .beads/.gitignore: ignore interactions.jsonl, push-state, locks, .env, credential key, corrupt backups
- untrack now-ignored .beads/interactions.jsonl (runtime)
- docs/specs/README.md: tiered specs corpus overview
- src/memllib: bump submodule pointer
2026-06-14 10:06:47 -10:00
w1n5t0n
5fc37f760e Stream 6: extract firmware glue under firmware/
Move the Arduino sketch into firmware/MEMLNaut-NISPS/ and bridge the
hardware (memllib) to the platform-agnostic nisps/ library through a
slim glue layer. Delete the legacy root-level *AudioApp.hpp,
modes/MEMLNautMode*.hpp, voicespaces/, IMLInterface.hpp, XiasriAnalysis,
and the src/memlp submodule.

Glue layout (firmware/MEMLNaut-NISPS/glue/):
  audio_driver.hpp - bridge memllib block callback to Mode::process
                     via per-Mode templated trampoline (no virtual dispatch)
  peripherals.hpp  - joystick/pots/buttons -> Mode::set_input + ML primitives
  midi_io.hpp      - MIDI in -> mode.note_on/update_bpm/set_playing,
                     drains mode ControlEvent ring -> MIDI UART
  mode_select.hpp  - using-aliases mapping MEMLNautMode<Name> to
                     nisps::modes::*Mode (build script rewrites the
                     #define MEMLNAUT_MODE_TYPE line)
  input_router.hpp / output_router.hpp - top-level wire/drain entry points

The sketch tree uses src/{memllib,daisysp,nisps} symlinks because
Arduino-CLI rejects ".." in include paths from sketch-tree headers.
mode_select.hpp #undefs Arduino's sq/min/max/abs/round macros before
including nisps headers (some nisps engines use those identifiers as
method names). The audio bridge struct is extern in the header and
defined in the .ino because inline + __not_in_flash section attribute
collide at link time.

Verification: arduino-cli compile succeeds for PAFSynth, ChannelStrip,
and BreakOr (rp2040:rp2040:solderparty_rp2350_stamp_xl:opt=Optimize3,
-std=gnu++20). Host C++ tests under nisps/build still pass (3 binaries,
110+ tests). Build script (scripts/build-firmware.sh) updated to point
at the new sketch path; mode-rewrite logic unchanged.

Closes meml-gkm.
2026-04-29 17:05:38 +03:00
w1n5t0n
d3373a4e44 Update memllib: fix DISLIKE and DRAG audible feedback
DISLIKE now calls joltNetworks() immediately for instant sound change.
DRAG release now outputs savedAction to audio queue immediately rather
than waiting for training to converge.
2026-04-17 23:23:47 -07:00
chriskiefer
972d3e7961 focus 2026-04-13 17:07:31 +01:00
chriskiefer
d095688cd9 drum voice 2026-04-13 16:55:39 +01:00
chriskiefer
27a1e4e5b0 wet dry override 2026-03-29 17:07:07 +01:00
chriskiefer
d5bb77d03e font and refactor 2026-03-29 16:48:47 +01:00
chriskiefer
8be4f85cb6 refactor and block select font size option 2026-03-29 16:45:53 +01:00
chriskiefer
ecacfb9d0c memlib 2026-03-18 16:30:19 +00:00
chriskiefer
5d38e36e0e memlib 2026-03-07 15:14:53 +00:00
chriskiefer
1af45be168 midi sync 2026-03-06 10:04:30 +00:00
chriskiefer
9906cbd154 i2c refactor and speed up 2026-03-05 22:25:21 +00:00
chriskiefer
16a38fbb66 refactor storage, no longer need node.hs 2026-02-25 16:57:02 +00:00
chriskiefer
6707781b3b phase offset 2026-02-25 16:30:52 +00:00
chriskiefer
9498f77278 midi routing from audio app 2026-02-22 12:41:09 +00:00
chriskiefer
dd78891783 start of break|| 2026-02-22 11:39:27 +00:00
chriskiefer
b8a7a6a9a1 memory storage modes 2026-01-13 17:20:19 +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
0626f4aa14 modes 2025-11-23 15:48:34 +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
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
a085f4874b view order 2025-11-04 17:35:24 +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
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
chriskiefer
3315d7512f audioopts 2025-10-15 10:15:04 +01:00
chriskiefer
7457bf894a tidy up 2025-10-13 16:54:26 +01:00
chriskiefer
b682b63b62 set sys clock 2025-10-13 16:54:01 +01:00
chriskiefer
31ff23ee51 using latest memllib 2025-10-13 16:39:14 +01:00
chriskiefer
3c5c751935 general RL updates 2025-09-18 15:34:08 +01:00
chriskiefer
326790b32a RL change 2025-09-17 10:54:53 +01:00
chriskiefer
29b8eb4a05 tidy and help screen 2025-09-17 10:53:54 +01:00