Nodes/ComfyUI-FL-YuE2/FL YuE2 · Compose
ComfyUI Node

FL YuE2 · Compose

FL YuE2 · Compose writes the sheet music first — and that's the whole trick

By filliptm·Created 3 days ago·Updated 3 days ago· 9
FL YuE2 · Compose
  • music_model
  • composition
  • score_abc
styleEnglish, warm female vocal, melodic piano pop, gentle drums, acoustic guitar, uplifting, 90 BPM
lyrics[Verse] Morning light across the floor I hear the world outside my door Every road begins with you Every sky is turning blue [Chorus] Take me where the rivers run Dancing underneath the sun Hold this moment, let it stay We will find another way
planningfull
seed831001
max_score_tokens4096
score_abc

Here's the thing most music generators don't do: before YuE2 makes a single second of audio, it writes the song down as ABC notation - melody, and optionally chord symbols, in a text format a human can read and edit. This node is the step that produces that score. It's ~20 seconds of model time instead of minutes of rendering, which means you get to check whether the melody and harmony are right before you spend your evening generating a song you don't want.

That's the real reason to reach for this pack over ACE-Step, which is faster, lighter, and famously only needs about 4 GB of VRAM. ACE-Step doesn't hand you a score you can edit note by note. So if "good enough, quickly, on a small card" is your job, ACE-Step wins and you should go use it. If you want to steer a track - supply the chords, fix the melody, keep the instruments and rewrite the vocal line - this is the node that makes that possible.

What you're actually picking

The two widgets that matter most:

style is where the song lives. The author's own framing is the correct one: language, genre, instruments, vocal character, mood, tempo. The default reads like a decent prompt - English, warm female vocal, melodic piano pop, gentle drums, acoustic guitar, uplifting, 90 BPM. Vague style prompts are the #1 cause of generic output; name the instrumentation.

lyrics takes words with section markers, sections separated by a blank line. [Verse], [Chorus], whatever you like. Leave it empty for instrumentals and describe the instrumentation in style instead - and note that blank lyrics do not secretly switch you to direct generation. Your planning choice still applies.

Then planning, three options, and this is the one people get wrong:

  • full - write melody plus chords.
  • melody - write a melody only, leaving the harmony for the model to invent at render time.
  • off - skip the symbolic score entirely and generate music directly from style and lyrics.

There's also seed (set here, not on the Render node - the plan carries it downstream) and max_score_tokens, a safety limit on how long the score can get. It is not song duration; the tooltip couldn't be clearer and the distinction still confuses people. Default 4096 is generous for a normal song.

The optional score_abc input is the interesting one. Feed it an ABC score and the node skips score-writing and keeps your music. It requires full or melody - with off there's nothing for the score to condition. The README is blunt about what this is: score-conditioned generation, not audio transcription. If you were hoping to hum something and have it transcribed, that's SheetSage2 and it isn't in this pack.

Outputs, and how to use them cheaply

composition is the opaque YUE2_PLAN payload you wire into Render Music. score_abc is the actual ABC text as a STRING - and it renders in the node's UI too.

The cheap workflow, and the one I'd start with: skip rendering entirely. Wire score_abc into core Preview as Text, queue, and read the score. If the melody's boring or the chords are nonsense, change the seed or tighten style and queue again. You've spent seconds per iteration. When it looks right, connect the Render chain.

For editing, run score_abc into the pack's Piano Roll node, edit visually, and feed the edited text into a second Compose node which passes it through without writing a new score.

When it breaks

"The score reached its token limit." That's max_score_tokens being hit - either raise it, simplify the piece, or try a different seed. It happens with instrumental prompts too. The node deliberately fails instead of quietly falling back to direct generation, so if you wanted off, set off.

Editing the composition invalidates the render. If you edit the score in the Compose widget after queueing Render, Render raises "YuE2 plan changed" rather than generating something that doesn't match your score. Re-queue the Compose node, then the render.

Everything downstream blew up because a node is missing. This pack needs a current ComfyUI - the pack's loader imports prebuilt ops from comfy_kitchen. Update ComfyUI, restart, check the startup log; no other FL pack is required.

CategoryFL YuE2

Inputs (7)

NameTypeDefaultDescription
music_modelYUE2_MODEL
styleSTRINGEnglish, warm female vocal, melodic piano pop, gentle drums, acoustic guitar, uplifting, 90 BPMDescribe language, genre, instruments, vocal character, mood and tempo.
lyricsSTRING[Verse] Morning light across the floor I hear the world outside my door Every road begins with you Every sky is turning blue [Chorus] Take me where the rivers run Dancing underneath the sun Hold this moment, let it stay We will find another wayWords to sing, with [Verse], [Chorus], etc. Leave blank for instrumental music and describe it in style. Your planning choice still applies.
planningCOMBOfullfull: melody + chords; melody: melody only; off: direct music generation.
seedINT8310010–9007199254740991
max_score_tokensINT4096128–12000Safety limit for the written score. Does not set audio duration.
score_abcoptSTRINGOptional YuE2-compatible ABC score. Leave empty to compose one. Requires full or melody planning.

Outputs (2)

NameTypeDescription
compositionYUE2_PLAN
score_abcSTRING