Nodes/Immac's Tools/Splice Sigmas At %
ComfyUI Node

Splice Sigmas At %

Glue two schedules together at a point you choose

By Immac·Created 11 months ago·Updated 6 months ago· 0
Splice Sigmas At %
  • sigmas_a
  • sigmas_b
  • spliced_sigmas
  • first_part
  • second_part
boundary0.500
include_boundary

Splice Sigmas At % is the more surgical cousin of Concatenate Sigmas. Where concatenation just chains two schedules end to end, this one picks a boundary on the first schedule and combines the two around it - the beginning of schedule A up to the boundary, then the continuation from schedule B. Think of it as mixing a "start" schedule and an "end" schedule into one sampling trajectory.

The mechanism is straightforward once you know how the boundary value is read. It's a fraction of the starting sigma of sigmas_a: the node computes boundary_val = sigmas_a[0] × (1 − boundary). So boundary = 0.0 puts the cut at the very start of A, and boundary = 1.0 at the end (sigma 0). The first part keeps every entry of A that's ≥ the boundary value; the second part takes the entries of B that are ≤ it; and the full spliced schedule is the two joined without a duplicated boundary.

The inputs that matter:

  • sigmas_a, sigmas_b - the two schedules (SIGMAS). A provides the opening, B the tail.
  • boundary - the splice position as a fraction of A's starting sigma, 0.0–1.0 (default 0.5).
  • include_boundary - when on, the boundary value itself is inserted as a step at the splice, which smooths the transition but costs one extra sampling step. Leave it off for a straight cut.

Three outputs come out: spliced_sigmas (the full schedule - wire this into a sampler's sigmas input), plus first_part and second_part, which let you inspect or use each half independently, say to run the first half as a coarse pass and inspect the result before the fine pass.

Why bother? This is how you build hybrid sampling trajectories. A classic move is grabbing the aggressive, high-effort opening of one schedule and swapping its ending for the gentler tail of another - or inserting a "hold" region so the model spends more steps at a particular noise level. Flow-matching models are picky about their sigma curves (Karras-style reshapes hurt them), and the community has leaned on schedule surgery precisely because stock schedulers won't let you reshape mid-run.

The edge-case handling is genuinely robust: if both inputs are None you get None back; if only one schedule is present it just passes through. And if the boundary falls where neither schedule has matching values, include_boundary will still insert the boundary into both halves so the full splice stays contiguous.

Installing it

Included in ComfyUI-ImmacTools by Immac - MIT-licensed, personal-use, dependency-free beyond ComfyUI's own numpy and torch, no model downloads. ComfyUI Manager by repo URL, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Immac/ComfyUI-ImmacTools

Restart ComfyUI; it registers under the Example category, searchable as "Splice Sigmas". The pack uses the newer ComfyExtension API, so update ComfyUI if it doesn't appear.

Common issues

Same device/dtype warning as the other sigma nodes - keep both schedules on the same device and float dtype. Conceptually, remember boundary is a fraction of A's starting sigma, not a step index: 0.5 doesn't mean "halfway through the steps," it means "the point where the noise level has dropped to half of where A began." People expect the former and get the latter. Also note that with include_boundary off, the two halves may not be exactly contiguous in noise level - the boundary value only gets inserted when you ask for it.

CategoryExample

Inputs (4)

NameTypeDefaultDescription
sigmas_aSIGMAS
sigmas_bSIGMAS
boundaryFLOAT0.5000–1
include_boundaryBOOLEANIf enabled, the boundary sigma is included at the splice point, which can smooth transitions but adds an extra step.

Outputs (3)

NameTypeDescription
spliced_sigmasSIGMAS
first_partSIGMAS
second_partSIGMAS