Nodes/ComfyUI_FL-SongGen/FL Song Gen Description Builder
ComfyUI Node

FL Song Gen Description Builder

Build the style string without the syntax errors — FL SongGen Description Builder

By filliptm·Created 8 months ago·Updated 4 months ago· 62
FL Song Gen Description Builder
    • description
    voice_typefemale
    timbrewarm
    genrepop
    emotionemotional
    instrumentspiano and drums
    bpm0
    custom_tags
    raw_description

    SongGen's style descriptions look easy and aren't. The model was trained on a specific vocabulary - female, warm, pop, emotional, piano and drums, and the exact phrase the bpm is 120 - and it's surprisingly picky about it. This node exists so you assemble that string from dropdowns and validated fields instead of typing it and hoping. It's a pure string builder: no models, no GPU, no downloads. If you already know the format cold, you don't need it; if you've ever had a song come out the wrong genre because you wrote "rhythm and blues" instead of "r&b," you do.

    The components

    The four required fields are the core, and each is a dropdown with only the tags SongGen was trained on:

    • voice_type - female, male, mixed, or none
    • timbre - bright, dark, warm, soft, none
    • genre - 17 options including pop, rock, hip hop, jazz, r&b, soul, funk
    • emotion - 14 options from happy to nostalgic

    The optional fields layer on the rest:

    • instruments - a free-text field, default piano and drums. The README lists sensible combos like guitar and drums, piano and strings, electric guitar and drums.
    • bpm - an integer, default 0. Zero means "don't mention BPM." Set it to 120 and the node emits the exact phrase the model wants: the bpm is 120.
    • custom_tags - extra comma-separated tags appended to the end.
    • raw_description - the escape hatch: if you fill this in, it overrides all the other fields and passes through verbatim. Handy when you have a description you've tuned by hand and don't want the builder mangling it.

    The output

    One description STRING, built as comma-separated parts - female, warm, pop, emotional, piano and drums, the bpm is 120. Wire it into the description input on FL SongGen Generate or FL SongGen Style Transfer. That's the whole loop: Builder → Generate.

    Why it earns its place

    Two habits that will save you hours, per the README's own prompting guide: stick to the predefined tags, and don't overload the description with conflicting descriptors. The builder enforces the first and makes the second easier to spot, because the genre and emotion are right there in front of you. And the BPM format is the classic trap - the model needs the literal phrase the bpm is X, and this is the one place you can't get it wrong.

    Install

    Same as the rest of the pack - 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. The node itself has zero heavy dependencies - it's in the pack, so it comes along - but the Generate node it feeds does, so plan for the full install anyway.

    Troubleshooting

    • Nothing happens / it feels too simple - correct, it's just a string assembler. If the song doesn't reflect the description, the problem is upstream in the model or the description content, not this node.
    • I want to hand-tune the string - use raw_description; it bypasses every dropdown.
    • BPM didn't take effect - if you want it in the string, it must be above 0; 0 means "auto/unspecified" and the phrase is omitted entirely.
    CategoryFL Song Gen

    Inputs (8)

    NameTypeDefaultDescription
    voice_typeCOMBOfemaleVocal type/gender
    timbreCOMBOwarmVocal timbre/tone quality
    genreCOMBOpopMusical genre
    emotionCOMBOemotionalEmotional tone of the song
    instrumentsoptSTRINGpiano and drumsPrimary instruments (e.g., 'piano and drums', 'guitar and strings')
    bpmoptINT00–300Beats per minute (0 = auto/not specified)
    custom_tagsoptSTRINGAdditional style tags (comma-separated)
    raw_descriptionoptSTRINGOR: Provide complete description directly (overrides above fields)

    Outputs (1)

    NameTypeDescription
    descriptionSTRING