Work / App · Tool · Performance

Persona

2026 · In progress

Sound made from code

Sound made from code, never recorded. A studio for designing it, layer by layer, and decks for playing it live.

Run · soon 2 versions ↓

Persona in Live mode: two decks, the master effects and the sampler

Open

  • StudioDesign a sound, layer it, arrange it, export WAV, stems, a preset, or a TypeScript function.Run · soon
  • LiveTwo or four decks, a mixer, a sampler and a crate of everything you have played.Run · soon

About

Why from code

A game that synthesises its audio ships no audio files, and every gunshot can be slightly different from the last, because it is generated rather than replayed. That is the starting point: you shape a sound from a family (a gun, a bell, a warp), and export it as a .wav, as stems for a DAW, or as a standalone TypeScript function that regenerates it at run time.

The generated code is checked rather than trusted. A harness emits every family in every output shape, compiles it, renders both, and compares them sample for sample: 242 voices and 50 layered stacks match to float rounding, and four presets reproduce a game’s shipped voices bit for bit. It caught bugs that type checking cannot.

Live

The Live view turns the same engine into an instrument. Tracks come from the studio, are rolled in the background at the set’s tempo and in a key that fits the other deck (drum & bass, halftime, techno, house), or are your own recordings, whose tempo and downbeat are found on loading.

Everything is quantised to the bar. Real-time controls act on audio already rendered; anything that has to be computed lands on the next phrase. The engine always keeps a phrase ahead.

Built with

TypeScript, the Web Audio API (an offline context used as a deterministic buffer factory), audio worklets and workers, canvas 2D for every view. No framework and no runtime dependency.

Features

Credits

Esc