Nodes/comfyui-fvmtools/Music · Verlaengern 1 · Quelle
ComfyUI Node

Music · Verlaengern 1 · Quelle

Feed the extender the score it actually rendered, not a guess

By ping1979ping·Created 7 months ago·Updated 2 days ago· 2
Music · Verlaengern 1 · Quelle
  • audio
  • audio
  • abc
  • style
  • lyrics
  • title
  • info
◄production_json(manuell - Eingaenge unten)►
◄abc_override►
◄style_override►
◄lyrics_override►

Local song generation with YuE is real and it works, but it has a ceiling that shows up the moment you like something: the model renders from a score, and a score that keeps growing eventually doesn't fit. People have been running YuE locally since early 2025 - the r/StableDiffusion launch thread called it "Suno at home" and it was re-licensed to Apache 2 a couple of days later - and the pragmatic workaround everybody converges on is the same: render the song in pieces and stitch them. That's the chain this node starts, six nodes long, one new part per queue run.

It is step 1 of 6 (Quelle), and it does one job: hand the rest of the chain the starting material - the exact ABC score that was rendered, plus style, lyrics, title and the unmastered audio. That "exact" is load-bearing. Re-transcribing the score from the audio would mean re-deriving rhythm, and every downstream step aligns new material against this score. Guesswork here propagates into a bad seam ten queue runs later.

Where the score comes from

If you use the FVM Music Production Toolkit branch, a finished run leaves a production JSON under output/audio/music/.../log. The node walks that tree, sorts by modification time, newest first, and puts up to 300 of them in the production_json dropdown. Pick one and it pulls the score out of generation.cover_conditioning.native_abc (falling back to generation.abc), the style, the lyrics, the title, and the audio path from outputs.original_audio or the release FLAC.

You can also leave it on (manuell - Eingaenge unten) and supply everything yourself - that's the path for anyone who generated the song somewhere other than this toolkit.

Inputs and outputs

production_json is the only required input. Four optional ones override what the JSON gave you, each only when non-empty: audio (from a Load Audio node - this one wins over the JSON's path), abc_override (paste your own YuE2-ABC score), style_override, lyrics_override.

The six outputs are all passthroughs into FVM_SongExtendSession: audio, abc, style, lyrics, title, and info, which is a one-glance summary - title, audio length and sample rate, score length and section count. Wiring all six is not optional; the session node takes them as forced inputs, which is the pack's way of making sure you didn't swap two strings around.

The score is parsed on load, so a file that isn't YuE2 ABC fails immediately and loudly rather than at the render step. Two errors you'll meet: Keine Partitur: Production-JSON waehlen oder abc_override fuellen. and Audio nicht gefunden (...). Audio-Eingang verbinden. The second is the common one - the JSON records an absolute path from whoever made it, so a song generated on another machine or an output folder that moved needs the audio input connected.

Install

ComfyUI Manager, search comfyui-fvmtools, or:

cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools

Restart ComfyUI and you'll find it under Add Node → FVMtools/music/extend. No extra Python packages - the whole music branch is numpy plus ComfyUI's own soundfile for FLAC writing. The pack's requirements.txt line (insightface, onnxruntime-gpu, opencv, numpy) is for the face tools; the music nodes don't touch it.

Common issues

The dropdown is empty. It only scans output/audio/music/**/log inside ComfyUI's output directory. Containerised ComfyUI, a custom output path, or a toolkit run elsewhere and it sees nothing. Use (manuell - Eingaenge unten) and paste the parts in.

It picked the wrong JSON. The list is newest-first by file mtime, and the default is the newest. When you're extending an older song, select it deliberately - otherwise you'll extend whatever you generated five minutes ago.

Overrides seem ignored. They are: an override only takes effect when the field is non-empty. Clearing it hands control back to the JSON, which surprises people who filled it once and expected it to stick.

Queueing feels slow or repeats. The node caches on the JSON path plus its mtime, so re-running the same source is cheap and a fresh log re-runs it. That's intentional, but it means an edited JSON with an unchanged mtime is invisible to ComfyUI. Touch the file.

CategoryFVMtools/music/extend

Inputs (5)

NameTypeDefaultDescription
production_jsonCOMBO(manuell - Eingaenge unten)Log-JSON eines fertigen Toolkit-Laufs (output/audio/music/.../log). Liefert die exakt gerenderte Partitur, den Style und das ungemasterte Original-Audio.
audiooptAUDIOUeberschreibt das Audio aus dem JSON.
abc_overrideoptSTRINGEigene YuE2-ABC-Partitur (leer = aus JSON).
style_overrideoptSTRINGEigener Style (leer = aus JSON).
lyrics_overrideoptSTRING—

Outputs (6)

NameTypeDescription
audioAUDIO—
abcSTRING—
styleSTRING—
lyricsSTRING—
titleSTRING—
infoSTRING—