⚗ Alchemica · Sigmas [1.0, use Alchemica Scheduler (SIGMAS)]
The Alchemica schedule as a SIGMAS you can plug into SamplerCustom
- model
- opts
- SIGMAS
- IMAGE
Step placement is the thing most people never touch and the thing that most affects a distilled flow-matching model. Krea 2 travels a near-straight path from noise to image; where you spend your eight or twelve samples along that path is not cosmetic. This node hands you the Alchemica step placement as a bare SIGMAS, with no sampling attached.
What it returns
Two outputs:
- SIGMAS - the descending sigma list for a preset, single-stage. Feed it to
SamplerCustomorSamplerCustomAdvanced. - IMAGE - a plot of the schedule. Small thing, disproportionately useful: when a generation looks wrong in a way you can't name, seeing that the steps bunched at the top or bottom of the curve tells you more than staring at the output.
The inputs
model - needed even though this node samples nothing, because the schedule depends on the model's own noise schedule (ModelSamplingFlux for Krea 2, shift mu 1.15).
preset - the same nine the samplers use, and the choice here is the schedule: alchemica_duale (the analytic two-lobe curve), alchemica_tarato (the one measured on your checkpoint), flux_shift, linear_flow, plunge_restart, and so on.
profilo - (auto) recognises the checkpoint, (nessuno) means none. This matters more here than anywhere else in the pack, because alchemica_tarato is the profile's step density. Without a profile the node warns and falls back to the analytic curve.
denoise - 1.0 for a full trajectory. Below 1 truncates the schedule for img2img, the same way a KSampler's denoise does.
opts (optional) - the chain socket, same as everywhere else in this pack.
A small nicety: if a workflow you saved references a profile name that isn't in the current dropdown, the node accepts it as long as the file exists on disk. That's a deliberate escape from the usual "menu built at startup" annoyance.
Why you'd use this instead of a sampler node
Three real cases.
You're building with SamplerCustom anyway. Then you need sigmas from somewhere, and this gives you the pack's curves rather than BasicScheduler's four options.
You want a core sampler with an Alchemica schedule. SIGMAS → SamplerCustom's sigmas input while the sampler socket holds euler, dpmpp_2m or whatever you've settled on. This is the cleanest way to isolate one variable: take the community's favourite sampler and give it the calibrated step placement. If your images suddenly improve, the schedule was the problem; if nothing changes, it wasn't.
You want to compare schedules on one seed. Two SamplerCustom branches sharing a noise seed, differing only in which SIGMAS node feeds them. That's the experiment the pack's own KREA2_ALCHEMICA_CONFRONTO workflow runs against Comfy's simple.
Worth remembering alongside it: the measured hand-off sigma (~0.87, where 98.5% of composition is locked) is baked into the two-stage presets, not into this node's single-stage output. This is a flat trajectory - no stage boundary, no restart unless the preset's geometry says so.
Installing
Part of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
Restart the server. No dependencies - the pack's pyproject.toml lists none and the scheduler code is pure torch. You do need ComfyUI 0.36.0+ for the pack generally, and a Krea 2 checkpoint loaded (or at least loadable) so the node can read the model's noise schedule.
Traps
Mismatched presets. The ⚗ Sampler (SAMPLER) node has its own preset widget. If you build "12-step foto_tarata sigmas + alchemica_turbo loop", you've invented a third recipe and the report will show values from neither cleanly.
comfy: prefixed schedulers mixed with calibrated ones. They're both selectable (comfy:karras, comfy:sgm_uniform via the option node), but the classic KL-optimised schedulers were designed for DDPM-style curved paths, not rectified flow. On Krea 2 they aren't merely "different", they're the wrong shape - a straight path leaves nothing for them to fix.
Expecting sigmas to be tuned to your step count. They're tuned to the model, not to your patience. Fewer steps on a calibrated curve still puts the samples where the model moves fastest, which is the whole argument - but 4 steps at 5 MP is still 4 steps at 5 MP.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| preset | COMBO | alchemica_turbo | 10 options: rif_euler_simple, alchemica_duale, alchemica_turbo, alchemica_quality, alchemica_hires_2stage, foto_tarata, +4 |
| profilo | COMBO | 2 options: (auto), (nessuno) | |
| denoise | FLOAT | 1.000–1 | — |
| optsopt | ALCHEMICA_OPTS | Chain from another Alchemica options node |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |
| IMAGE | IMAGE | — |