YuE2 Official Text Encode
Style, Lyrics, and One Input You Can't Type Into
- text
YuE2 Official Text Encode is where a song stops being a vibe and becomes a request. Style, lyrics, planning mode, seed - it all lands here. But its output is not a conditioning tensor you can poke at. It's a small request dictionary: style, lyrics, cot, seed, id, cfg_scale, and optionally an ABC score. The actual tokenizer and the exact prefix encoding happen later, inside the official engine, which is why this node stays thin.
If you've used CLIP Text Encode in an image graph, reset your expectations. There's no negative prompt, no token weighting, no length limit you can watch tick up.
The three fields you'll actually touch
style is a comma-separated description, and the pack's default is a decent template: English, warm piano pop, expressive female voice, acoustic piano, rounded bass and light drums, lyrical memorable melody, 88 BPM. Put the language, tempo, vocal character, instrumentation and genre here. Note that BPM in text is a suggestion, not a control - nothing in this pipeline locks tempo numerically.
lyrics is what gets sung, section tags included ([Verse], [Chorus]). This is the field that will make you re-queue the most. Short lines with obvious rhyme schemes survive the trip; dense internal rhymes usually come back mangled. Empty-ish lyrics give you an instrumental-ish result, but if you genuinely want instrumental, say so in style too.
cot is the planning mode, and it's the most consequential dropdown in the pack. full plans melody and chords - the default for new songs. melody plans melody and leaves accompaniment free, which is what you want for covers. off generates straight from lyrics and style with no symbolic plan at all. If you're supplying an ABC score, it must be full or melody; off plus ABC is a contradiction.
The rest
seed is a big INT and it does what you expect, though the README is honest that device, runtime and settings changes can still move things - seed helps comparisons, it doesn't guarantee reproduction. song_id is just the id stamped into reports and artifacts; rename it when you're sweeping candidates so you can tell the FLACs apart.
automatic_cfg and cfg_scale are a pair, and there's a trap: when automatic_cfg is on (its default), the node sends cfg_scale: null and your number is ignored entirely. Only turn automatic off if you're deliberately overriding guidance - and know that the automatic path uses whatever the engine considers official for the selected planning mode.
The input you can't type into
abc is optional and marked multiline, so it looks like a paste box. It isn't: in the source it's declared forceInput, which means ComfyUI gives you a socket instead of a text field. You must wire something in - normally YuE2 ABC Score Input, or the abc output of the SheetSage2 Transcribe node.
Why the indirection? Because a supplied score has to come from somewhere deliberate. For a cover you want the transcription node; for hand-edited notation you want the score input. Pasting half a score into a prompt node by accident is a bug factory.
Worth saying plainly, since it's the number one misunderstanding about this whole pack: an ABC score here conditions a new performance. It does not copy the source recording.
Wiring it up
One output, text (YUE2_INPUT), which goes into either Generate Music (one-shot) or Generate ABC (staged). No audio, no models input - this node never touches weights, so it's instant.
Install
The node ships with the pack; there's nothing extra for it. Everything still depends on the runtime being set up first, because the tokenizer lives on the official side:
cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI_YuE2
cd ComfyUI_YuE2 && sh setup-runtime.sh && sh scripts/download-models.sh && sh convert-models.sh
Restart ComfyUI afterwards; the nodes show up under audio/YuE2 Official. ComfyUI Manager can do the clone if the pack is listed, but the three launchers are on you.
Common problems
If generation fails before anything starts, check the Model Loader - this node will happily build a request against models that were never adapted, and the error surfaces at the stage node instead.
If lyrics come back garbled or half-sung, that's not a bug in the node, it's the model. Shorten lines, simplify rhyme, and iterate. And if you supplied an ABC score and the result ignores it entirely, look at cot - off will quietly generate something unrelated while your score sits unused in the request.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| style | STRING | English, warm piano pop, expressive female voice, acoustic piano, rounded bass and light drums, lyrical memorable melody, 88 BPM | — |
| lyrics | STRING | [Verse] Neon fades along the lane Footsteps keep the time of rain [Chorus] Let the day come into view Every road begins with you | — |
| cot | COMBO | 3 options: full, melody, off | |
| seed | INT | 8310010–9223372036854776000 | — |
| automatic_cfg | BOOLEAN | true | — |
| cfg_scale | FLOAT | 1.000–20 | — |
| song_id | STRING | song | — |
| abcopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | YUE2_INPUT | — |