Turn Ableton Live into an LED light show. LumiDI is an open-source Max for Live device that streams pixel animations as MIDI notes to a Teensy-driven WS2812B strip — tempo-synced, automatable, and hackable.
No DMX, no Art-Net, no serial protocol to invent — just MIDI notes. The LumiDI device runs an animation engine inside Live and streams complete pixel frames (~30 fps) out the track's MIDI output. A Teensy 4.0 running the open firmware shows up as a class-compliant USB-MIDI port, decodes the notes, and drives the strip. Because it's plain MIDI, everything is automatable, tempo-syncable, and recordable like any other instrument.
…or route the same notes to an IAC bus and preview in the browser simulator — no hardware needed.
A Max for Live MIDI effect with 15 animations — Solid, Pulse, Chase, Rainbow, Strobe, Scanner, Breathe, Wipe, Theater, Burst, Hue Drift, Sparkle, Fire, Flip, and Wave. HSV color dials, a direction switch, free-run rate, and beat sync that locks the animation cycle to Live's transport (e.g. exactly one bar). Every parameter is automatable.
Not a mock-up: this is the same lumidi-engine.js the device runs in
Live, loaded straight into the page and driving a virtual 19-pixel strip through
the real MIDI protocol. And just like in Live, animations only move while the
transport plays — hit Stop and the frame freezes.
LumiDI.amxd (or build it from source with python3 ableton/build_amxd.py).The hardware is a Teensy 4.0 and a strip of WS2812Bs plus two passive components. Firmware, the device, and this page all live in the repo.
| Part | Notes | Price |
|---|---|---|
| Teensy 4.0 | The USB-MIDI brain. Appears to your computer as a class-compliant MIDI device. | $23.80 |
| WS2812B LED strip, 5 V | 1 m at 30 px/m (5050 RGB, aka NeoPixel). The firmware defaults to 19 pixels; the MIDI protocol addresses up to 42. | $9.95 |
| 330 Ω resistor | In series on the data line, between the Teensy and the strip's DIN. You need one; they come in a 20-pack. | $1.25 |
| 100–1000 µF capacitor | 6.3 V or higher, across the strip's +5V and GND, close to the strip. Bigger is fine — the linked one is 4700 µF. | $1.95 |
| 5 V power supply | Budget 60 mA per pixel: 19 px ≈ 1.14 A at full white, so the linked 2 A supply has headroom. Power the strip from the PSU, not the Teensy. | $7.95 |
| Micro-USB cable | Powers the Teensy and carries the MIDI. You probably have one already. | $2.95 |
| Estimated total | ≈ $48 |
Prices as of August 2026, before shipping — and the links are just known-good examples; any equivalent part works.
The firmware is a PlatformIO project using FastLED:
git clone https://github.com/chris-albert/lumidi.git
cd lumidi/hardware/teensy
# set NUM_LEDS in src/main.cpp to your strip length
pio run -t upload
Once flashed, the Teensy enumerates as a USB-MIDI port — point Live's MIDI To at it and you're done.
The firmware is deliberately dumb — anything that can send MIDI notes can drive the strip. The Max for Live device is just one client; your sequencer, script, or microcontroller can be another.
Pixel writes only stage; nothing changes on the strip until note 127 arrives, so a frame always appears atomically.
The strip simulator renders the same MIDI stream in the browser — pick a MIDI input, point Live's MIDI To at an IAC bus (macOS: enable the IAC Driver in Audio MIDI Setup), and watch the strip. It needs Chrome for Web MIDI, logs every decoded pixel write, and shows the latched frame rate — handy for debugging your own protocol clients too.