Sigmas ArcTangent
The one inverse-trig reshape that doesn't need normalizing
- sigmas
- SIGMAS
The third in RES4LYF's trio of inverse-trig sigma reshaping nodes, alongside Sigmas ArcSine and Sigmas ArcCosine. It applies the arctangent function to an existing noise schedule to produce a differently-curved one - but it's built slightly differently from its siblings, and the schema tells you why.
What's different about this one
Arcsine and arccosine only accept inputs in [−1, 1], which is why those two nodes expose a normalize_input toggle to rescale your sigma values into range before applying the function. Arctangent is defined for any real number - there's no domain restriction - so this node simply doesn't have that setting. It's a small detail, but it's a genuine reflection of the underlying math rather than an oversight: arctan doesn't need normalizing to avoid NaNs the way its cousins do.
How it works
Arctangent's curve flattens out asymptotically as its input grows - small changes near zero produce a big swing in output, while large inputs barely move the result. Applied to a sigma schedule, that concentrates the reshaping effect near whatever part of your input maps close to zero, with everything further out getting compressed together. As with ArcSine/ArcCosine, the raw arctan output (in radians) gets rescaled by scale_output into a usable range via out_min/out_max.
The inputs and outputs that matter
sigmas(SIGMAS, required) - the schedule to reshape.scale_output(defaulttrue) - rescale the radian result intoout_min–out_max.out_min/out_max(defaults0and1) - the target output range.
Output is a single SIGMAS list. No normalize_input here - that's the whole point.
How to install it
- ComfyUI Manager - search "RES4LYF", install, restart.
- Manual - activate your venv,
cd ComfyUI/custom_nodes && git clone https://github.com/ClownsharkBatwing/RES4LYF,cd RES4LYF,pip install -r requirements.txt(portable builds: use the embeddedpip.exe). Restart.
Common issues & troubleshooting
out_min/out_max still matter a lot. Because arctan compresses large values so aggressively, most of your input schedule can end up mapped into a fairly narrow slice of the output range unless you tune out_max to actually match your model's sigma scale. The 0–1 default is a generic placeholder.
No NaN risk from the domain, but sanity-check the shape anyway. Not needing normalize_input means this node won't error the way ArcSine/ArcCosine can on out-of-range input, but that also means it'll silently hand you a badly-compressed curve without complaint if your out_min/out_max are wrong for the model - it just won't crash while doing it.
Undocumented, same as the rest. The README doesn't cover this node specifically, and there's no community thread comparing it against the arcsine/arccosine variants or against the schedules people actually use in production (beta57, simple, sgm_uniform). Treat it as experimental material, verify the output values with a preview or Sigmas Count before a real render, and default back to your model card's recommended scheduler if you're not specifically chasing a custom curve.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas | SIGMAS | — | |
| scale_output | BOOLEAN | true | — |
| out_min | FLOAT | 0.00-10000–10000 | — |
| out_max | FLOAT | 1.00-10000–10000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |