Nodes/ComfyUI_FL-SongGen/FL Song Gen Style Transfer
ComfyUI Node

FL Song Gen Style Transfer

Steal the vibe, not the song — FL SongGen Style Transfer

By filliptm·Created 8 months ago·Updated 4 months ago· 62
FL Song Gen Style Transfer
  • model
  • reference_audio
  • mixed_audio
  • vocal_audio
  • bgm_audio
lyrics[intro-short] ; [verse] Hello world.This is a test ; [chorus] Singing along.Making music ; [outro-short]
description
duration60
temperature0.90
cfg_coef1.5
top_k50
gen_typemixed
seed-1

A text description gets you a song like the one you imagined. A reference recording gets you a song that actually sounds like it - same genre, same instrumentation, same rhythm, same vocal character. That's the whole job of this node: it's FL SongGen Generate with one extra input, reference_audio, that steers the result with real audio instead of words.

How it works

You feed it any ComfyUI AUDIO clip, and the node does three things before the model ever sees it:

  1. Resamples it to the model's 48 kHz.
  2. Truncates it to the first 10 seconds - this is the part people miss. Feed it a full song and the last 90% is silently thrown away.
  3. Runs it through Demucs to split it into vocal and instrumental stems, so the model can copy the singing style and the backing sound separately.

The author's tip: use the chorus of a reference track, because that's where the style is most concentrated. Ten seconds of a chorus tells the model more than a minute of a verse.

The inputs that matter

  • model - from the Model Loader, same as Generate.
  • lyrics - the same tagged format, [verse] ... ; [chorus] ..., with phrases separated by periods.
  • reference_audio - the style source. This is what makes the node.
  • description - optional, and worth using with the reference rather than instead of it. Add text to pin down what the audio can't say: voice gender when the clip is ambiguous, a specific emotion, a BPM. But the README is upfront that if your description fights the reference audio, results get unpredictable. Keep them complementary.

Everything else - duration (clamped to the model's max), temperature, cfg_coef, top_k, gen_type, seed - is identical to Generate, including the gen_type trap: on the default mixed, only mixed_audio has sound and the vocal_audio/bgm_audio outputs are silence. Set separate for real stems.

Outputs are the same three AUDIO dicts as Generate, so any audio save or preview node works.

Install

ComfyUI Manager (search "FL Song Gen"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_FL-SongGen.git
cd ComfyUI_FL-SongGen
pip install -r requirements.txt

Restart ComfyUI. Note that style transfer pulls in an extra piece: the Demucs model (htdemucs.pth) auto-downloads on first use, on top of the song model checkpoints in ComfyUI/models/songgen/. If you only use this node, you still need the full Model Loader dependency set - the reference path depends on all of it.

Troubleshooting

  • The reference barely influences the result - check how long the clip is. Only the first 10 seconds count, and if that window is an intro or a quiet section, there's no style to copy. Trim to the chorus yourself before loading.
  • Stems are silent - gen_type left on mixed; switch to separate.
  • Output sounds wrong - your description is fighting the audio. Drop the description, or make it agree with what the reference actually is.
  • Slow first run - the Demucs download plus model load. Subsequent runs are faster.
CategoryFL Song Gen

Inputs (10)

NameTypeDefaultDescription
modelSONGGEN_MODELLoaded SongGeneration model
lyricsSTRING[intro-short] ; [verse] Hello world.This is a test ; [chorus] Singing along.Making music ; [outro-short]Formatted lyrics with section tags
reference_audioAUDIOReference audio for style (max 10 seconds used)
descriptionoptSTRINGOptional style description to combine with reference audio (e.g., 'female, pop, emotional')
durationoptFLOAT6030–270Target duration in seconds
temperatureoptFLOAT0.900.1–2Sampling temperature (higher = more random)
cfg_coefoptFLOAT1.50.5–5Classifier-free guidance strength
top_koptINT501–500Top-k sampling (lower = more focused)
gen_typeoptCOMBOmixedOutput type: mixed, separate (all tracks), vocal only, or bgm only
seedoptINT-1-1–2147483647Random seed (-1 for random)

Outputs (3)

NameTypeDescription
mixed_audioAUDIO
vocal_audioAUDIO
bgm_audioAUDIO