๐ผ Score Studio v3.1 โ the check-up update
A YuE2 song & score workflow for ComfyUI (Score to Screen minus the video, same author) โ for people who want to craft the song itself: tap a style โ write lyrics โ YuE2 writes the score โ check it โ render โ polish โ mix โ save exactly what you hear. All in one graph.
โจ New in v3.1
Music theory and prompt checks โ used to find what is broken and to describe each take, never to rank your song. Choosing is for your ears. Nothing is changed unless you ask.
๐ฉบ Score health check โ out-of-key notes, strong-beat clashes with the chord, big leaps, range, the progression per section (Roman numerals, royal road, ii-V-I, Canon โฆ) and how each section ends. "N things to look at" comes first; the theory score only says whether anything is broken. Blues / jazz idioms (blue notes, #11, b9 โฆ) are treated as intentional for those styles.
โ Safe melody fixes โ
preview fixeslists what would move; a fix moves only the flagged melody notes and is verified: if anything else changed, it is not applied.๐ Song shape โ chorus lift, where the top note is, how much of the chorus comes back (hook), how the melody moves, lyrics vs notes. Features, not a score: higher is not better.
๐ Compare candidates โ every take side by side on the Timeline (health, shape, loudness, which takes share a score), then โถ and โ A/B to decide. ๐ lyrics โ workflow and ๐ style โ pads put a saved song's lyrics and Style Pad settings back into the workflow โ make it again, or nudge a pad to arrange it.
๐งพ Prompt audit โ before the score is planned: style vs pad (instrumental / vocal, male / female), BPM, lyrics language, unknown section tags, instructions hiding in lyrics; and the score's tempo / meter / key vs the style. Reports, never rewrites.
๐ช Style from words keeps music notation (
7/8,C# minor,G7#11) and withkeep_padchanges only what you asked for. ๐ก Saving is safer still when several saves or ComfyUI processes overlap.
Already in v3.0: ๐ stem mixer (Demucs), ๐ per-stem volume automation, ๐ช style from words, โ take A/B, ๐ง audition the export, ๐ผ key / tempo, and all-or-nothing saving that never clips silently.
Create
๐ช Style from words โ describe the song, the pads move (see above). Same LLM backends as the Lyrics Writer; OFF = your pads as they are.
๐ Style Pad โ 32 genres (incl. anison, Vocaloid, enka, reggae, drum and bass), 20 instruments (lead / support), vocal type & tone, era, language, a mood XY pad, tap tempo and a ๐ฒ random button. The preview text is exactly what YuE2 receives; hand-edit it any time.
๐ Lyrics Writer (optional, OFF by default) โ an LLM writes
[Verse]/[Chorus]lyrics in the Style Pad's language and mood. Runs inside ComfyUI (a Qwen3-VL / Qwen3.5 file frommodels/text_encoders, loaded only while writing) or via LM Studio. ๐ผ Add a photo and it imagines the story behind it, then writes lyrics sung from inside that story.๐ YuE2 Console โ every ABC / music sampling knob behind presets:
balanced/stable/adventurous/wild/tight_lyrics/style_strict/custom.tight_lyricsandstyle_strictraise CFG and are experiments (YuE2's default with a score is CFG 1.0) โ compare them withbalancedon the same seed.๐น Instrumental Gate โ YuE2 sings even if you write "no vocals". Pick the community instrumental LoRA (
ar_lora_inst_v3abc_comfyui.safetensorsfrom Mothersuperior/YuE2-instrumental-cot-full-loras) and the instrumental pad applies it, sets the lyrics to[instrumental]and strips lyric lines from the score.
The score (ABC)
๐ Start from an existing song or score (bno84's YuE2-Kit) โ None (compose as usual) / ABC (paste or open a score) / Transcribe (SheetSage2 writes an existing song's melody and chords as a score). Turn on Extend and YuE2 keeps that score as the opening and writes what comes next. One ๐ผ score mode switch for full / melody.
๐ป ABC Instrument โ YuE2's score has a nameless
V: Insvoice that mostly rests while the singer sings, which is why instrument words in the style rarely show up. This node names the voice after your lead instrument and lets it double the vocal melody where it rested (fill_rests), or hands it the whole melody for an instrumental (take_over).๐ผ ABC Preview by bno84 โ twice: the generated score, and the final score after key / tempo (what actually renders).
๐ฉบ Score health check & song shape โ sits after โ Score check; looks only by default (see "New in v3.1"). ๐งพ Prompt audit sits before the score planner.
โ Score check โ run with
holdON and the run stops once the score exists (not an error). Read the staff, press ๐ to copy the score into the editor, fix it, setholdOFF and continue. The score is cached, so only the music renders.
๐ผ Sing it again in another key or tempo
๐ผ Key / tempo โ "a bit too high", "a little slower": set
semitones(ยฑ12) and / ortempo(BPM or ratio) and run. The score's key signature, notes and chord symbols and the BPM in the style are rewritten, only the music renders again, and the same song comes back sung in the new key and tempo. The rewrite follows YuE2's score rules and is verified for all ยฑ12 semitones with the official checker.
โ Power users
๐ variations (1-4) โ N takes with the same score and the same singing, different timbre and mix, in one run. The composer runs once; only the acoustic KSampler runs N times, far cheaper than re-running. They line up on the Timeline as
var 1/Nand Save Song writes_v1 _v2 โฆ. Up to 2 on 16 GB.๐ render_quality โ KSampler steps draft 16 / good 24 / standard 32 / fine 48 (the composer dominates the total time; this is for listening tests).
โ Timbre LoRA node (an
enabledswitch) โ the Real-Audio tokenizer v4 NAR LoRA, or a timbre LoRA trained on your own songs with ComfyUI-YuE2-Trainer (MODEL side). Works alongside the instrumental LoRA (CLIP side).A survey of YuE2's optional features (song length is bounded by the remaining 24576-token context, not by
max_duration; cfg controls adherence to style and lyrics; and more) is summarised in the README.๐ Provenance โ every take and saved
.jsonrecords the Console settings, key / tempo change, whether the score was edited, and both LoRAs, so you can rebuild a take later. Survives ๐ open โ โ / ๐พ.
Listen, polish, save
๐ง FX Rack โ draggable EQ, compressor, reverb, stereo width, fades, silence trim, loudness match (-16 LUFS default), limiter,
bypass. Re-runs only touch the FX, so tweaks take seconds.โฑ Timeline โ sheet music and waveform on one time axis; the playhead moves through both and the sounding notes light up. Seek, loop, jump to a section. Every run adds a take; โ keeps favourites. ๐ open brings back any song you made before (output/ScoreStudio or audio in input/).
๐ Playback monitor โ a mixer strip inside the Timeline: L/R peak + RMS meters, M / S / I loudness (BS.1770) against your target, a spectrum, a 10-band graphic EQ you move while the song plays, compressor / reverb preview, master fader and A/B. ๐พ save as heard writes exactly what you hear to flac / mp3 / wav / wav32 in seconds (no YuE2 run); โ apply to FX Rack copies the settings into the FX node instead.
๐ Stem mixer โ turn the ๐ Stems node ON and Demucs splits the song into vocals ยท drums ยท bass ยท guitar ยท piano ยท other; faders, mute, solo and pan on the Timeline, heard live, remixed by ๐พ save as heard. Songs opened with ๐ can be split right on the Timeline (๐ separate stems). Separation is good but not magic: ยฑ6 dB per stem sounds natural, extreme moves expose bleed.
๐ Volume automation for the whole mix or each stem ("guitar +6 dB in the chorus only"), โ take A/B (same position, matched loudness), ๐ง audition the export (bit for bit what ๐พ writes), Space = play / pause.
๐พ Save Song โ flac / mp3 / wav / wav32 +
.json(style, lyrics, seed, pad state, FX report, provenance) +.abc.if_over_0dbfs:limit -1 dB(default) /wav32/stop/clip; the node shows the peak and what it did.
Install
Unzip. Copy
custom_nodes/ComfyUI-ScoreStudiointoComfyUI/custom_nodes/. Updating: delete the oldComfyUI-ScoreStudiofolder first, then copy the new one (no leftovers from older versions). No extra pip for the core โ it uses numpy / scipy / av that ComfyUI already ships.models/checkpoints/yue2_3b_bf16.safetensors(or the int8 build; pick it in the ๐ฆ Model group).Install bno84's YuE2-Kit (0.2.0 or newer) and ABC Preview from ComfyUI-Manager. If you installed YuE2-Kit earlier, update it โ 0.1.x shows "unknown pack: bno84.ReferenceInput". For transcription only:
models/audio_encoders/sheetsage2_bf16.safetensors(not needed for None / ABC).For the ๐ mixer (optional): install Demucs into ComfyUI's own Python โ portable build:
python_embeded\python.exe -m pip install demucs; venv / desktop: activate it, thenpip install demucs. The model downloads once on first use (internet needed that one time). Without Demucs everything else works; just leave the ๐ Stems node OFF (it starts OFF).Restart, load
workflows/score_studio_v3.1_en.json(or_ja.json). Needs a ComfyUI with the native YuE2 nodes. Coming from v3.0 or older? Load the new workflow โ an older workflow does not contain the new nodes (๐ฉบ Score health check, ๐งพ Prompt audit; and from v2.x also Stems, Style from words, Key / tempo, Timbre LoRA, Provenance).
Mixer tips: htdemucs_6s (default) gives 6 stems; htdemucs is the fastest (4 stems: vocals / drums / bass / other); htdemucs_ft is the cleanest 4-stem model but about 4ร slower. device: auto uses the GPU when there is room; keep_loaded OFF frees the model (~1 GB) after each run so YuE2 keeps its VRAM. Stem files are temporary until you โ
a take โ favourites keep their stems and reopen with the mix.
Tested on RTX 5060 Ti 16 GB with the bf16 checkpoint. Start with max_duration 60โ90 s for a first song.
Honest notes
FX never changes how YuE2 composes โ the song is shaped by the pads, the Console and the score.
The health check reads the score, not the audio: takes rendered from the same score get the same values (the candidates table marks them with the same letter), and YuE2 does not always sing exactly what is written. Lyrics vs notes uses a rough syllable count. The prompt audit's length warnings are hints, not token counts.
Genre / instrument tags are requests, not commands; compare tags on the same seed and reword the weak ones.
The monitor's compressor and reverb are approximate previews; its EQ and master use the same math as the saved file.
The clip warning and the Save Song report give the sample peak, not an oversampled true peak; an mp3 can peak slightly higher after decoding โ keep the -1 dB limiter ON for mp3.
The live mixer and automation are previews in the browser (Web Audio); ๐พ save as heard re-renders them in Python. Use ๐ง audition the export when you want to hear the saved file exactly.
Timeline section times come from the score's bar count and tempo; "fit score" stretches them to the audio when they differ.
The LLM features are optional and OFF by default; v1.3 remains available as the LLM-free version.
YuE2-3B and the instrumental LoRA are CC BY-NC 4.0 (non-commercial). Demucs is MIT (Meta). The nodes are MIT.
Credits
Score Studio is built on two node packs by my friend bno84 (both MIT; not bundled โ install them from ComfyUI-Manager). Thank you!
ABC Preview โ github.com/bno84/ComfyUI-ABCPreview (Registry
comfyui-abcpreview): sheet music beside the ABC source, preview playback.YuE2-Kit โ github.com/bno84/ComfyUI-YuE2-Kit (Registry
comfyui-yue2-kit, 0.2.0+): Reference input (None / ABC / Transcribe) and YuE2 Extend ABC. The "Reference score" block is used unchanged from bno84'syue2-kit-songexample.
The wide timeline draws sheet music with abcjs 6.7.2 (MIT, Paul Rosen and Gregory Dyke), bundled.
Feedback, odd scores and "this tag doesn't work" reports are very welcome โ they go straight into the next version.