Cast Scheduler To Detailer
Stop the scheduler type error when wiring a detailer
- scheduler
Cast Scheduler To Detailer is a compatibility shim for a dumb problem: ComfyUI nodes each declare their own allowed list of scheduler names, and a scheduler value that's perfectly legal in one node's dropdown isn't always accepted by another. Detailer nodes - the Impact Pack's FaceDetailer and its kin, which detect a region, re-render it at full resolution, and paste it back - expect a specific scheduler vocabulary. This node takes any vanilla scheduler string and re-types it so a detailer's scheduler input accepts it.
The mechanism is exactly as unglamorous as it sounds. The node accepts the core vanilla schedulers (simple, karras, exponential, ddim_uniform, beta, normal, and friends), and its output is typed as the detailer scheduler list - the 17-name vocabulary detailers understand, which includes the architecture-specific entries like GITS[coeff=1.2], LTXV[default], and the OSS schedulers. At runtime, if the scheduler you passed in is already in that detailer list, it's passed straight through; if not, it falls back to simple, which every detailer accepts. It's a cast, not a conversion - no noise schedule is transformed, just the label re-validated.
Why you'd hit this
The most common trigger: you're driving several samplers from one shared scheduler value (say, from a context pipe or a converted widget), and one of those consumers is a detailer whose dropdown list doesn't include the name you chose. ComfyUI's frontend will refuse the wire as incompatible, or run it and treat the value as invalid. This node sits between them and says "here's a scheduler that the detailer's type system accepts," mapping unknown names to simple so the run doesn't die.
Input and output
- scheduler - the vanilla scheduler enum.
- Output scheduler, typed as the detailer list.
For the pack's workflow-minded audience, the honest framing: you'll likely never need this if you hardcode a scheduler in the detailer's own widget. It exists for graphs that centralize scheduler choice in one place - which is a real pattern, just not a universal one.
Install
Part of duckcomfy personal nodes. ComfyUI Manager → search "duckcomfy personal nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/duckcomfy/duckcomfy_personal_nodes
Restart ComfyUI. No pip dependencies, no model downloads. The pack installs alongside Impact Pack fine - it has no dependency on it.
Gotchas
The fallback to simple is silent. If you wire in karras and the detailer list happens to include it, you get karras. But pass something exotic that isn't in the detailer vocabulary and you'll get simple with no warning - a subtly different sampling schedule than you asked for, which on a detail pass can change the look of every refined face. If your detailer output suddenly looks softer, check whether your scheduler got cast to simple along the way.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal,AYS SDXL,AYS SD1,AYS SVD,GITS[coeff=1.2],LTXV[default],OSS FLUX,OSS Wan,OSS Chroma | — |