Nodes/JK AceStep Nodes/AceStepKSamplerAdvanced
ComfyUI Node

AceStepKSamplerAdvanced

Step-by-Step Control for Multi-Pass ACE-Step Refinement

By jeankassio·Created 9 months ago·Updated 9 months ago· 32
AceStepKSamplerAdvanced
  • model
  • positive
  • negative
  • latent
  • vae
  • latent
steps80
cfg7.0
sampler_name
scheduler
add_noise
noise_seed0
start_at_step0
end_at_step80
return_with_leftover_noise
use_apgtrue
use_cfg_rescaletrue
cfg_rescale_multiplier0.50
enable_dynamic_cfgfalse
enable_latent_normalizationfalse
noise_ema0.05
noise_norm_threshold3.5
anti_autotune_strength0.25
frequency_damping0.00
temporal_smoothing0.00
beat_stability0.00
enable_quality_checkfalse
quality_check_target0.85
quality_check_min40
quality_check_max150
quality_check_interval5

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.

CategoryJK AceStep Nodes/Sampling

Inputs (30)

NameTypeDefaultDescription
modelMODEL
stepsINT8020–120
cfgFLOAT7.03–15
sampler_nameCOMBO46 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +40
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
add_noiseCOMBO2 options: enable, disable
noise_seedINT00–18446744073709550000
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
start_at_stepINT00–10000
end_at_stepINT800–10000
return_with_leftover_noiseCOMBO2 options: disable, enable
use_apgoptBOOLEANtrue
use_cfg_rescaleoptBOOLEANtrue
cfg_rescale_multiplieroptFLOAT0.500–1
enable_dynamic_cfgoptBOOLEANfalse
enable_latent_normalizationoptBOOLEANfalse
noise_emaoptFLOAT0.050–0.5
noise_norm_thresholdoptFLOAT3.50–5
anti_autotune_strengthoptFLOAT0.250–1
frequency_dampingoptFLOAT0.000–2
temporal_smoothingoptFLOAT0.000–0.5
beat_stabilityoptFLOAT0.000–1
enable_quality_checkoptBOOLEANfalse
quality_check_targetoptFLOAT0.850.5–1
quality_check_minoptINT4020–100
quality_check_maxoptINT15050–300
quality_check_intervaloptINT51–20
vaeoptVAE

Outputs (1)

NameTypeDescription
latentLATENT