Nodes/ComfyUI-RT-HeartMuLa/RT HeartMuLa Tags Builder
ComfyUI Node

RT HeartMuLa Tags Builder

The Paper's Tag Format, Without the Typing

By monnky·Created 7 months ago·Updated 7 months ago· 11
RT HeartMuLa Tags Builder
    • tags
    genrepop
    vocal_typefemale vocal
    moodemotional
    tempomedium
    instrumentspiano, guitar
    additional_tags

    If you've used HeartMuLa even once, you know the single most annoying thing about it: it ignores your genre tags unless you feed them in exactly the format the paper expects, and even then it needs a nudge. RT HeartMuLa Tags Builder is the pack's answer - a small node that turns human-friendly choices like "jazz" and "emotional" into the lowercase, comma-separated tag string the sampler is trained on.

    The reason this format is a thing: HeartMuLa's cross-attention conditioning was trained on tags written as lowercase comma-separated text. People coming from image prompting habits (capitalized, weighted, prompt-like) feed it Upbeat Pop, Emotional and get back mush, then conclude the model is broken. The builder exists so you never have to think about the syntax again.

    How it works

    You pick a handful of attributes, and the node's build() method does four things:

    1. Collects genre, vocal type, mood, tempo, instruments, and any additional_tags you typed.
    2. Lowercases and strips everything (paper compliance - the pack's changelog explicitly calls out that conditioning nodes enforce lowercase).
    3. Drops any field set to none or left empty.
    4. Joins the survivors with ", " and returns them as a single tags string.

    From there it wires straight into the tags input of RT HeartMuLa Sampler, which wraps it in <tag>...</tag> and bakes it into the prompt. One quirk worth knowing: the node forces itself to re-run on every queue (IS_CHANGED returns NaN), so it always prints the little "process started" banner in your console. Harmless, slightly theatrical.

    The inputs that matter

    • genre - dropdown: pop, rock, jazz, hip hop, electronic, folk, cinematic, or none. Default pop.
    • vocal_type - female vocal, male vocal, instrumental, choir, none. Default female vocal.
    • tempo - slow, medium, fast, none.
    • mood and instruments - free text; default emotional and piano, guitar. These are where you get to be specific ("nostalgic", "dreamy synth pads, analog bass").
    • additional_tags (optional) - a catch-all for anything the dropdowns miss.

    The single tags output is a plain STRING. It only does one job, but it's the job that makes the sampler's CFG dial meaningful.

    How to actually get tags to stick

    The builder handles formatting, but formatting alone isn't enough - this is the part everyone trips on. The sampler's cfg_scale defaults to 1.7, and at or near 1.0 HeartMuLa is notoriously tag-deaf. People in the community who found their genre requests being ignored discovered that setting a real CFG value is what finally makes the style land - the fix is to raise it, with values like 4–5 getting mentioned. So the honest recipe is: let this node format the tags, then turn CFG up in the sampler and iterate.

    Common issues

    • Still ignoring the genre - you've got the format right, so it's a CFG problem. Raise cfg_scale in the sampler; that's the known fix.
    • A none value appearing in the output - shouldn't happen; empties and none are filtered out before joining. If you see one, you've probably got an old pack version; update.
    • The tags input on the sampler won't let you type in it - by design. It's forceInput, so the Tags Builder (or any string source) has to be wired to it.
    CategoryHeartMuLa/Conditioning

    Inputs (6)

    NameTypeDefaultDescription
    genreCOMBOpop8 options: pop, rock, jazz, hip hop, electronic, folk, +2
    vocal_typeCOMBOfemale vocal5 options: female vocal, male vocal, instrumental, choir, none
    moodSTRINGemotional
    tempoCOMBOmedium4 options: slow, medium, fast, none
    instrumentsSTRINGpiano, guitar
    additional_tagsoptSTRING

    Outputs (1)

    NameTypeDescription
    tagsSTRING