⚗ Alchemica Options · Schedule
The step-scheduler control panel, for when the calibrated profile isn't enough
- opts
- opts
The Alchemica samplers deliberately hide most of what they're doing. This node is the hatch: it exposes the step-scheduling machinery as widgets, and its single output overrides every scheduling setting on the sampler it feeds.
Which is the first thing to understand about it. Connect opts to a sampler's opts input and the option node wins - including over the sampler's own steps, contraction and cfg. That's not a bug, it's the design, and it's how people confuse themselves for an afternoon.
What it exposes
scheduler - the default is alchemica_dual, and this widget decides which of the other knobs mean anything.
alchemica_dual- two lobes of extra steps: one at high sigma for composition, one at low sigma for the final detail.dual_high(1.0) anddual_low(8.0) are how much extra each lobe adds;dual_width_high(0.1) anddual_width_low(0.08) are how far each lobe reaches. This is the schedule you get when there's no calibration profile - a sensible shape, not a measured one.alchemica_calibrated- the profile measured on your checkpoint, with two dials on top:calibrated_exponent(0.5 is the theoretical optimum for Euler; higher puts more steps where the model changes most) andcalibrated_mix(0.15 = the share of steps spread uniformly rather than concentrated).- The fixed curves -
flux_shift(flux_qabove 1 = more steps at the top, below 1 = more at the bottom) andlinear_flow, plus anything ComfyUI registers. shift_override- flow-mu. 0 means "the model's own", and Krea 2's is 1.15. Raise it and you get more of the budget at high noise; lower it and you get more at the end, which is where detail lives.plunge_sigma- 0 = off. Set it and structure stops at that sigma, with the last step jumping straight to 0. It's a curiosity, not a default; the calibrated path handles the tail better.calibrated_v2- the interesting one. On, the calibrated schedule gets the solver-order step law (cube root of the third derivative for second-order solvers likeeuler_2mandheun, instead of the square root Euler-optimal law), smoothing in log-SNR, and half-resolution curves for stage 1 of two-stage sampling. It needs a profile calibrated after 2026-10-10; on older profiles only the smoothing applies. Flex turns this on by default, everything else leaves it off so 1.0 schedules stay byte-identical.
Input and output
steps (8 by default) sits on the node too, because a scheduler without a step count is half a schedule. The optional opts input is a chain: option nodes stack, each one inheriting from the last and overriding what it sets. That's how you get a schedule node plus a restart node plus a two-stage node all feeding one sampler through a single wire.
Output: opts (an ALCHEMICA_OPTS). One wire into the sampler.
When you actually want it
Three honest use cases.
- You want more steps at the end without touching the profile. Drop
shift_overrideslightly below the model's own value. - You want to try the v2 step law on a sampler that doesn't default to it. Flip
calibrated_v2on here and let the option chain carry it. - You're building something the sampler's presets don't cover - a linear flow schedule at a step count nobody shipped, a dual-lobe shape with a different balance. This is the node for that.
If none of those describe you, you don't need this node. That's a real answer, not a dismissal; the calibrated profile with mode on balanced is doing more than any hand-tuned lobe.
Installing
# ComfyUI Manager: search "AlchemicaSampler"
cd ComfyUI/custom_nodes && git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
ComfyUI 0.36+, no pip dependencies, restart the server. It lives under ⚗ AlchemicaMente/sampling/options, and the 1.1 node is the English twin of the 1.0 options node with the Italian widget names.
Where people get burned
Forgetting the override. Your sampler says 8 steps and detail 0.12, and you're queueing, and nothing changes, because the option node is upstream and overriding the schedule. Disconnect the opts wire to A/B it.
Expecting calibrated_v2 to do anything without a fresh calibration. It says so on the tooltip. On a pre-October profile you get the smoothing, which is not nothing, but it isn't the step law.
Scheduler names that aren't there. The list is read at startup from the pack plus ComfyUI and its other packs. Restart after installing anything that adds a scheduler, or it won't appear.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| scheduler | COMBO | alchemica_dual | 13 options: alchemica_dual, alchemica_calibrated, flux_shift, linear_flow, comfy:simple, comfy:sgm_uniform, +7 |
| steps | INT | 81–200 | Total steps (single stage) |
| dual_high | FLOAT | 1.000–20 | alchemica_duale: extra steps on composition (high sigma) |
| dual_width_high | FLOAT | 0.100.01–1 | alchemica_duale: how far the high lobe reaches down |
| dual_low | FLOAT | 8.00–40 | alchemica_duale: extra steps on the final detail (low sigma) |
| dual_width_low | FLOAT | 0.080.01–1 | alchemica_duale: how far the low lobe reaches up |
| calibrated_exponent | FLOAT | 0.500–1.5 | alchemica_tarato: 0.5 = theoretical optimum for euler. Higher = more steps where the model changes most |
| calibrated_mix | FLOAT | 0.150–1 | alchemica_tarato: share of steps spread uniformly |
| shift_override | FLOAT | 0.000–5 | Shift mu (0 = the model's own, 1.15 for Krea 2) |
| flux_q | FLOAT | 1.000.3–3 | flux_shift: >1 more steps at the top, <1 at the bottom |
| plunge_sigma | FLOAT | 0.000–0.95 | 0 = off. Otherwise structure stops here and the last step jumps to 0 |
| calibrated_v2 | BOOLEAN | false | alchemica_tarato v2: step law matched to the solver order (cube root of the 3rd derivative for euler_2m / heun), smoothing in log-SNR, and stage 1 of two stages uses the curves measured at half resolution. Needs a profile calibrated after 2026-10-10 for the new curves (otherwise only the smoothing applies) |
| optsopt | ALCHEMICA_OPTS | Chain from another Alchemica options node |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| opts | ALCHEMICA_OPTS | — |