FL Song Gen Lyrics Formatter
Lyrics that actually parse — FL SongGen Lyrics Formatter
- formatted_lyrics
SongGen doesn't take freeform lyrics. It wants a specific format: sections tagged like [verse] and [chorus], separated by ; (space-semicolon-space), with each phrase separated by a period. Write that by hand a few times and you'll eventually stick a comma where it wants a period, or drop a space around a separator, and get a song where the structure falls apart. This node exists so you don't have to think about any of that.
How it works
It's a pure text assembler - no model, no GPU. You fill in the section boxes, and it concatenates them into the exact format the model expects, cleaning as it goes:
- Structure -
intro_typeandoutro_type(required) pick the instrumental bookends:none,-short,-medium, or-long. Optionalinstrumental_1andinstrumental_2slots insert instrumental breaks after the first chorus and after the bridge. - Sections -
verse_1throughverse_3,chorus_1throughchorus_3, and abridge. Each text box is multiline, and every line becomes a phrase, joined with a period. Write four lines in the verse box and you get four periods. - Cleaning - the node strips punctuation the model's training data doesn't have: commas, apostrophes, quotes go away. Your "don't" becomes "dont" - which sounds wrong to you and completely normal to the model.
- raw_lyrics - the escape hatch, same pattern as the Description Builder: fill it in and it overrides all the section fields, passed through verbatim. Paste a complete pre-formatted lyric string here and skip the boxes.
The output is one STRING, formatted_lyrics, which wires into the lyrics input on FL SongGen Generate, Style Transfer, or Auto Style.
The format it's hiding from you
The grammar underneath is worth knowing anyway, because raw_lyrics exists and you'll eventually paste into it: sections joined by ;, phrases joined by periods, and instrumental tags like [intro-short] / [inst-short] / [outro-short] that take no lyrics at all. The cardinal rule, straight from the README: don't put words on an instrumental tag. [inst-short] Some guitar solo is the kind of thing the model quietly chokes on.
A complete song built this way looks like:
[intro-short] ; [verse] First line. Second line. Third line ; [chorus] Hook line one. Hook line two ; [outro-short]
The README ships a full worked example - verses, repeated chorus, an [inst-short] break, outro - and it's a good template for your first song.
Install
ComfyUI Manager (search "FL Song Gen"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_FL-SongGen.git
cd ComfyUI_FL-SongGen
pip install -r requirements.txt
Restart ComfyUI. Like its sibling Description Builder, the node itself is dependency-free - but the generation nodes it feeds pull in the pack's heavy stack, so install it all and don't skip the requirements step.
Troubleshooting
- The song ignores my structure - check the box contents. If a section box is empty it's skipped entirely, so a "missing" verse is usually a blank
verse_2. - I already have lyrics in the right format - drop them in
raw_lyricsand everything else is ignored. - Sections run together - make sure each verse/chorus is its own box; the separator logic only fires between boxes, not inside one.
- Punctuation mysteriously vanished - that's the cleaner working as intended. If you need an apostrophe, raw_lyrics is the way around it.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| intro_type | COMBO | intro-short | Instrumental intro duration |
| outro_type | COMBO | outro-short | Instrumental outro duration |
| verse_1opt | STRING | First verse lyrics. Each line becomes a phrase. | |
| chorus_1opt | STRING | First chorus lyrics. | |
| instrumental_1opt | COMBO | none | Instrumental break after first chorus |
| verse_2opt | STRING | Second verse lyrics. | |
| chorus_2opt | STRING | Second chorus lyrics. | |
| bridgeopt | STRING | Bridge section lyrics. | |
| instrumental_2opt | COMBO | none | Instrumental break after bridge |
| verse_3opt | STRING | Third verse lyrics (optional). | |
| chorus_3opt | STRING | Final chorus lyrics. | |
| raw_lyricsopt | STRING | OR: Provide pre-formatted lyrics directly (overrides above fields) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| formatted_lyrics | STRING | — |