Describe a soundscape, cue, texture, groove, or generative score. Underscore creates a playable audio system you can hear, tweak, orchestrate, embed in your app, or export as WAV.
Underscore generates audio systems, not finished files. Each system exposes controls like intensity, density, tempo, brightness, instability — whatever the sound needs.
Type a brief in plain English. “A drifting winter cue that slowly opens up.”
It plays immediately in the browser — real-time synthesis, not a rendered file. No two passes sound identical.
Steer the exposed parameters with knobs, app state, game events, code, or schedule — or render a WAV when you need a fixed asset. Try it on the instrument above.
Browse featured systems from the catalog. Press play on any row to load it in the hero instrument above.
The knobs on the instrument above are real, and they exist in code too. Steer a running system from sliders, app state, game events, scheduled changes, or API calls.
const synth = await underscore.loadSynth('cmp_9xk2', 'tape_lattice');
await synth.play();
// from a slider, app state, or a game event
synth.setParam('chordCut', 5000);
synth.setParam('fb', 0.72);
synth.setParam('intensity', focusLevel);
synth.setParam('tension', player.health / 100);
synth.setParam('density', hour / 24);
await synth.renderWav({ durationSec: 30 });
Underscore generates real synthesis systems — SuperCollider
.scd → scsynth WASM → Web Audio
through the web SDK.
Describe something specific. Hear it move. Control it live.