Nodes/ComfyUI-AceStep_SFT/AceStep 1.5 SFT Cover / Remix
ComfyUI Node

AceStep 1.5 SFT Cover / Remix

Same song, new genre — and the lyrics trap that bites everyone

By jeankassio·Created 8 months ago·Updated 7 days ago· 65
AceStep 1.5 SFT Cover / Remix
  • source
  • reference_audio
  • task
◄source_conditioningsemantic_fsq►
◄remix_strength0.40►
◄cover_noise_strength0.20►
◄preserve_singer_identitytrue►

Cover / Remix is the node that turns a song you have into the same song in a genre you want. Melody, rhythm, structure and arrangement come from your source track; the vocals and the instrumentation get regenerated together in the style you prompt. It's the ACE-Step 1.5 feature that makes the model feel less like a slot machine and more like an instrument - and it's the one people most often get wrong, because of one field.

Short version of the trap: your cover will not sing your source's lyrics unless you paste them in.

Why not just use img2img?

Because latent_or_audio with denoise < 1 isn't a cover. It's a refinement - it starts from the source's noisy latent and drifts, which can keep the general texture but gives you no trained structural conditioning. Cover/Remix uses the actual ACE-Step cover path the model was trained on: it extracts structural hints from the source and feeds them into sampling as a first-class condition, then hands you back a fully regenerated mix. That's why the node's whole job is producing a task object rather than audio. ComfyUI's built-in ACE-Step nodes only expose text2music, so this task route (also offered by other community packs) is the only way in.

The inputs that matter

Wired in this order: source (AUDIO or LATENT - the song whose melody and structure drives the cover), then source_conditioning. Keep it on semantic_fsq, which is the recommended path: it pulls 5 Hz semantic codes and rebuilds 25 Hz structural hints, letting the style and timbre move far while the composition holds. raw_no_fsq conditions on the acoustic latent directly, which retains more of the source's actual sound - more faithful, less transformative, more of an advanced knob than a starting point.

remix_strength (default 0.4) is the official audio_cover_strength: the fraction of denoising steps that uses the source cover context. The upstream musician guide suggests 0.3–0.5 for a dramatic genre change, so 0.4 is a sane landing spot - lower drifts back toward the source, higher lets the new style take over. cover_noise_strength (default 0.2) re-noises the complete source and truncates the schedule; raise it to stay closer to the original recording, drop it to 0 to start from pure noise.

preserve_singer_identity is on by default and reuses the whole source as the official reference-audio condition, so the regenerated singer keeps a recognizable timbre. Be honest about what that is: guidance, not cloning. Cover regenerates the entire waveform, so it isn't exact voice matching, and an optional reference_audio (a clean recording of the same singer works best) overrides the automatic source reference entirely.

One output: task (ACESTEP_SFT_TASK). Branch it to both TextEncode's task and Generate's task - one wire isn't enough, and the TextEncode half is what makes it a cover instead of plain text2music.

Sampler settings, briefly

Turbo checkpoints want CFG 1, 8 steps, ODE, shift 3. Base/SFT want CFG 7. Native cover uses the shifted-linear timesteps and peak-normalizes the decoded audio instead of hard-clipping it. Source duration and batch size come from the task itself, and audio-code generation is switched off - the source your actual audio supplies is the native conditioning. Leave latent_or_audio disconnected; the two paths are mutually exclusive.

Install

One repo for the whole suite. Manager search ComfyUI-AceStep_SFT, or:

cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI-AceStep_SFT.git

Install requirements.txt into ComfyUI's Python (transformers>=4.52.0, torchaudio, librosa, soundfile), restart, and make sure you've got the diffusion model (acestep_v1.5_sft.safetensors or the merged SFT+Turbo), both Qwen encoders and ace_1.5_vae.safetensors in models/diffusion_models, models/text_encoders and models/vae. You also want a ComfyUI with native ACE-Step 1.5 support - this pack builds on the core's ACE modules.

Where it goes wrong

Empty lyrics. The single most common complaint, and it's documented behaviour: native cover does not transcribe or infer lyrics from your source. TextEncode's lyrics field empty means you get a cover with no intelligible words in it. Paste the original lyrics in, tags and all.

Duration mismatch. Keep TextEncode's duration in step with the source (the Audio Duration node in this pack exists exactly for that), or set Generate's duration to 0 so it inherits.

Very long sources. The pack recommends staying under 240 seconds; a 4-minute cover on a mid-range card is where VRAM starts deciding things for you.

Expecting a clone. If preserve_singer_identity gives you a singer who sounds adjacent to the original, that's the design, not a bug.

Categoryaudio/AceStep SFT/editing

Inputs (6)

NameTypeDefaultDescription
sourceAUDIO,LATENTSong whose melody, rhythm, and structure will guide the cover/remix.
source_conditioningCOMBOsemantic_fsqsemantic_fsq matches the normal Gradio Remix path. raw_no_fsq is the optional no_fsq path and retains more raw source acoustics.
remix_strengthFLOAT0.400–1Official audio_cover_strength: fraction of denoising steps that uses the source Cover context. The official musician guide recommends 0.3-0.5 for a dramatic genre change; 0.4 is the default here.
cover_noise_strengthFLOAT0.200–1Official Gradio Remix defaults to 0.2. It re-noises the complete source and truncates the schedule; higher values stay closer to the original recording.
preserve_singer_identityBOOLEANtrueReuse the complete source as the official reference_audio condition so the regenerated singer keeps a recognizable timbre. The vocal performance is still regenerated in the target style. A connected reference_audio overrides this.
reference_audiooptAUDIO,LATENTOptional singer/timbre reference, identical to Reference Audio in the official Gradio UI. A clear recording of the same singer is ideal. When disconnected, preserve_singer_identity reuses the source song.

Outputs (1)

NameTypeDescription
taskACESTEP_SFT_TASK—