finds.dev← search

// the find

chaosprint/glicol

★ 2,974 · Rust · MIT · updated Apr 2025

Graph-oriented live coding language and music/audio DSP library written in Rust

Glicol is a live-coding language and audio DSP library where you patch synthesis graphs using a terse text syntax, compiled in Rust and running in browsers via WASM/AudioWorklet. It targets musicians who want to code sound without installing anything, and Rust developers who want a real-time audio graph they can embed in VST plugins or embedded boards like Bela.

The WASM + AudioWorklet architecture is genuinely well-thought-out: SharedArrayBuffer for lock-free audio/main-thread communication, LCS-based graph diffing so live edits don't produce glitches, and GC-free Rust under the hood means you're not fighting the browser's garbage collector mid-performance. The `glicol_synth` crate is usable as a standalone Rust audio library independent of the DSL, which is useful if you want the graph engine without the language. The `meta` escape hatch letting you drop into raw Rust DSP inside the DSL is a clever safety valve for when the built-in nodes run out. Cross-platform target coverage — browser, VST, Bela — from a single Rust core is a real technical achievement for a ~3k-star project.

The pre-1.0 API stability warning is not just boilerplate — the roadmap shows 0.12 releases but core sequencer expressiveness is still listed as incomplete, and live performance is explicitly flagged as risky. MIDI support is commented out in the roadmap with no ETA, which is a serious gap if you want to integrate with hardware. The JS/npm layer adds a non-trivial maintenance surface: there are both `js/src` and `js/npm` copies of generated WASM bindings with no obvious automated sync, which is a footgun for anyone forking the project. Documentation lives primarily on glicol.org rather than in the repo, so if that site goes down the offline developer experience degrades significantly.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →