Skip to content

llmcomposer

Compose music with an LLM copilot — and record what it takes to get a valid score out of one.

You describe a feeling — like rain on a window — and a pydantic-ai agent writes and revises a tune in ABC notation. The web studio renders it as sheet music, plays it through the abcjs synth, and grows a generative field from the notes as they sound.

llmcomposer is a research exploration as much as an instrument. Language models learn music almost entirely through text — reviews, theory, tabs, symbolic notation — yet they can produce it. This project asks how far that goes: see Research for the questions, the method, and — read these first — the limitations. Nothing has been measured systematically yet; what exists is the apparatus.

Where to go

  • Getting Started — install, run (with a real model or fully offline), configure.
  • Research — the questions this project exists to explore, how the system is instrumented to explore them, and what it cannot tell you.
  • Related Work — the prior art in symbolic music generation and LLMs writing ABC, and what is different here.
  • Architecture — how the agent, the strict ABC validator, and the streaming studio fit together.
  • Development — the toolchain, the quality bar, and how to contribute.

At a glance

flowchart LR
    U[You: a feeling, in words] --> A[Composer agent]
    A -->|ABC notation| V[Strict validator]
    V -->|bounce + reason| A
    V -->|valid score| S[Web studio]
    S --> R[Sheet music, synth playback, telemetry]

The whole stack runs with no credentials — LLMCOMPOSER_MODEL=offline swaps in a composer seeded by a stable digest of your prompt (the same words give the same tune in any process), which is also how the test suite stays fully offline.