Compose with code

For composers who want to code, for coders who want to compose. Name a figure once, then transpose, reverse and layer it. Use an AI/LLM chat enabled editor.

Sign up

How a piece gets written

Iterate on a song through a conversation with the model. Check out the example below.

  • Younew project18:24
    A series of sequences like sofleggietto by cpe bach
  • Modelnew project18:24
    Wrote the first draft; the engine ran it.
    v1Created A sequence18:24
    0:16
  • You18:27
    split the measures in half so that measure one becomes measure one and two. then reorder measures M1 M5 M2 M6 M3 M7 M4 M8 then M9 M13 M10 M14 M11 M15 M12 M16 then keep the rest the same
  • Model18:27
    I split each 4/4 measure into two 8-sixteenth halves with meter 2 (2/4).
    v218:27
    0:16
  • You18:28
    make more transition material every 4th measure
  • Model18:29
    I made measures 4, 8 and 12 into links: each one bridges the phrase it ends into the one that follows.
    v318:29
    0:16
  • You18:30
    the rhythym can affort to be a little sparser
  • Model18:30
    I've thinned the three main figures and left the continuous sixteenths where the motion matters.
    v418:30
    0:16
  • You18:32
    at measure 7 a second voice should come in with parallell motion at first then the bottom voice transitions to a trill before falling thirds back into a simple counter melody
  • Model18:32
    From measure 7 a second voice enters under the line and runs to the start of the cadence.
    v518:32
    0:16
  • You18:33
    instead of trills transition to contrary motion
  • Model18:33
    Measure 9 now answers the top line in contrary motion instead of trilling.
    v618:33
    0:16
  • You18:38
    remove the last two measures and continue the song by adding a third voice up high that moves in oblique motion for one measure then in contrary motion with the lower voice before they both transition to falling thirds over the simple counter subject
  • Model18:39
    I've dropped the old cadence, measures 17–18, and carried the piece on from measure 17 in three voices.
    v718:39
    0:23
  • You18:40
    the falling thirds sequence should continuously move down by a third
  • Model18:40
    Falls now drops a diatonic third each measure (@~-2, @~-4 … @~-10) instead of a step.
    v818:40
    0:23
  • You18:41
    make it two measures of climbing parallell motion
  • Model18:42
    Measures 7–8 are now one climb in parallel thirds.
    v918:42
    0:23
  • You18:43
    after four measures of the falling thirds the fourth voice enters and they all make broken chords for two measures
  • Model18:44
    Measures 19–22 keep the falling thirds over the counter subject.
    v1018:44
    0:23
  • You18:44
    stretch the broken chords across four measures
  • Model18:45
    The broken chords now last four measures, m23–26.
    v1118:45
    0:25
  • You18:56
    transition from the four voices in the broken chords to independant melodic lines
  • Model18:57
    After the broken chords (m23–26) I've added four measures, m27–30, where the voices come apart into four separate lines.
    v1218:57
    0:28
  • You18:59
    in place of the last measure go back to broken chords then start the beginning material with the four voices all together and complimentary melodies
  • Model18:59
    In place of the closing tonic there are now two measures of broken chords, then the opening material returns in four voices.
    v1318:59
    0:35
  • You19:02
    repeat lines 7-15 at the end but with all four voices. one starting slow and becoming a voice the follows the simple counter melody down a third one new high voice ostinato
  • Model19:02
    I've added the passage from measures 7–16 again at the end, as measures 39–48, now in four voices.
    v1419:02
    0:44
  • You19:05
    change the ostinato to an inverted alberti bass up high each measure should start on a new note and vary
  • Model19:06
    The ostinato is now an inverted Alberti figure up high.
    v1519:06
    0:44
  • You20:07
    give it a harpsicord synth
  • Model20:07
    The whole piece now plays on a new written voice, harpsichord, in place of the built-in pluck.
    v1620:07
    0:44
loading

What it does

The language

Leverage a powerful scripting language to generate figures. Every construct and its syntax.

Projects

Share, fork and merge projects with git backed projects. Edit locally and push to the cloud.

AI/LLM coding support

Write code like it’s 2026 with a music theory aware LLM.

Import and export

MIDI, MusicXML and LilyPond in; MIDI out. A piece brought in comes back as a grammar, with its repeats factored and its figures named.

Try it free

$1 of free LLM support. Confirm your email first.

Learn it

Documentation36

Every mark in the language, one page each. Or all of them on one page in the quick reference.

Or start from a piece

Each opens as a project of your own, to change as you like.

Doot Doot

Two knocks and a reply in falling thirds: 76 bars of e harmonic minor, half of them the riff played against itself upside down

Noodlin'

A bass riff, a tune doubled in thirds, and a bell that ends it twice

Inversion

A subject against its own reflection: 31 bars of e harmonic minor, every note a sixteenth, three voices by the end