Skip to content

jefffm/vellum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vellum

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.

How is it?

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.

Demo

Greensleeves arranged by Vellum for voice and 5-course baroque guitar

“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.

What Vellum does

  • 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

Why it exists

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.

Quick start

nix develop
npm install
npm run server:build
npm run server

In another shell:

nix develop
npm run dev

Then open the Vite URL. Configure an LLM key with OPENAI_API_KEY, ANTHROPIC_API_KEY, VELLUM_LLM_API_KEY, or pi OAuth credentials.

Stack

  • TypeScript + Vite browser UI
  • pi-agent-core / pi-web-ui for the chat agent interface
  • Express API server
  • LilyPond for engraving
  • music21 for analysis helpers
  • Nix dev shell with Node, Python, and LilyPond

Docs

About

ve-LLM-um — LLM-powered music arrangement for historical plucked instruments

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors