⚗ Alchemica · Solver & Detail
Solver, detail boost and ancestral noise — and why 0.40 is the setting that ruins skin
- opts
- ALCHEMICA_OPTS
This is the option node that changes how each individual step is taken and how much texture the run ends up with. It's also the group where the single most common self-inflicted wound lives, so read the detail section before you touch it.
Solver
A 47-entry dropdown: the pack's own solvers (euler, euler_2m, heun …) plus every core ComfyUI sampler, prefixed comfy: - comfy:euler, comfy:euler_cfg_pp, comfy:euler_ancestral, comfy:dpm_2, comfy:heunpp2, comfy:exp_heun_2_x0_sde and the rest. Picking a comfy: solver hands the step loop straight back to ComfyUI's implementation.
euler is the fast default; euler_2m (a second-order midpoint variant) is what the calibrated presets use, because it extracts more per step at the cost of an extra model evaluation. The _cfg_pp samplers deserve a note here - they exist for low-CFG models like this one and rewrite how the guidance term is applied; on SDXL at CFG 7 they were a common disappointment, which is a different problem entirely.
The detail boost, honestly
detail_amount - 0 off, negative softens. It works by adding a small extra component to the prediction inside a window, which raises high-frequency energy: skin micro-relief, fabric weave, fine material detail, without touching chroma.
The measurement that matters: 0.12 is the validated value. 0.40 covers skin with coloured speckles. 0.12 raised skin micro-relief by 24% with the same chroma noise as a clean reference. The node's own default is 0.3, which is a generic default rather than a recommendation for Krea 2 - the presets set 0.12 for a reason, so type it in.
Where the window sits can be given two ways, and they interact:
- as fractions of the trajectory -
detail_start(0.15),detail_end(0.95) anddetail_peak(0.6), i.e. a smooth bump that peaks a bit past the middle. - as absolute sigmas -
detail_sigma_hianddetail_sigma_lo, where 0 means "use the fraction fields instead" and −1 means "take the window from the calibration profile". The profile places it over the measured detail window (the pack's numbers: sharpness grows between sigma 0.57 and 0.13), which is more trustworthy than any fraction you'd guess.
Ancestral noise and the contraction
eta - how much fresh noise is injected along the way, 0 to 1.5. This is where per-seed texture variation comes from; 0 makes the run deterministic. The pack's clean value is around 0.5–0.6.
sigma_gate (0.1) and gate_hi (0.35) - the gate. Below sigma_gate, eta is forced to 0, so the final steps add no grain. Above gate_hi, eta is at full strength. Between the two it ramps. That's a genuinely sensible shape: noise early to create texture, none at the end to add speckle.
contraction - scales the initial noise, 0.3 to 1.2, default 1.0 in this node and 0.85 in the calibrated presets. Slightly contracting the starting noise (0.85, i.e. starting a touch closer to the mean) is one of those small deltas that shows up in a same-seed comparison and disappears in a different-seed one.
Output
One ALCHEMICA_OPTS socket. Chain it in front of the advanced sampler:
Alchemica · Solver & Detail ─opts→ AlchemicaSampler · opts
It overrides only its own group - solver, detail, eta, gates, contraction - and leaves whatever the preset said about schedule, restart, CFG and stages alone. The optional opts input exists so you can stack it with the other four option nodes.
Installing
Part of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
Restart the server - the nodes won't register on a browser reload. ComfyUI 0.36.0+, no pip install (the project ships an empty dependency list). Solver registration is extensible from alchemica/solvers.py if you want your own.
Traps
Turning detail up to fix blurriness. Blurriness at 8 steps on a distilled model usually means the step schedule is wrong or the resolution is too high, not that detail needs more. 0.4 on skin is the pack's own cautionary measurement.
Setting detail_sigma_hi/_lo and wondering why detail_start/_end/_peak do nothing. Any non-zero sigma pair takes over; 0 hands control back to the fractions.
Running comfy:euler_ancestral alongside a non-zero eta. You've now asked for ancestral noise twice, from two different mechanisms. Pick one - Alchemica's eta inside an Alchemica solver, or a Comfy ancestral sampler with eta at 0.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| solver | COMBO | euler | 47 options: euler, euler_2m, heun, comfy:euler, comfy:euler_cfg_pp, comfy:euler_ancestral, +41 |
| detail_amount | FLOAT | 0.30-1–1 | Detail boost (0 = off, negative = softer) |
| detail_start | FLOAT | 0.150–1 | Fraction of the trajectory where it starts |
| detail_end | FLOAT | 0.950–1 | Fraction of the trajectory where it ends |
| detail_peak | FLOAT | 0.600.05–0.95 | Where it peaks |
| detail_sigma_hi | FLOAT | 0.00-1–1 | Sigma window: start. 0 = use detail_start/end, -1 = from the profile |
| detail_sigma_lo | FLOAT | 0.00-1–1 | Sigma window: end. 0 = use detail_start/end, -1 = from the profile |
| eta | FLOAT | 0.500–1.5 | Ancestral noise at high sigma (variety/texture). 0 = deterministic |
| sigma_gate | FLOAT | 0.650–1 | Below this sigma eta = 0. Keep this at or above the profile's detail_sigma_hi, or eta reinjects noise while skin/fabric detail is forming (wet-look artifacts) |
| gate_hi | FLOAT | 0.850–1 | Above this sigma eta is at full strength (pure composition phase) |
| contraction | FLOAT | 0.850.3–1.2 | Scale of the initial noise. 1 = standard |
| optsopt | ALCHEMICA_OPTS | Chain from another Alchemica options node |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| ALCHEMICA_OPTS | ALCHEMICA_OPTS | — |