ArctanScheduler
An S-curve sigma schedule that lands softly on both ends
- SIGMAS
ArctanScheduler builds a sigma schedule out of the arctangent function, and the thing to know about arctan is that it's an S-curve: it climbs steeply through the middle and flattens out at both ends. As a noise schedule that translates to "take it easy at the very start, do the bulk of the work in the middle, and taper off gently at the end." It's the polite middle ground between a flat linear schedule and the aggressive concentration of a bell curve - a curve with shape, but without the drama.
How it works
It sweeps a variable from a to b and evaluates atan(x) at each step, then rescales the results to sit exactly between sigma_min and sigma_max. The a and b inputs are the x-window for the sweep, and here's the subtle bit: each endpoint is first multiplied by π/2 before the arctan is evaluated. That scaling is deliberate - it maps the window onto the arctan's most interesting region, where the curve is actually bending, instead of the flat asymptote zones far out where atan does almost nothing. If a > b the node swaps them for you; if they're equal it raises an error.
The inputs that matter
steps(20) - number of sigma values.sigma_max(1.0) /sigma_min(0.0) - endpoints. 0–1 defaults, as with the rest of the pack.a(0.0) /b(1.0) - the x-window, pre-scaled by π/2 internally. This controls how much of the S-curve you traverse: a narrow window near the middle gives you a steep, punchy S; a wide window spreads it out.
Output is a SIGMAS array.
Install
Part of ComfyUI-ScheduledGuider-Ext. ComfyUI Manager - search ComfyUI-ScheduledGuider-Ext - or:
cd ComfyUI/custom_nodes
git clone https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext
Restart ComfyUI. No models, no extra dependencies.
Common issues
The recurring pack theme applies: the default 0–1 output is ready-made for a guider's CFG curve and needs a ScaleToRange pass before it'll behave as a real sampler schedule.
The more Arctan-specific gotcha is window placement. Because the S-curve flattens outside the middle region, if you pick a and b that land the whole sweep in a flat zone (very large values), your "schedule" comes out nearly flat - technically correct, totally boring, and it'll look like the node is broken. If your curve has no visible shape, widen the window or bring it closer to zero.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 201–10000 | — |
| sigma_max | FLOAT | 1.000–5000 | — |
| sigma_min | FLOAT | 0.000–5000 | — |
| a | FLOAT | 0.00-5000–5000 | — |
| b | FLOAT | 1.00-5000–5000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |