Nodes/ComfyUI-Apt_Preset/scheduler_interactive_sigmas
ComfyUI Node

scheduler_interactive_sigmas

Drag points on your sigma curve instead of guessing numbers

By cardenluo·Created 2 years ago·Updated 21 days ago· 309
scheduler_interactive_sigmas
  • sigmas
  • adjusted_sigmas
sigmas_adjustments[]

Sigma schedules - how much noise gets removed at each denoising step - used to be something you picked from a dropdown (karras, normal, beta, and so on) and left alone. That's changed: since flow-matching models made the old Karras-style reshaped curves actively counterproductive rather than merely suboptimal, a lot of the community's fine-tuning effort moved into hand-shaping the sigma curve itself, which is exactly what third-party sampler packs like RES4LYF are built around. This node gives you that same hands-on control directly in the graph: instead of picking a named schedule, you take an existing sigmas schedule and reshape it by dragging control points on its plotted curve, per the node's own description.

How it works

Feed it a sigmas input - the output of any scheduler node, whether it's ComfyUI's stock ones or another node in this pack like scheduler_ModelAligned or Scheduler_MixScheduler. The node's own UI lets you drag points on the resulting curve directly on the canvas; those manual adjustments get serialized into the sigmas_adjustments field as a JSON array, one adjusted value per step. That means the adjustment is fully reproducible and saveable - the JSON is what actually drives the output, the dragging is just how you produce it - so a workflow you share carries the exact curve you tuned, not just "trust me, I nudged it a bit."

The inputs and outputs that matter

  • sigmas (required, SIGMAS, tooltip: "Input sigmas schedule to edit") - the base schedule you're reshaping. This has to come from somewhere upstream - a standard scheduler node, or a custom one.
  • sigmas_adjustments (required, STRING, default "[]", tooltip: "JSON array of adjusted sigma values for each step") - the actual per-step override values, normally produced by interacting with the node's curve widget rather than typed by hand, though nothing stops you from hand-editing the JSON directly if you know what you're doing.
  • Output: adjusted_sigmas (SIGMAS) - feed this into your sampler in place of the original schedule.

How to install it

Search ComfyUI-Apt_Preset in ComfyUI Manager, or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git

install.bat covers Windows dependencies; on Linux or Mac, open it, read the pip installs, and run them yourself, or let ComfyUI Manager fill in anything missing on first load. No model files needed - this works purely on the sigma schedule.

Common issues & troubleshooting

Not sure what you're even looking at, or why you'd bother. Pair this with scheduler_sigmas2Graph (also in this pack) so you can visualize the schedule you're editing and the effect of your adjustments before committing to a full render - dragging blind is a lot harder than dragging with the curve visible.

Adjustments don't seem to apply. Check sigmas_adjustments actually holds a populated JSON array and not the default "[]" - if the widget interaction didn't register (workflow loaded from a save where the drag state didn't persist, for instance), the node has nothing to apply and passes the base schedule through essentially unchanged.

Know you want a specific shape but dragging by hand is fiddly. If you're chasing something more systematic than manual point-dragging - a known-good schedule for a specific architecture at a specific step count - scheduler_ModelAligned in this same pack is the more direct route; use this node for hand-tuning on top of that rather than building a schedule from scratch by eye.

Karras or exponential-shaped output looks wrong on a flow-matching model. That's not this node misbehaving - heavily reshaped sigma curves are a known bad fit for flow-matching architectures (Flux, Qwen-Image, Z-Image) specifically, regardless of how they were produced. If your base sigmas already came from a Karras-style schedule, the problem is upstream, not in the adjustments you're layering on.

CategoryApt_Preset/chx_ksample/Scheduler

Inputs (2)

NameTypeDefaultDescription
sigmasSIGMASInput sigmas schedule to edit
sigmas_adjustmentsSTRING[]JSON array of adjusted sigma values for each step

Outputs (1)

NameTypeDescription
adjusted_sigmasSIGMAS