Nodes/ComfyUI-SuperNodes/🐧 DualSamplerEulerAncestral
ComfyUI Node

🐧 DualSamplerEulerAncestral

The boring node that makes DualSamplerCustomAdvanced work

By sonnyboxΒ·Created 11 months agoΒ·Updated 11 days agoΒ· 13
🐧 DualSamplerEulerAncestral
    • DUAL_SAMPLER
    β—„eta_video1.00β–Ί
    β—„eta_audio1.00β–Ί
    β—„s_noise_video1.00β–Ί
    β—„s_noise_audio1.00β–Ί

    DualSamplerCustomAdvanced won't take a normal SAMPLER. It expects a DUAL_SAMPLER socket, and this node is the only producer of that type. So if you're sampling a MiniMax H3 packed audio-video latent with the dual node, you'll need one of these sitting next to it. Try to skip it and you'll get the pack's own friendly nudge: a dual sampler needs both schedules, connect it to DualSamplerCustomAdvanced rather than SamplerCustomAdvanced.

    It's a pure configuration node. You set four numbers, it hands back a sampler object, and nothing renders. Don't be confused when "running" it produces no image - that's correct behavior. It's the boring half of the pair, and it's supposed to be.

    What those four numbers do: this is ancestral Euler, run independently for the video and audio streams. Euler ancestral is the classic non-converging sampler - it injects a fresh dose of noise at every step, so it never fully settles. Add steps and the result changes rather than refining; that's true for stock Euler a too, and this node inherits it. The knobs:

    • eta_video / eta_audio - how much ancestral noise each stream gets. The tooltip says it straight: 0 makes that stream behave like plain Euler (which is converging). Default is 1, the classic Euler a behavior.
    • s_noise_video / s_noise_audio - scales how much of that noise actually gets added each step. Default 1.

    That's the entire input list, and the output is a single DUAL_SAMPLER that feeds the dual_sampler input of DualSamplerCustomAdvanced - nothing else.

    Why separate knobs per stream? Because the two streams live at different noise levels for the entire run (different flow shifts), and the whole point of the dual sampler is that you're allowed to treat them differently. In practice: set both etas to 0 and you've effectively got plain per-stream Euler; crank the video eta if the video side looks stiff and you want more variation. But honestly, start at the defaults - 1/1/1/1 is a perfectly reasonable place, and this is the node you tune only after you have a working workflow and a specific artifact to fix.

    One honest caveat, same as any ancestral sampler: with eta above 0, the same seed won't reproduce identically across a step-count change, which makes systematic sweeps misleading. If you're grid-searching steps or seeds, drop the eta on the stream you're testing to 0 first. That's the standard ancestral advice, just wearing a penguin.

    Install is the shared pack steps: ComfyUI Manager β†’ search "ComfyUI-SuperNodes", or git clone https://github.com/sonnybox/ComfyUI-SuperNodes into ComfyUI/custom_nodes and restart. No models, no extra dependencies beyond what the pack already pulls in (which is just matplotlib). Just remember this node needs a current ComfyUI - the pack targets the newer extension API.

    CategorySuperNodes/Sampling

    Inputs (4)

    NameTypeDefaultDescription
    eta_videoFLOAT1.000–100Ancestral noise for the video stream. 0 is similar to Euler.
    eta_audioFLOAT1.000–100Ancestral noise for the audio stream. 0 is similar to Euler.
    s_noise_videoFLOAT1.000–100Scales the noise added to the video stream.
    s_noise_audioFLOAT1.000–100Scales the noise added to the audio stream.

    Outputs (1)

    NameTypeDescription
    DUAL_SAMPLERDUAL_SAMPLERSampler for DualSamplerCustomAdvanced.