Splice Sigmas At %
Glue two schedules together at a point you choose
- sigmas_a
- sigmas_b
- spliced_sigmas
- first_part
- second_part
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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas_a | SIGMAS | — | |
| sigmas_b | SIGMAS | — | |
| boundary | FLOAT | 0.5000–1 | — |
| include_boundary | BOOLEAN | If enabled, the boundary sigma is included at the splice point, which can smooth transitions but adds an extra step. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| spliced_sigmas | SIGMAS | — |
| first_part | SIGMAS | — |
| second_part | SIGMAS | — |