Nodes/RyanOnTheInside/ACE-Step 1.5 Edit Guider (Extend/Repaint) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

ACE-Step 1.5 Edit Guider (Extend/Repaint) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Extend or repaint a section of an existing track

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
ACE-Step 1.5 Edit Guider (Extend/Repaint) βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • model
  • positive
  • negative
  • source_latents
  • reference_latent
  • guider
  • output_latent
β—„cfg1.0β–Ί
β—„extend_left_seconds0.0β–Ί
β—„extend_right_seconds0.0β–Ί
β—„repaint_start_seconds-1.0β–Ί
β—„repaint_end_seconds-1.0β–Ί

This is the guider you reach for when you already have a track and want ACE-Step 1.5 to edit it rather than start from scratch - bolt on more bars at either end, or regenerate a chunk in the middle without touching the rest. Two jobs, one node, controlled by which optional fields you actually fill in.

Guiders are ComfyUI's plumbing for custom sampling: instead of a KSampler doing everything in one box, you build a GUIDER object that encodes the how-to-denoise logic, then hand it to a generic sampler (SamplerCustomAdvanced and friends). RyanOnTheInside built a separate native guider for each ACE-Step task shape rather than one giant node with a mode switch, which is why this pack has an Edit guider, a Cover guider, and more sitting side by side.

How it works

Feed it your model, positive/negative conditioning (from the Task Text Encode node, with task_type set to repaint for the repaint half of this node's job), and source_latents - the latent representation of your existing track. Then you either set the extend fields, the repaint fields, or leave both at their defaults and get essentially a pass-through. It outputs a guider for your sampler plus an output_latent.

The inputs and outputs that matter

  • model, positive, negative, source_latents (all required) - your ACE-Step model, encoded conditioning, and the existing track's latent.
  • cfg (default 1, range 0–100) - classifier-free guidance strength for this edit pass.
  • extend_left_seconds / extend_right_seconds (default 0, up to 240s each) - how much new audio to generate before/after the source track. Leave at 0 if you're only repainting.
  • repaint_start_seconds / repaint_end_seconds (default -1, meaning "unset") - the window of the source track to regenerate in place. Set both to actually repaint a section; leaving them at -1 skips repainting.
  • reference_latent (optional) - per its tooltip, an audio latent used purely "for timbre conditioning," so the output adopts that reference's instrument/voice character. Explicitly stated to have "no effect on task behavior" - it changes how it sounds, not what gets extended or repainted.
  • Outputs - guider (into your sampler) and output_latent.

How to install it

Via ComfyUI Manager: search "RyanOnTheInside," install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. Your first ACE-Step generation in this pack triggers an automatic HuggingFace download of "silence latents" - expect a pause and make sure you have a network connection the first time.

Common issues & troubleshooting

Nothing seems to extend or repaint - output matches the source. You almost certainly left both extend fields at 0 and both repaint fields at -1, which is this node's neutral/no-op state by design. Set one pair explicitly.

Repaint bleeds into the wrong section, or the seam is audible. Double-check repaint_start_seconds/repaint_end_seconds against your track's actual timing - these are absolute seconds into source_latents, not relative offsets, so an off-by-a-few-seconds window is the most common cause of an obvious edit point.

You want the repainted or extended section to keep the original instrument/voice. That's exactly what reference_latent is for - feed it a latent from the source track (or another track with the timbre you want) so the new audio doesn't drift toward a generic ACE-Step default voice.

Everything works but cfg feels either too literal or too loose. This mirrors image-model CFG: higher pushes the edit to hew closer to your conditioning text, lower gives ACE-Step more freedom. Default of 1 is a reasonable starting point; nudge it before assuming the guider itself is misbehaving.

Categorysampling/custom_sampling/guiders

Inputs (10)

NameTypeDefaultDescription
modelMODELβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
source_latentsLATENTβ€”
cfgFLOAT1.00–100β€”
extend_left_secondsoptFLOAT0.00–240β€”
extend_right_secondsoptFLOAT0.00–240β€”
repaint_start_secondsoptFLOAT-1.0-1–1000β€”
repaint_end_secondsoptFLOAT-1.0-1–1000β€”
reference_latentoptLATENTOptional reference audio latent for timbre conditioning. The model will generate audio with the timbre/instrument character of this reference. Does not affect task behavior (extend/repaint).

Outputs (2)

NameTypeDescription
guiderGUIDERβ€”
output_latentLATENTβ€”