RestartSamplerCustomNoise
Wrap any sampler in restart capability and pick the noise it restarts with
- sampler
- custom_noise_opt
- SAMPLER
The RestartSamplerCustomNoise node is the custom-sampler half of sonar's restart-sampling bridge. Where its sibling KRestartSamplerCustomNoise is a full KSampler clone with restart fields baked in, this one is a SAMPLER-in, SAMPLER-out wrapper: you hand it a sampler, it hands you back a restart-capable version of that sampler, and you slot the result into a custom-sampling workflow. Plus the one socket that makes it a sonar node: an optional custom_noise_opt input so the noise added by restarts can be any SONAR_CUSTOM_NOISE chain you built - pyramid, brownian, a blend - rather than stock gaussian.
Restart sampling, in one breath: periodically re-add a small amount of noise at low noise levels and denoise back down, which contracts the error that ordinary converging samplers (Euler, DPM++ 2M) accumulate and leaves you with SDE-ish quality at near-ODE speed. It's a real, paper-backed technique (arXiv 2306.14878), and ssitu's ComfyUI_restart_sampling is the reference implementation the community actually runs. This node is that, wired for custom noise.
The inputs are gloriously few: sampler (whatever sampler you want to wrap - Euler, DPM++ 2M, your pick), chunked_mode (keep it true so stateful samplers don't lose their step-to-step state when restart segments split the run), and the optional custom_noise_opt. The output is a SAMPLER you feed downstream. Notice what's not here: no segments, no steps, no restart_scheduler. Those live on RestartScheduler from the restart_sampling pack - you still need that node, because it's what produces the sigma schedule with restart segments inserted. The division of labor is: RestartScheduler schedules, this wrapper samples, and you plug a noise node in if you want exotic restarts.
A minimal wiring: sampler node (say Euler) → RestartSamplerCustomNoise → SamplerCustom's sampler input, with RestartScheduler feeding sigmas, a noise node chain feeding custom_noise_opt. From there it's a normal custom-sampling graph.
Two things to keep straight. First, both packs must be installed - this node only appears in the node list when a recent enough ComfyUI_restart_sampling is present, so install sonar and ssitu's pack:
cd ComfyUI/custom_nodes
git clone https://github.com/blepping/ComfyUI-sonar
git clone https://github.com/ssitu/ComfyUI_restart_sampling
Second, don't wrap samplers that restart sampling fundamentally fights with. SDE samplers and momentum samplers inject their own noise and restart's error-contraction logic doesn't play nicely with them - ssitu's docs are explicit that this "is likely not an improvement over normal sampling." If your wrapped sampler ignores restart anyway, you'll notice output that looks more like plain sampling than you paid for.
It's a bridge node, not a headline feature, but it's the bridge that lets you combine two genuinely good ideas: restart's quality bump and sonar's noise control. Worth having on the palette if you already run either pack.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler | SAMPLER | — | |
| chunked_mode | BOOLEAN | true | — |
| custom_noise_optopt | SONAR_CUSTOM_NOISE,OCS_NOISE | Optional custom noise input. The following input types are supported: SONAR_CUSTOM_NOISE, OCS_NOISE |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |