No description
Find a file
2026-08-27 09:55:41 +03:00
src feat(signal-engine): support dynamic routed sinks 2026-08-27 09:55:41 +03:00
test feat(signal-engine): support dynamic routed sinks 2026-08-27 09:55:41 +03:00
.gitignore feat: extract ModuLisp engine from uSEQ (src-useq @1081ae8) 2026-08-17 14:41:57 +03:00
ALIGNMENT.md chore: adopt MPL-2.0 from placeholder repo license 2026-08-17 14:42:12 +03:00
library.json fix(arduino): guard desktop-only synth TUs; library.json build filter 2026-08-17 15:54:47 +03:00
library.properties feat: extract ModuLisp engine from uSEQ (src-useq @1081ae8) 2026-08-17 14:41:57 +03:00
LICENSE Initial commit 2025-03-14 18:21:41 +00:00
MAP.md feat(signal-engine): vector-packed sink sugar — :offset and [base mod] pair forms (spec §4.3/§4.4) 2026-08-18 13:33:20 +03:00
meson.build feat(signal-engine): generic external input/sink/command registries with per-sink LKG (spec §3) 2026-08-17 15:08:21 +03:00
README.md feat(signal-engine): vector-packed sink sugar — :offset and [base mod] pair forms (spec §4.3/§4.4) 2026-08-18 13:33:20 +03:00

ModuLisp

Standalone build of the portable uSEQ signal engine. Meson + ninja:

meson setup build && ninja -C build && meson test -C build

Module map

  • src/modulisp/lisp/ — header-only symbol interning (symbol_intern.h).
  • src/signal_engine/ — the language core:
    • tokencell_storegraph_buildernode_pool: source text to fixed-pool signal DAG (deterministic compile, CSE, bounded diagnostics).
    • compiler_pipeline: parse + graph-mutation transactions (LKG rollback).
    • cold_eval: top-level evaluation — definitions, output assignment, external sink assignment (including the descriptor-gated vector sugar: [base…] :offset [mod…] and [[base mod] …] pairs expand to the same per-channel graphs as the flat form, spec §4.3§4.5), cold commands, transport control.
    • executor: tick-time DAG execution + publish_sink_values.
    • ext_registry: generic named external-input / external-sink / cold-command registries — the firmware-profile seam (see MAP.md). A sink descriptor sets vec_base_ch/vec_mod_ch to accept the vector sugar.
  • src/utils/, src/devtools/, src/ports/ — support libraries, gated telemetry, and hardware port interfaces with host mocks.
  • test/ — Catch2 executables over the host subset of the engine.

External registers are generic: firmware registers names like nn/* or midi/* at boot; the engine ships no such builtins. A sink registered with vector packing accepts its channels flat or sugar-packed — all forms bind identically and publish through the same pool output slots.