veLLMum — an AI music desk for historical plucked strings.
Vellum helps an LLM arrange music for baroque lute, baroque guitar, Renaissance lute, theorbo, classical guitar, piano, and voice. The model makes musical choices; Vellum checks the hard mechanical parts: frets, courses, playable voicings, alfabeto chords, LilyPond syntax, and rendered output.
It's ... okay! Models don't seem to spend much training time on baroque guitar repertoire, and hallucinate wildly when you ask it to do things outside the training set (even SOTA models like GPT 5.5).
However, because there's a harness of deterministic tooling, it stays very much on-the-rails and makes somewhat plausible arrangements.
I would call this "research quality" at best! Maybe I'll train a custom model for this someday.
“Greensleeves” for soprano and 5-course baroque guitar, engraved with Vellum using historical alfabeto chord shapes. Click the image to watch the demo video. Based on the Mutopia Project source: greensleeves_guitar.ly.
- Finds valid pitch → course/fret positions with
tabulate - Enumerates playable chord shapes with
voicings - Looks up historical baroque-guitar alfabeto with
alfabeto_lookup - Validates stretches, ranges, and fingering conflicts with
check_playability - Generates LilyPond from structured music data with
engrave - Compiles LilyPond to SVG/PDF with structured error feedback via
compile - Analyzes MusicXML, transposes, checks voice-leading, and renders fretboard diagrams
LLMs can be useful musical collaborators, but they are bad at guessing instrument mechanics and notation syntax. Vellum gives the agent tools that turn those guesses into checked, playable, engraved music.
nix develop
npm install
npm run server:build
npm run serverIn another shell:
nix develop
npm run devThen open the Vite URL. Configure an LLM key with OPENAI_API_KEY, ANTHROPIC_API_KEY, VELLUM_LLM_API_KEY, or pi OAuth credentials.
- TypeScript + Vite browser UI
pi-agent-core/pi-web-uifor the chat agent interface- Express API server
- LilyPond for engraving
- music21 for analysis helpers
- Nix dev shell with Node, Python, and LilyPond
- SPEC.md — full architecture and tool design
- ALFABETO-SPEC.md — historical baroque-guitar chord lookup
- HISTORICAL-RENDERING-SPEC.md — engraving goals