skip to content
carldmitchell.com
← all projects

songprint

Turns an instrumental into a lyric-writing spec, with lines per section and syllables per line, so lyrics written for it actually fit the music.

details

status
in progress
group
music
stack
Python, librosa, OCR, Demucs (stem separation)
since
2026-08

readme

Lyrics written "for" a song usually don't fit it: too many syllables for the bars, a chorus that doesn't land where the music repeats. songprint measures the instrumental first and produces a spec a lyricist (human or Claude) can write to: how many lines each section needs and roughly how many syllables each line should carry.

How it works

It combines two cheap, reliable signals instead of asking a heavy model to guess the song's structure:

SourceGives
The audio (librosa)tempo, beat grid, energy curve
A screenshot of Suno's editor (image parsing + OCR)section boundaries, and which sections repeat

Suno already splits a song into sections and reuses a letter when the music repeats, which is the chorus signal. songprint reads that, lines it up against the tempo to count bars per section, and turns bars into a syllable budget. Studio's exact BPM or bar count can override detection, and stem separation helps on dense mixes.

Style specs

A style spec pins down the lyrical voice: diction, point of view, imagery, rhyme, meter and emotional arc. Claude writes each one from a reference (a film, an artist, a song). It also covers phonetics: which vowels can carry a held note and which ones choke it. A lyric that reads well can still be unsingable, because the melody exists first and the word has to fit the note it lands on.

Outputs a full JSON "audioprint" and a short brief to hand to the lyricist.