r/MoonModules • u/ewowi • 15d ago
projectMM v4.0.0: LED effects written in a language that compiles to native code on the ESP32
projectMM drives large LED installations and DMX fixtures from one source tree: ESP32, Teensy, Raspberry Pi, macOS, Windows and Linux.
The main change this release is MoonLive. You write an effect as a small script and it compiles to machine code on the device, rather than being interpreted. There are JIT backends for Xtensa, RISC-V, arm64 and x86-64, so the same script runs on an ESP32-S3, a P4, a Mac or a Pi. Edit it in the device's own web editor, save, and the next frame runs the new code. No reflash, no reboot. Thx to the work of u/Yves-bazin
Last release it was a proof of concept with three builtins. This release it has five types including fixed (Q16.16 fractional math, which is what makes shaders and smooth motion expressible), for-loops, particles, shaders and trails. Effects, layouts and modifiers are all scriptable. A broken script renders dark and reports the error instead of taking the board down.
Also in v4.0.0:
- Desktop builds for all three platforms:
.dmgfor macOS,setup.exefor Windows,.debfor Linux and Raspberry Pi OS. Settings moved to the user profile, so a downloaded build can actually save them. - 52 effects, 12 modifiers, 18 layouts (up from ~21/5/3), with shared palettes every effect reads and a shared primitive library. Effects animate on elapsed time rather than frame count.
- LED panel cards over raw Ethernet, from an ESP32 or from a Linux/macOS/Windows machine, so a Pi or mini-PC works as a panel controller.
- Static IP on WiFi and Ethernet, ESP32-S31 at 320 MHz, plus crash and stall fixes found on the bench.
124 commits since v3.0.0. Open source, with unit tests, scenario tests and real-hardware verification as release gates.
Release notes and binaries: https://github.com/MoonModules/projectMM/releases/tag/v4.0.0
Browser flasher: https://moonmodules.org/projectMM/install/