Drive a WLED device from any MIDI input, in the browser — no install, no server.
A reference implementation of the wled-midi convention
(lamp · strip · mpe modes) as a single HTML file. Web MIDI → WLED's local JSON API.
- Open
index.htmlin Chrome or Edge (Web MIDI isn't in Firefox/Safari). - Enter your WLED device IP, click Enable MIDI, pick your MIDI input, and play.
- Notes → colour looks / power, CC 1–8 → brightness/hue/sat/CCT/effect, Program Change → preset.
Upload index.html to the WLED device filesystem (WLED web UI → File Editor) and open
http://<wled-ip>/index.html. Served from the device, it's same-origin with the JSON API —
no CORS.
⚠ Web MIDI needs a secure context. A plain
http://<ip>page blocks MIDI. Uselocalhost,https, or a reverse proxy (see the wled-midi tooling docs). Running the file locally instead? The browser will block cross-origin requests to WLED — serve it from the device, or use a proxy.
lamp(control) — notes 59–68 (looks, incl. black/white), 48–56 (util), 73 (flash), CC 1–8 (bri/cct/hue/sat/fx/sx/ix/pal), Program Change → preset.strip(position) — note → LED position, polyphonic, velocity → brightness, individual-LED payload. Three position functions:interpolate(note range → strip, melodic/stage),keymap(piano-aligned, LEDs-per-key),direct(note = LED index, sequencer). Note-off fade (configurable), and the note's MIDI channel picks the colour (Synthesia L/R hands). This is the piano-guide / strip-instrument path.mpe(expressive voice-zones) — MIDI channel = a per-note voice placed as a zone of LEDs at the pitch position on the strip (SPEC §13), polyphonic: pitch → position + base hue, channel pressure → brightness, CC74 slide → saturation, pitch-bend → hue shift. Uses the same strip config asstrip.
Commands are coalesced into one POST /json/state per ~40 ms window (per SPEC §7). One device
today (multi-channel routing on the roadmap). Untested on hardware yet.
MIT — implement it freely.
Part of OpenLamp. Not affiliated with or endorsed by the WLED project; it talks to WLED over its public local API.
Two open standards, one bridge. This implements the open wled-midi convention — the agreed dictionary between MIDI (the MIDI Association) and WLED. Free for anyone to build on: see the convention's openness & patent policy (§14) and the licensing note. Part of OpenLamp.