VRGDG Music3 Lyrics Prepare + Validate
Because Music3 Will Happily Sing Your Metadata
- lyrics
- validation_report
- lyric_line_count
Music3 sings whatever you hand it. Feed it a lyric sheet that starts with Genre: rock ballad and you get a singer who is very committed to the phrase "Genre: rock ballad." The fix is boring and essential: clean the lyrics before they reach the model. VRGDG Music3 Lyrics Prepare + Validate does that cleanup for you, normalizing section headers, stripping the metadata lines people paste in from lyric sites and AI assistants, and telling you what it changed.
It's one of the Music3 helpers in the VRGameDevGirl pack (vrgamegirl19/comfyui-vrgamedevgirl), the same pack whose flagship is an LTX 2.3 / MiniMax H3 music-video builder. In a music-video workflow, this node is the lint pass before the caption builder - it runs on raw lyrics, upstream of everything else.
How it works
Three inputs, all with sane defaults:
lyrics- your raw lyrics text. Square-bracket section labels like[Verse 1]and[Chorus]are structural hints to the model, not lyrics, and the node wants you to keep them.normalise_headers(default on) - converts(Verse 1),{Verse 1}, or inconsistent capitalization into canonical[Verse 1],[Pre-Chorus], etc., so the model reliably reads the song structure.remove_metadata_lines(default on) - deletes lines starting withGenre:,Mood:,Style:,Tempo:,Instruments:,Production:, orVocal:, which is exactly the block an AI assistant loves to generate above a song. Leave them in and Music3 sings them.
The three outputs are the point of the node: the cleaned lyrics (feed this to the Prompt Builder or straight to a caption), a validation_report string that tells you what was normalized and removed (and warns about bracket text Music3 might mistake for lyrics), and a lyric_line_count integer you can use to sanity-check that a long song didn't lose half its verses.
What you actually do with it
Paste the raw lyrics - from a lyric site, an AI rewrite, or your own notes - keep both toggles on, and read the report once. That's the whole ritual. The report is where the node earns its keep: it's your early warning that your source used timestamps like [00:12] (which Music3 will absolutely try to sing) or that your "lyrics" are mostly a style description with a song attached.
Installing it
One install covers every node in the pack. ComfyUI Manager → Install Custom Nodes → search vrgamedev, or:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl.git
Then install requirements.txt, restart, and hard-refresh the browser. The usual pack gotchas apply: it's a big install with TTS/LLM dependencies (voxcpm, llama-cpp-python) you'll never touch for Music3, and on Windows portable you'll want Cython + scikit-build-core installed first (Python 3.12 over 3.13).
Troubleshooting
Most "why did Music3 sing the wrong thing" reports trace back to lyrics, and this node's report is your first diagnostic. If a section header still comes out wrong, check the raw source - some lyric sites use all-caps or punctuation the normalizer doesn't recognize. If lyric_line_count looks small for a long song, the metadata stripper probably ate more than it should have; turn remove_metadata_lines off and clean manually. And if your chorus comes back as a bunch of "[Chorus]" sung in a row - well, that's Music3 being Music3, but at least now the label is canonical so the model has no excuse.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| lyrics | STRING | [Verse 1] [Chorus] | Lyrics only. Square-bracket section labels are structural hints; Verse 1 and Verse 2 are valid. |
| normalise_headers | BOOLEAN | true | Converts recognized (), {}, or inconsistently capitalized section tags to canonical [Verse 1], [Pre-Chorus], etc. |
| remove_metadata_lines | BOOLEAN | true | Removes lines beginning Genre:, Mood:, Style:, Tempo:, Instruments:, Production:, or Vocal: so Music3 does not try to sing them. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| lyrics | STRING | — |
| validation_report | STRING | — |
| lyric_line_count | INT | — |