warp

editor

Welcome to warp

Warp is a language for writing music. You describe patterns, chords, and structure in YAML — the engine plays it back as MIDI. Notes are written as positions in the current harmony, not fixed pitches, so a pattern written once plays correctly over every chord change.

Press ▶ to hear it — then try changing the numbers, or adding notes:

▶ Open the editor
Write, play, and save warp programs — with live highlighting, a GM soundfont, and Web MIDI output.
Tutorial
The guided tour, from first sound to full songs. Every example plays right on the page — press ▶, edit it, press ▶ again. Start here.
Cookbook
"How do I write X?" — twenty playable recipes: arps, basslines, drum kits, humanize, builds, and a full lofi tune assembled from the parts.
Blog
Articles on techniques — drum patterns, modulators, and more. Each with playable examples you can edit on the page.
DSL spec
The contract: every parameter, grammar, range, and default — the cascade, mini-notation, modulators, and the General MIDI appendix.
Kitchen sink
Every feature of the language, one minimal playable program each — coverage-tested, so nothing here can be missing or stale. Scan and steal.

How it works

A track plays a repeating pattern: n: "1 2 3 4" picks positions from the current chord or scale, the token count sets the rhythm, and parameters like velocity, gate, and swing shape how it plays. Phrases put tracks over chord progressions; a song sequences phrases. Modulators — LFOs and seeded randomness — change any parameter over time. Defaults are set so a four-line file already produces music.

Drum patterns use named hits (n: "bd hh sd hh" on the built-in General MIDI kit), instruments are names (instrument: tenor_sax), and everything is deterministic: identical file, identical MIDI.

If those patterns look familiar, that's because warp's mini-notation is heavily inspired by Tidal Cycles.

Output goes to a built-in General MIDI soundfont for immediate playback, or to any MIDI output on your system — route it to a DAW, a soft synth, or hardware over Web MIDI. Choose in the editor's Output menu.

Get started

The tutorial teaches the language by building things — every example plays right on the page. Start there, then use the editor to write your own.