Drop a photo. Every note travels through it.
This is the Lens, live on the page: 24 pictures, one patch. Click an image and the synth plays it. The knobs land where the image's colors put them, and the ridgeline is the real spectrum of what you hear.
Lumen is a wavetable synthesizer built around a simple contract: on every patch, four knobs do something musical, and what you hear is always visible.
A living wavetable you can watch move. Sculpt the frame and the timbre shifts with it.
Four macros shape the whole patch: Tone, Motion, Space, and Texture. One twist moves dozens of parameters at once.
The Lens turns any image into a playable voice. Brightness, color, and detail map straight onto the sound.
A live spectrum falls away as the patch plays. You hear the sound and watch its shape at the same time.
This is Lumen's real preset browser, rebuilt for this page. Pick any patch and its clip plays: every clip was rendered by Lumen's own command-line engine, so what you audition is the actual synth, and the waterfall beside it redraws from the exact audio you are hearing. In the app, patches you save show up in this same browser the moment you save them, under a User section at the end of the menu.
Audio loads only when you press play; nothing streams until you ask.
One zip, two builds: the VST3 for your DAW and a standalone app that needs nothing else.
Windows 10/11, 64-bit · VST3 host or standalone · WASAPI out of the box (ASIO supported)
In development. Lumen is built on a cross-platform foundation and a macOS build is planned, but it isn't ready yet, and we won't ship one we haven't tested on real hardware.
Want to know when it lands? Watch the GitHub repository; releases show up there first.
Lumen.vst3 to C:\Program Files\Common Files\VST3, then rescan plugins in your DAW.Lumen.exe from wherever you like. Audio and MIDI settings live behind the gear icon; your device choice is remembered.Lumen opens on Slow Aurora, a slow-blooming pad, and stays silent until you play. Two views cover the whole instrument: PLAY for performing, DEEP for the engine. The numbered pins hold the detail; point at one, or tab to it.
The Lens is Lumen's image-to-tone engine. It reads the actual bytes of your picture and turns them into a wavetable, a harmonic recipe, and a macro gesture. Deterministically: the same image always makes the same sound.
Image
With COLORS on (the default), the image's overall color character drives the four macros: a warm photo and a cold one land the knobs in different places before you play a note. It is a live Lens mode in the same family as Scan and Spectral, not a saved property of the patch. Turn it off and only the image's structure speaks; the macros stay where you left them.
When an image is loaded, every note travels the whole picture over its lifetime: attack at one edge, release at the other, with the Motion macro scaling the travel speed. In the app, the full-height white beam over the image is the playhead. The trip is also safe. Dropping an image blends onto your current patch instead of erasing it; Lumen snapshots your settings the moment the image lands, and clearing it restores them exactly, including hand-tweaked knobs.
Three recipes, easiest first. Each starts from Init, the blank patch at the end of the preset menu, and ends with Save Preset…, which files your sound under your own User section in the browser. Name it; that's the whole dialog.
Signal flows left to right; modulation rains down from above. Everything continuous is smoothed (~20 ms), everything on the audio thread is allocation-free, and the waterfall taps the final output. What you see is literally what you ship.
| Stage | What it does |
|---|---|
| Wavetable oscillators | Morph smoothly through frames; mip-mapped tables keep high notes alias-clean. Voice modes: poly, mono, legato, with glide. |
| The Lens | Turns image bytes into wavetables (Scan/Spectral) and color into macro positions. Deterministic, so patches recall bit-exact. |
| SVF filter | State-variable filter with a drive stage; stays stable even with cutoff modulated at audio rate. |
| Mod system | Envelopes, LFOs, MIDI sources and the four macros meet in a routing matrix with per-route depth. |
| FX + limiter | Space and movement, then a safety ceiling. Presets are designed with real headroom rather than leaning on the limiter. |
| Waterfall | Live spectral history of the actual output, drawn over the grid. Analysis, not animation. |
Every one of these is checked by an automated render-and-measure harness, not by ear alone. More on that in How it's built.
Right-click any knob or control and choose Learn.
Move a knob or fader on your hardware. Bound.
That's it. The map is saved globally and survives restarts, so you map your controller once, not per project.
The map lives at %APPDATA%\Lumen\midi_map.xml. Delete the file to start over; right-click a mapped control and choose unlearn to clear one binding.
Poly for chords; Mono for basses and leads with last-note priority; Legato keeps envelopes from retriggering on overlapped notes. Glide slides pitch between notes: the classic portamento lead and the elastic bass both live here.
Your playing already carries five control signals, and Lumen reads every one of them.
All five show up as sources in the mod matrix, the same boxes that feed the routing grid in the engine diagram above.
WASAPI works out of the box with any interface; ASIO is supported. Pick your device behind the gear icon and the choice persists.
Lumen was built by a human and an AI working as a pair: a person acting as designer, ear, and final judge, and an AI coding agent (Claude Code) writing the C++ and, unusually, verifying its own work before the human ever heard it.
The entire synth was specified before the first line of code: a design document (what to build), a phase plan (the order, with explicit acceptance criteria per phase), and a rules file the agent reloads every session. Eight phases (engine core, filter and FX, modulation, the waterfall, the Lens, presets), each one tagged in git only after every acceptance criterion was demonstrated, and every decision along the way logged to a running DECISIONS.md.
The agent can't hear, so the project gave it instruments instead of ears. A command-line render tool plays any preset headlessly and measures the result: loudness, clipping, DC offset, tuning error, aliasing floor, attack and release times. After every engine change, the agent renders audio and reads the numbers. After every interface change, it launches the app, screenshots itself, and inspects the image. The human ear was reserved for the one thing it's actually needed for: taste.
Two of these deserve a sentence. First: every time the interface was restyled, all 32 factory presets were re-rendered and byte-compared against their previous renders, so cosmetic work was proven, not assumed, to leave the sound untouched. Second: the four-knob contract (every macro musical, every rest position sound-neutral) is enforced by tests, so it can't quietly rot.
Everything a metric can't: chose what Lumen should be, judged whether patches were worth keeping, decided the default sound, caught what only a live window shows (a squished label, a popup's corners, knobs that didn't spring back), and called the taste questions, like whether dropping an image should blend with your patch or replace it. (It blends. It's reversible. That was a deliberate call.)
SPEC.md, PHASES.md, and DECISIONS.md are the honest record: the design, the gates, and every trade-off, in the order they actually happened.
Confirm Lumen.vst3 is in C:\Program Files\Common Files\VST3, then force a plugin rescan in your DAW (most hide it in plugin settings; some need a "clear cache and rescan"). Lumen is 64-bit VST3 only, so 32-bit hosts and VST2-only hosts won't find it.
Expected for now: Lumen is free and the binaries aren't code-signed yet. More info → Run anyway proceeds. Only download Lumen from this page or the project's GitHub releases, so you know what you're running.
Open the gear icon and check the output device: pick your interface (WASAPI) and confirm the sample rate. Then play a note and watch the output meter in the header: if the meter moves but you hear nothing, the problem is downstream of Lumen (system mixer, monitor routing).
User presets are saved under the app's Presets\User folder and appear in the User section of the preset menu. The MIDI map and standalone audio settings live under %APPDATA%\Lumen. Copy those folders and you've backed up everything personal.
Yes. The Lens result is baked into the patch state when you save, so presets recall bit-exactly even if the original photo is renamed, moved, or deleted.
That's COLORS, the image's color character steering the four macros. It's fully reversible: remove the image and every knob returns exactly where it was, including positions you'd set by hand. Prefer the image to leave your knobs alone? Toggle COLORS off; it stays off until you turn it back on.
Really free, for any use, including commercial music. No account, no email capture, no locked presets. It exists because building it was the point.
macOS is planned: the codebase is cross-platform-ready, but we won't publish a build we haven't tested on real Apple hardware. Linux isn't on the roadmap for 1.x.