Cast Efficiency Scheduler To Detailer
Feed an Efficiency-node scheduler into a detailer without the mismatch
- scheduler
Cast Efficiency Scheduler To Detailer is the sibling of the pack's CastSchedulerToDetailer, and it solves the same type-mismatch problem for one specific source: the Efficiency Nodes suite. Efficiency Nodes (Jags111's pack) ships its own scheduler vocabulary - the vanilla names plus the Align Your Steps family, AYS SD1, AYS SDXL, AYS SVD, and a GITS entry - and its Efficient Loader bundles a scheduler into its pipe output. That's a fine scheduler in Efficiency-land, but a detailer node expects its own list, and ComfyUI's type system treats the two lists as different types even though they're both just strings.
So the node's job: take a scheduler from the Efficiency vocabulary, and re-type it so a detailer accepts it. Mechanically it's the same cast as its vanilla sibling - pass through if the name is already in the detailer's list, otherwise fall back to simple, which every detailer accepts. The only difference is the input side: this one's dropdown starts from the Efficiency list, so AYS SD1 is a legal input here.
When you actually need it
The scenario is very specific: a workflow built around an Efficiency Nodes loader, where the scheduler is centralized in the loader's pipe and you want to reuse that same schedule for an Impact Pack FaceDetailer or a Detailer (SEGS) pass. Without the cast, you're either hardcoding a second scheduler in the detailer widget (defeating the "one source of truth" point) or fighting a type error on the wire. This node is the bridge. If you don't use Efficiency Nodes or don't centralize schedulers, you can skip it entirely - it's a niche adapter, not a daily driver.
Input and output
- scheduler - the Efficiency-vocabulary enum, including the AYS variants.
- Output scheduler, typed as the detailer list.
Note the asymmetry in the code worth knowing: the Efficiency input list contains a bare GITS, but the detailer list contains GITS[coeff=1.2]. The bare string is not in the detailer vocabulary, so a GITS input silently falls back to simple. If you specifically want the GITS schedule on your detailer, you'd want to feed it GITS[coeff=1.2] from the detailer side directly rather than routing it through this node.
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, and no dependency on Efficiency Nodes or Impact Pack - the node just happens to speak their vocabularies.
Gotchas
Same silent-fallback warning as the vanilla cast: anything not in the detailer list becomes simple without a message. That's fine for karras (which is in the list) but a trap for AYS SD1 - wait, actually AYS SD1 is in the detailer list, so it passes through cleanly. The real traps are GITS (falls back) and anything future/unknown. If a detail pass starts producing different-looking faces than your main render, check whether your chosen scheduler survived the cast or quietly became simple.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| scheduler | COMBO | 13 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +7 |
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 | — |