ClownOptions Automation
Schedule sampler parameters over time (and per frame)
- etas
- etas_substep
- s_noises
- s_noises_substep
- epsilon_scales
- frame_weights
- options
- options
Most sampler settings are a single number you set once. ClownOptions Automation lets you make them a curve instead - a value that changes from step to step across the sampling run. Want more SDE noise early and less late? A different eta at each step? This is the node that feeds those per-step schedules into a RES4LYF sampler. And for Wan video, it carries frame_weights, so you can vary the effect frame-by-frame.
This is the concrete expression of RES4LYF's founding idea. ClownsharkBatwing has said the whole point of the pack is that "modulating parameters vs. time" produces large gains in image quality - that the sampling process isn't one setting, it's a trajectory you can shape. Automation is where you actually do that shaping: instead of a flat eta, you hand the sampler a SIGMAS line that is the eta schedule, one value per step. It's a power feature, and like most of the pack it rewards experimentation over documentation.
How it works
Each input takes a SIGMAS-typed list of values - one per step - and the node packs them into an OPTIONS object the sampler reads. Where the sampler would normally use a constant, it now walks your list. You generate those lists with the pack's sigma/curve nodes and route them in here.
The inputs and outputs that matter
Everything here is optional - supply only the parameters you want to automate and leave the rest to the sampler's own single values.
options(OPTIONS) out - into your sampler's options input; chain with other ClownOptions nodes via the optionaloptionsinput.etas(SIGMAS) - a per-step schedule foreta, the SDE noise-injection amount. The most useful one to automate: front-load noise for variety, taper it for a clean finish.s_noises(SIGMAS) - per-step schedule for the SDE noise scale (s_noise).etas_substep/s_noises_substep- the same, but for solver substeps (only meaningful on2s/3s/5ssamplers).epsilon_scales(SIGMAS) - per-step scaling of the model's prediction; a finer, more experimental lever.frame_weights(SIGMAS) - for video: weight the effect per frame. This is the hook for Wan temporal work, letting a setting ramp across the clip.
How to install it
ComfyUI Manager: search RES4LYF, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ClownsharkBatwing/RES4LYF
cd RES4LYF
pip install -r requirements.txt
then restart and hard-refresh (F5). Nothing to download.
Common issues & troubleshooting
Nothing changed. Two usual causes: you left every input empty (then it passes through unchanged), or the SIGMAS list you fed doesn't line up with your step count. A schedule shorter than your steps can leave the tail on defaults.
The result got noisy or unstable. You're probably automating eta/s_noise too high across too many steps. SDE noise stacks - a schedule that holds a big eta all the way through is a lot of injected noise. Taper it toward the end.
frame_weights did nothing on an image. It's a video lever - it only means something when you're sampling frames (Wan). On a single image there are no frames to weight.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| etasopt | SIGMAS | — | |
| etas_substepopt | SIGMAS | — | |
| s_noisesopt | SIGMAS | — | |
| s_noises_substepopt | SIGMAS | — | |
| epsilon_scalesopt | SIGMAS | — | |
| frame_weightsopt | SIGMAS | — | |
| optionsopt | OPTIONS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| options | OPTIONS | — |