SD HeartMuLa Conditioning
HeartMuLa's Conditioning Node Is the Prompt Box
- model
- conditioning
If the Model Loader is the engine, this is the steering wheel. SD HeartMuLa Conditioning is where your lyrics and style tags become the tensors the Sampler actually generates from. It's the closest thing this pack has to a text prompt - the thing you'll edit a hundred times while hunting for a song you don't hate.
The mechanism is straight out of the HeartLib pipeline. Your tags get wrapped in special <tag>...</tag> tokens, your lyrics get lowercased and tokenized, both get BOS/EOS padding, and the node assembles one prompt tensor in the order the model expects: tags, then a placeholder for reference audio (currently zeroed - the "future audio conditioning" spot), then lyrics. It also bakes in cfg_scale. Here's the part that matters: if cfg_scale is anything other than 1.0, the node duplicates the whole prompt into a batch of two - one conditioned, one unconditioned - because classifier-free guidance needs both passes. Set it to exactly 1.0 and you halve the compute and skip CFG entirely.
The inputs:
- model - wire the
modeloutput from the Model Loader. Required, because the node needs the pipeline's text tokenizer. - lyrics - the big multiline box. This is the real prompt, and structure matters more than you'd think. Use the section markers the model was trained on:
[Intro],[Verse],[Prechorus],[Chorus],[Bridge],[Outro],[Instrumental]. The README's example - a[Verse]followed by a[Chorus]- is the right shape. Just pasting a wall of unmarked text will give you a wall of undifferentiated singing. - tags - comma-separated style tags:
pop, female vocal, energetic. Genre, vocal type, mood, tempo, instruments. - cfg_scale - default 1.5. Here's the honest caveat: HeartMuLa's tag-following is famously weak, and the community consensus that settled pretty quickly was that the default 1.5 barely steers anything. People who wanted genre tags to actually show up ran values of 4–6, often paired with a low temperature (0.5) on the Sampler. Start at the default, but know that "it's ignoring my tags" is the #1 complaint about this model family, and the fix lives in this field and the Sampler's temperature, not in the lyrics box.
The single output, conditioning (HEARTMULA_COND), plugs straight into the Sampler node. Nothing else consumes it - this is a one-to-one wire.
One quiet detail worth knowing: everything is lowercased before tokenization, so don't bother with capitalization as a styling tool. And if you're feeding in a long song, keep an eye on token count - prompt length is printed to the console as Prompt length: N tokens, and a very long lyric box slows the whole run.
My take: this node does exactly one job and does it with no drama. The only thing that will make you pull your hair out is the CFG/tag interaction, which isn't this node's fault - it's a known quirk of the 3B model itself. Raise cfg_scale before you rewrite your lyrics, and you'll usually get closer to the song in your head.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | HEARTMULA_MODEL | Loaded HeartMuLa model from Model Loader node | |
| lyrics | STRING | [Verse] Hello world, this is a test Singing with AI today [Chorus] Music generation is here Making melodies so clear | Lyrics with section markers like [Verse], [Chorus], [Bridge], [Intro], [Outro] |
| tags | STRING | pop, female vocal, energetic | Comma-separated style tags (genre, vocal type, mood, instruments) |
| cfg_scaleopt | FLOAT | 1.51–10 | Classifier-free guidance strength (1.0 = no CFG) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | HEARTMULA_COND | — |