YuE2 Generate Song π΅
Lyrics in, stereo track out, 24GB of VRAM wanted
- pipeline
- audio
- abc
Most "music" nodes in ComfyUI either load a file or pick one at random. This one writes a song. Hand it a style line and lyrics and it returns a stereo track as an AUDIO you can preview or push into Save Audio - a different job from everything else in its pack, where the nodes pick what to load.
The model is m-a-p/YuE2-3B, one of the few open models actually in the "local Suno" conversation. Know where it sits: the community default for open music is still ACE-Step - strong instrumentals, rough vocals, 4GB card. YuE2 is the other route: lyric-first, and it plans a symbolic score before it renders a note. It's also far more demanding to run, so read the install section before you get attached.
How it works
This isn't diffusion over spectrograms. The pipeline plans a symbolic score in ABC notation - melody and chords - then renders audio against it, and cot controls how much of that planning happens. The rest of the node follows from that: leave abc empty for a fresh generation in your chosen cot mode; fill it in and it renders against that score instead. That one argument is how covers and edits both work - YuE2 has no separate cover or edit entry point, just the same call with a score supplied. One source-level detail: the node only passes abc along when it's non-empty, since fresh generation is triggered by its absence. Leave the box truly empty; a stray space counts as "here's a score".
The inputs that matter
Required: pipeline (the YUE2_PIPELINE output from YuE2 Model Loader π΅), style, lyrics (both multiline strings), cot, seed. Optional: abc.
In practice you set three things: a short style line ("dreamy shoegaze, female vocal, slow"), lyrics with whatever section cues the model expects, and cot - full (default, plans melody and chords, best quality), melody (melody-only, the model card's recommendation for covers), or off (no symbolic pass). Leave it on full until you have a reason. seed is a 64-bit integer, and control_after_generate applies to it like any other seed widget: after a run the number in the box is the next run's seed, not the one that made the song you just heard. This node doesn't output the seed it used, so you can't read it back off the node.
Wiring the outputs
audio is a plain AUDIO, so core Save Audio or Preview Audio takes it directly. That's the wrapper's whole point; no audio pack required.
abc is the interesting one: the symbolic score behind the render, and your handle on a result. Send it to a text node, or feed it into a second YuE2 Generate Song to render against a score you've edited - by hand, or through whatever LLM node you drop in the loop. Plan, revise, re-render, repeat. That loop is why the pack also ships YuE2 Plan Score π΅, which yields the score without rendering audio.
Installing it
The pack installs like any other. Search "Bart's ComfyUI Nodes" in Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/bartenevve/comfyui-random-imageload-node comfyui-bart-nodes
Restart ComfyUI. That's enough for the pack's picker nodes - they need nothing beyond what ComfyUI ships. YuE2 is the exception, and it's all manual:
# torchaudio decodes the rendered FLAC into ComfyUI's AUDIO format.
# Match the torch/CUDA build you already run.
pip install torchaudio
# yue2 is NOT on PyPI. Grab the wheel from the model repo's file list
# (https://huggingface.co/m-a-p/YuE2-3B/tree/main) and install that local file
# into the SAME python env ComfyUI uses, then restart.
pip install /path/to/yue2_infer-0.1.5-py3-none-any.whl
Weights (~7GB) download on first load into the normal Hugging Face cache (~/.cache/huggingface), not into ComfyUI's models/ folder - don't go hunting there. Each node family imports in isolation, so a missing yue2 package or torchaudio removes only the three YuE2 nodes; the rest of your workflow still loads. Budget VRAM honestly: the model card states a 24GB CUDA minimum, peak usage lands closer to ~11GB, and there's no quantized path here for smaller cards.
What goes wrong
The YuE2 nodes aren't in the node menu at all. That's an import failure, logged rather than crashed - look for "YuE2 nodes failed to load" in the console. torchaudio is imported at the top of the module, so it's the usual culprit.
Blank abc on the output. The wrapper doesn't hardcode the artifact filename; it uses whichever *.abc file shows up in its temp dir, and if there is none it quietly echoes back the abc you fed in - empty, on a fresh generation. So a blank abc output means the package wrote something unexpected, not that you misconfigured the node.
It dies on a 12β16GB card. ComfyUI's --lowvram and friends manage ComfyUI's own model loading; they don't govern a third-party pipeline that hands weights to a device itself. Don't count on the memory flags to rescue this.
Be aware this is new. The author says plainly there was no GPU to test against and that the yue2 API was pieced together from the model card, so a renamed method or different artifact layout is real. The weights are also CC BY-NC 4.0 - non-commercial only, a constraint on the weights rather than on this pack's MIT code.
With the card and some patience, this is a real local route to songs with planned structure, and the abc edit loop beats yet another text-to-audio box. With 12GB and a deadline, the community's weight is on ACE-Step, and it isn't close.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | YUE2_PIPELINE | β | |
| style | STRING | β | |
| lyrics | STRING | β | |
| cot | COMBO | full | 3 options: full, melody, off |
| seed | INT | 00β18446744073709550000 | β |
| abcopt | STRING | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |
| abc | STRING | β |