Sigma Schedule To Sigmas ππ π
Turning an abstract noise schedule into a concrete sigma list
- sigma_schedule
- SIGMAS
This node converts a SIGMA_SCHEDULE - the abstract "here's the beta/noise math" object built by a node like ADE_RawSigmaSchedule - into an actual list of sigma values for a specific step count and denoise strength. It's the same job a normal KSampler (Advanced) does internally when it turns your scheduler + steps choice into concrete sigmas, except here it's exposed as its own node so you can hand that list to a custom sampler chain instead of letting a black-box KSampler compute it for you.
This is a plumbing node, not a creative one. You reach for it specifically when you're building (or replicating) a custom sampling setup - most often to lock in a beta schedule matching a particular motion model family precisely, rather than trusting a generic scheduler to land close enough.
How it works
A SIGMA_SCHEDULE describes the shape of the noise curve in the abstract (the beta values, whether it's linear/scaled/etc., zero-terminal-SNR or not). This node discretizes that curve into the actual sequence of sigma values a sampler steps through, given how many steps you want and how much of the schedule to use via denoise - the same "1.0 for a full generation, lower for img2img-style partial denoising" logic as any other denoise control in ComfyUI. scheduler picks which stepping strategy walks through that curve (the same family of choices - karras, normal, and similar - you'd see on a standard sampler node).
The inputs and outputs that matter
All four required inputs matter here - there's nothing optional on this node:
sigma_schedule(typeSIGMA_SCHEDULE) - the schedule object, fromADE_RawSigmaScheduleor another node producing that type.scheduler- which discretization strategy to apply to the schedule.steps(default 20) - how many sigma values to produce, i.e. how many sampling steps you're planning to run.denoise(default 1, range 0β1) - how much of the full schedule to actually traverse.
Output is a single SIGMAS list - the same type a normal KSampler's internal scheduler produces, which plugs into SamplerCustom or any node expecting an explicit sigmas input.
How to install it
Standard for the pack - ComfyUI Manager, search AnimateDiff Evolved by Kosinkadink, or:
cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
No model download for this node - it's pure math on a schedule object you build elsewhere in the graph.
Common issues & troubleshooting
Not sure what feeds sigma_schedule. This node is the second half of a two-node pair. ADE_RawSigmaSchedule is what actually builds the schedule from beta-curve parameters; this node just discretizes it. If you landed here first, go build the schedule upstream before wiring this in.
steps here doesn't match the step count in your KSampler. It needs to. This node bakes a specific step count into the sigma list at generation time - if your actual sampler runs a different number of steps than what you set here, the mismatch will show up as broken or truncated sampling.
Not sure you need this over just picking a scheduler in a normal KSampler. For most AnimateDiff work, you don't - a standard KSampler's built-in scheduler dropdown covers the common cases. This node exists for precise replication of a specific beta schedule (matching an exact motion-model family's training conditions) rather than everyday use, and it's genuinely rare to see it outside advanced custom-sampler setups.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sigma_schedule | SIGMA_SCHEDULE | β | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| steps | INT | 201β10000 | β |
| denoise | FLOAT | 1.000β1 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | β |