AceStepKSamplerAdvanced
Step-by-Step Control for Multi-Pass ACE-Step Refinement
- model
- positive
- negative
- latent
- vae
- latent
If AceStepKSampler is the everyday driver, AceStepKSamplerAdvanced is the manual-transmission version: same audio-friendly sampling engine, but you get start_at_step, end_at_step, add_noise, and return_with_leftover_noise so you can run the sampler in passes and progressively refine a piece of music instead of generating from scratch every time.
What's different from the basic sampler
The one sentence summary: where the basic node gives you denoise (a blunt "how much of the latent do I redo" dial), this node gives you explicit control over which slice of the denoising trajectory you operate on. Set start_at_step to 60 and end_at_step to 80 and you're only running the tail end of the schedule - the classic img2img-style refinement pass, but for audio. Set return_with_leftover_noise to enable and the output latent keeps some noise in it, which is what you want when the next node in the chain is another pass that expects to add noise itself.
It keeps all the pack's audio fixes - APG and CFG++ guidance (both default on here, unlike the basic node), anti-autotune smoothing, noise EMA, and the frequency/temporal/beat knobs - so a multi-pass chain doesn't rebuild the metallic-vocal problem that this pack exists to solve.
Inputs and outputs that matter
Required: model, steps, cfg, sampler_name, scheduler, add_noise, noise_seed, positive, negative, latent, start_at_step, end_at_step, return_with_leftover_noise. The noise_seed decouples the per-pass noise from your main seed, which is how you keep variation between passes controlled. Optional set mirrors the basic sampler minus denoise and use_vocoder.
The one output to know: just latent - no audio output like the basic node gets. If you want to hear the result you chain this into a VAE decode / vocoder step yourself, or follow it with a final pass through the basic sampler with the VAE attached. That's by design: it's a mid-chain node, not a terminal one.
Mechanism, briefly
The "Advanced" in the name is the same KSamplerAdvanced contract ComfyUI users know from image workflows (that's where start_at_step/end_at_step semantics come from), with the JKASS audio samplers and smoothing pipeline layered on top. Schedulers matter more here than they do on images - the KB's sampler notes apply doubled: aggressive schedules like Karras re-shape the denoising trajectory, and for a two-pass workflow you generally want the same conservative schedule (sgm_uniform) in both passes so the second pass is actually refining where the first left off.
Install and gotchas
Same as the whole pack: ComfyUI Manager (search "JK AceStep Nodes") or
cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/JK-AceStep-Nodes.git
then restart. Dependencies are torch, numpy, tqdm, and librosa.
Where people slip up: forgetting that the output is latent-only, then wondering why nothing plays. And multi-pass audio has a habit of smearing transients if you run the tail too long - start with a narrow window (start_at_step close to end_at_step) and widen it only if the pass isn't changing anything. Also note cfg defaults to 7.0 here (matching ACE-Step's official default) against 4.0–4.5 in the basic node - that's intentional, but if you're porting a workflow across the two, the settings do not translate directly.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| steps | INT | 8020–120 | — |
| cfg | FLOAT | 7.03–15 | — |
| sampler_name | COMBO | 46 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +40 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| add_noise | COMBO | 2 options: enable, disable | |
| noise_seed | INT | 00–18446744073709550000 | — |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent | LATENT | — | |
| start_at_step | INT | 00–10000 | — |
| end_at_step | INT | 800–10000 | — |
| return_with_leftover_noise | COMBO | 2 options: disable, enable | |
| use_apgopt | BOOLEAN | true | — |
| use_cfg_rescaleopt | BOOLEAN | true | — |
| cfg_rescale_multiplieropt | FLOAT | 0.500–1 | — |
| enable_dynamic_cfgopt | BOOLEAN | false | — |
| enable_latent_normalizationopt | BOOLEAN | false | — |
| noise_emaopt | FLOAT | 0.050–0.5 | — |
| noise_norm_thresholdopt | FLOAT | 3.50–5 | — |
| anti_autotune_strengthopt | FLOAT | 0.250–1 | — |
| frequency_dampingopt | FLOAT | 0.000–2 | — |
| temporal_smoothingopt | FLOAT | 0.000–0.5 | — |
| beat_stabilityopt | FLOAT | 0.000–1 | — |
| enable_quality_checkopt | BOOLEAN | false | — |
| quality_check_targetopt | FLOAT | 0.850.5–1 | — |
| quality_check_minopt | INT | 4020–100 | — |
| quality_check_maxopt | INT | 15050–300 | — |
| quality_check_intervalopt | INT | 51–20 | — |
| vaeopt | VAE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |