Nodes/comfyui-bart-nodes/YuE2 Plan Score 🎡
ComfyUI Node

YuE2 Plan Score 🎡

Skip the singing and just write the score

By bartenevveΒ·Created 2 months agoΒ·Updated 2 days agoΒ· 0
YuE2 Plan Score 🎡
  • pipeline
  • abc
β—„styleβ–Ί
β—„lyricsβ–Ί
β—„seed0β–Ί

Most song generators hand you audio and nothing else. YuE2 works like a small studio: it writes an ABC score first - notation, with the melody and the chords - and then performs it. YuE2 Generate Song does both and never shows you the middle. YuE2 Plan stops after the score.

Which is the right trade more often than it sounds. The score is the cheap stage and the last point at which a change is cheap. Measured on this pack on an RTX 5090, a two-line lyric with a 40-second ceiling took 8.9 seconds end to end, of which the score was 2.2 seconds. Four scores cost 8.8 seconds; four full songs cost 35.7. That gap widens with length, because it's the singing that gets longer, not the planning. So if you're hunting for a take you like, hunt here.

How it works

The node runs one stage of the same pipeline the big node runs - the score stage - through the same vendored YuE2 code, with the model loaded exactly as it would be for a full song. That last part matters: the pack's own note is that a plan rendered untouched produces audio byte-for-byte identical to YuE2 Generate Song on the same seed. This isn't a preview or an approximation of the real thing. It is the first third of the real thing, handed over as a value.

What you get back is the model's ABC notation as text, and the plan - a bundled handle carrying the style, the lyrics, the seed, the settings it was written under, the score, and the token IDs behind that score. Those IDs are the interesting half. Hand a plan on untouched and the render node sings those exact IDs; type a different score into the render node's text box and it re-encodes your text instead, because at that point it's a person's score and the old IDs don't describe it.

Inputs and outputs

Three inputs you'll fill in, all shared with the plain YuE2 Generate Song node:

  • style - language, genre, voice, instruments, tempo, as a description rather than a tag soup. "English, warm piano pop, expressive female voice, 88 BPM" beats "pop, piano, female".
  • lyrics - the words, with [Verse] / [Chorus] / [Bridge] / [Outro] markers on their own lines. Leave it empty for an instrumental.
  • seed - same seed, same settings, same score.

The output is the score as a text string - that's the one you read, copy, edit, or wire into the render node's score box. Depending on the build you're on, that socket is labelled abc or score_abc, and it comes paired with the plan handle that YuE2 Render Plan takes. If you see a pipeline input on the node card, that's schema drift from an older or newer revision rather than something you need to fill: the shipped 0.1.1 code asks for style, lyrics and a seed, plus an optional options socket.

Install

Nothing special - it's in the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/pytraveler/YuE2-ComfyUI

Restart ComfyUI, then look under YuE2/Advanced in the node menu, one level down from the three obvious nodes. Six example workflows ship with the pack and show up under Workflow β†’ Browse Templates; the useful one here is "The score first" - write the score, read it, edit it, then sing it. tiktoken is the only added dependency, and the 7.26 GB checkpoint downloads itself on first run into models/checkpoints/.

Where it goes wrong

The one refusal you'll actually hit: cot set to off. That skips the score stage entirely, so there's nothing to plan and nothing to edit, and the node says so and tells you to use full or melody - or the plain generate node - instead. If you came here with cot: off in an options node because you read it was faster, that's why it's refusing.

Two more honest notes. Planning still loads the whole 6.8 GB model, so this is a fraction of a song, not a fraction of the memory. And you can't sing anything with this node alone - you need YuE2 Render Plan from the same pack to turn the plan into audio. The two are a pair, and the split is deliberate: it's what lets you try a second, third and fourth score without paying for a second, third and fourth song.

Categoryaudio/yue2

Inputs (4)

NameTypeDefaultDescription
pipelineYUE2_PIPELINEβ€”
styleSTRINGβ€”
lyricsSTRINGβ€”
seedINT00–18446744073709550000β€”

Outputs (1)

NameTypeDescription
abcSTRINGβ€”