Schedule Concatenate
Stitch two schedules together at one exact sigma
- sigmas_left
- sigmas_right
- sigmas
- schedule_info
The Schedule Concatenate node is a glorified join operation with a strict entry requirement: it concatenates two verified schedules only when they share one exactly equal boundary sigma. "Exactly" is doing real work there - no interpolation, no tolerance, no "close enough." The boundary sigma has to match, because a schedule that jumps instead of joins is how you get artifacts.
Here's the shape it's for. Some workflows want a hybrid denoising path - a first segment at one schedule shape, then a handoff to a second. You slice two schedules, and if they meet at the same noise level, this node welds them into one SIGMAS sequence with traceable schedule information carried through. The pack's own README groups it with ScheduleSlice and ScheduleResample as the schedule-editing trio, all of which preserve traceable schedule metadata instead of just dumping numbers at you.
Inputs and outputs
- sigmas_left / schedule_info_left - the first segment and its info JSON.
- sigmas_right / schedule_info_right - the second.
Outputs: sigmas (the joined tensor) and schedule_info (the combined recipe record). The result is still a "verified" Sigmax schedule, which is what lets the rest of the inspection family (Inspector, Comparison, Resample, Slice) keep working downstream.
The workflow that makes this clean: take two schedules from Sigmax schedulers, slice each to a desired segment with ScheduleSlice, and concatenate - the shared boundary sigma is usually the point you sliced at, so the exact-match requirement is satisfiable if you slice deliberately.
Installing
One pack, all nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-Sigmax comfyui-sigmax
Restart, search Sigmax. ComfyUI Manager lists "ComfyUI-Sigmax". Python 3.10+, ComfyUI 0.29.0+, no extra dependencies.
Where people get burned
The exact-match boundary is the trap, and it's not subtle: if your two schedules don't share a precisely equal boundary sigma, the node errors instead of fudging it. That's by design - a concatenation that invents a boundary is how you get a discontinuity the sampler interprets as a violent jump in noise level. So if you hit the error, don't fight it; reslice one side to land on the other's boundary sigma. And remember the general rule for anything that mutates a schedule: the result still feeds a custom-sampling path directly, with no second scheduler or time shift bolted on afterward.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas_left | SIGMAS | — | |
| schedule_info_left | STRING | — | |
| sigmas_right | SIGMAS | — | |
| schedule_info_right | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |
| schedule_info | STRING | — |