ComfyUI Node

Join Sigma Values

Join Sigma Values — the glue for mixing two noise schedules

By JoeNavark·Created about a year ago·Updated about a year ago· 30
Join Sigma Values
  • sigma_1
  • sigma_2
  • SIGMAS

ComfyUI schedulers give you a fixed set of sigmas and no way to blend them. Karras for the whole run, or linear for the whole run - pick one. Join Sigma Values (SigmaJoiner) is the exception: it takes two SIGMAS tensors and welds them into one. Two inputs, one output, and a niche that's exactly as weird as it sounds.

The use case is a split personality schedule. Want a Karras-shaped front half to nail the composition, then a gentler linear tail for the finishing passes? You can't get that from any single scheduler - but you can generate both halves separately and stitch them. It's the quieter sibling of the pack's drawing node: that one (CustomSplineSigma) is "design the whole curve by hand," this one is "combine two curves someone already made."

How it works

The mechanism is three lines of PyTorch with a sensible edge case. It drops the first value of the second schedule before concatenating - sigma_2[1:] - so the junction doesn't have two identical sigmas back to back. If it kept both, you'd effectively lose a step to a duplicate. Then it concatenates and sorts the whole thing descending, because samplers require a strictly decreasing noise sequence and you can't assume two hand-picked schedules will line up that way on their own. There's a chunk of dictionary-handling code in the source for old sigma objects, but modern ComfyUI passes plain tensors, so it's effectively dead weight you'll never hit.

Inputs and output

  • sigma_1 (SIGMAS) - the first schedule. Its values land at the top of the merged output.
  • sigma_2 (SIGMAS) - the second schedule; its first value gets trimmed.
  • Output: SIGMAS - the joined tensor, wired into the sigmas input of SamplerCustom / SamplerCustomAdvanced or any other SIGMAS slot.

One arithmetic detail worth knowing: the output length is len(sigma_1) + len(sigma_2) - 1, not the sum. 20 + 20 gives you 39. That's intentional, and it means your total step count is one less than you might have budgeted.

Installing it

It ships in the Custom Graph Sigma pack (JoeNavark/comfyui_custom_sigma_editor), so this is the same install as the drawing node. ComfyUI Manager → search "Custom Graph Sigma" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/JoeNavark/comfyui_custom_sigma_editor
# restart ComfyUI

No models, no dependencies beyond what ComfyUI already bundles.

Where people get burned

  • The sort scrambles your shape. Joining schedules works cleanly when both halves live in a similar sigma range. Join a high-sigma schedule to a low-sigma one and the descending sort will interleave them into something that isn't the two-phase curve you drew - it's a merge, not a smooth handoff. If you want a continuous custom curve, that's what the pack's drawing node is for; use this for stitching segments that already overlap in range.
  • The -1 step catch. If your workflow is strict about total steps (distilled models want exact step counts), budget for the trimmed duplicate or you'll be one off.
  • No defaults, no guardrails. Both inputs are required and empty SIGMAS will just produce errors - give it two real scheduler outputs (Karras, exponential, whatever) and it does the rest.
Categorysampling/custom

Inputs (2)

NameTypeDefaultDescription
sigma_1SIGMAS
sigma_2SIGMAS

Outputs (1)

NameTypeDescription
SIGMASSIGMAS