YuE2 生成乐谱计划
Get the sheet music before you burn twenty minutes on audio
- model
- plan
- abc
- metadata
YuE2 generates songs in two halves: a symbolic half that decides the melody and chords as ABC notation, and an acoustic half that turns that into a waveform. YuE2PlanSong runs only the first half. No audio comes out, and that's the feature.
Why you'd reach for it
Because the symbolic half is where a song goes wrong. If your second [Chorus] tag is misplaced or your verse is three times too long, running the full node means paying for the entire pipeline before you find out. Here you pay for the plan and read it as text.
It's also the on-ramp to everything editable. The ABC that comes out is a real, human-legible score - you can fix a wrong note, change a phrase, or replace a section by hand and then hand the whole thing to YuE2 渲染乐谱计划 to hear it. And it's the only way to get the good kind of reproducibility: keep the plan, re-render later, get the same tune back.
Inputs
- model - from
YuE2 模型服务. - style and lyrics - same fields as the song node. The style line here shapes the harmony and instrumentation the planner writes, not just the mix.
- cot -
fullormelody. Notice there are only two choices, unlike the four-stage song node: this node's entire job is producing a plan, so a "generate directly" option would be nonsense. - seed - plans are sampled, so the seed matters. Keep it when you like the tune.
- abc (optional) - feed in an existing score and the planner treats it as the starting point rather than inventing from nothing. This is how you bring an outside composition into YuE2.
Outputs
plan is a YUE2_PLAN handle to wire into YuE2 渲染乐谱计划 and the advanced token node; behind it sits a job artifact folder holding the parsed plan, the ABC token array, the prefix, the score text, and a hash manifest. abc is that score as a plain string - drag it somewhere, copy it, edit it. metadata is the job status JSON, and it's not decoration: the plan carries a truncation flag, and metadata is where you see it.
Install and first run
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-YuE2-T8.git
Then run install_runtime.bat once from the node directory (models, isolated Python 3.12.10 runtime, CUDA Torch, FFmpeg, score renderer), restart ComfyUI, and run YuE2 模型服务 first so the service is up. Registry: comfy node install yue2-t8. The shipped 02_先计划再渲染.json workflow is exactly this node feeding the render node, so load it and look at the wiring before building your own.
Where people get burned
Truncation. If the plan hits the context ceiling, the flag is set and the eventual song will end early or lose its final section. The fix is fewer or shorter sections, not a different seed.
Hand-edited ABC. The plan's manifest records a hash for the score, token array and prefix; the render path re-verifies them before it does anything. That's a feature - it stops a half-edited plan from producing a song that doesn't match what you think you asked for - but it does mean you edit the ABC in the render node's text field, or in a text editor and paste it back, rather than poking at files inside the job folder.
Plan folders age out. They live under the job output directory and the pack's retention policy deletes finished jobs eventually (30 days / 100 jobs / 100 GiB by default). If a plan is a keeper, render it, then export the result with YuE2 导出工件 - exports is exempt from cleanup.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | YUE2_MODEL | — | |
| style | STRING | — | |
| lyrics | STRING | — | |
| cot | COMBO | full | 2 options: full, melody |
| seed | INT | 8310010–9223372036854776000 | — |
| abcopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| plan | YUE2_PLAN | — |
| abc | STRING | — |
| metadata | STRING | — |