diii-neotrellis-emulator¶
A browser emulator for monome iii grid scripts. It runs the same Lua scripts as a NeoTrellis or monome grid, plays them through a built-in synth or MIDI, and shows each script's controls on the grid as a live manual.
Open the emulator · Documentation

What you can do¶
- Play scripts: the bundled ones, scripts by others (loaded from their own repositories), any GitHub or Codeberg repository, or a file from your computer.
- Hear them: several synths at once (from soft keys to Karplus–Strong strings) and a drum kit, with reverb, delay and chorus; MIDI out to a synth or DAW, and MIDI in for scripts that follow a clock or a keyboard.
- Read them: each script's controls are drawn over the grid, its README shows in the Guide tab and its code in the Source tab.
- Write them: edit and run a script in the browser, or in your own editor with live reload. ↓ Device makes a smaller copy for uploading and warns about code the device won't load.
- See them your way: NeoTrellis pads or Mechatrellis keys, dark or light, in colour or as a monochrome monome grid.

Getting started¶
- Use it in the browser, nothing to install.
- Run it on your computer to write scripts:
npm install, thennpm start. - Put scripts on a NeoTrellis grid: the firmware is on the firmware release page.
Documentation¶
- Walkthrough: the emulator's screen, part by part.
- Hardware vs. emulator: what behaves differently on the device, and what to check before uploading.
- Start a script, the script standard and colour and monochrome: writing scripts that work on both kinds of grid.
- Developer guide: how the emulator works inside.
Scripts¶
My scripts, as grouped in the emulator's script list:
- Music: LeaveSeqr (falling leaves become three sequencer tracks), Sandman (falling sand, leaves and water as music), Serpentine (a snake game sequencer).
- Colour demos: colour fallback demo, monochrome fallback, colour workaround demo, text runner.
- Tests: multiple screens, grid colour, colour threshold, power.
- Write your own: the script template, with a step-by-step guide and instructions to give an LLM.
Scripts by others¶
The emulator's script list also offers scripts by other people. They are not my work and they are not part of this project or copied into this repo: scripts/external.json only holds their names and repository links, and the emulator fetches each script from its author's repository when you load it. All credit goes to the authors.
If you wrote one of these and would rather not be listed, please open an issue and I'll take it out.
- kria iii by aktsom
- stepiii by nolliegray
- arpiii by nolliegray
- fugace by behindkeyframes
- iiinvert by liamelliot
- fell by liamelliot
- sluiiice by duncangeere
- many-roads by boreal-ground
The list also has my own selector, which lives in the firmware repo, and tehn's scripts from monome's iii-scripts.
Background¶
This started as an interactive manual for my Serpentine script. Once it could play the script, I kept going until it could run other scripts too.
I have a few DIY projects from okyeron, and it was through his Discord that I got curious about diii. I built my own version of okyeron's NeoTrellis firmware with iii and colour support: jonwaterschoot/neotrellis-monome. It also uses my fork of iii, which can upload scripts larger than about 32 KB, such as LeaveSeqr (details).
I don't own original monome gear, so the monochrome side is tested with the viii web app on my NeoTrellis grid.
[!IMPORTANT] This is a vibecoded project: I'm not a C++ developer, and I built it with Claude and Gemini in VS Code and Google Antigravity. I have still spent many hours on it and learned a lot about the ecosystem.
Links¶
- monome iii documentation, and the diii web app (source) to upload scripts to a grid
- iii release post on the lines forum, by tehn (Brian Crabtree), with scripts such as meadowphysics, intervals and wake
- okyeron/neotrellis-monome: use Adafruit NeoTrellis boards as a monome grid
Please don't ask monome or the lines forum about the NeoTrellis colour features: they're mine, not monome's.
License¶
My own work in this repository is under the GPL-3.0 License: I want to share what I make freely with the community. I'm still looking into the licenses of the third-party parts it uses. If I've got something wrong, please let me know.