Nodes/ComfyUI-SuperNodes/🐧 DualSamplerDPMPP_SDE
ComfyUI Node

🐧 DualSamplerDPMPP_SDE

Two model evals per step, two noise knobs, one DiT call — the H3 dual sampler

By sonnybox·Created 11 months ago·Updated a day ago· 11
🐧 DualSamplerDPMPP_SDE
    • DUAL_SAMPLER
    eta_video1.00
    eta_audio1.00
    s_noise_video1.00
    s_noise_audio1.00
    noise_device

    If you found this node, you're almost certainly building a MiniMax H3 workflow - the open-weight model that generates video and native stereo audio from one latent. That "one latent" is the catch. H3 packs picture and sound into a single tensor, so a stock sampler has to treat them with the same noise settings. This node exists to break that coupling: it runs DPM-Solver++ stochastic on the video stream and the audio stream separately, with its own eta and s_noise for each, while still stepping both through a single model forward pass. The description is honest about the price: two model evaluations per step.

    The name does overpromise a little. This node doesn't sample anything by itself - it builds a DUAL_SAMPLER config and hands it to DualSamplerCustomAdvanced (same pack), the node that actually takes the packed latent, the video sigmas, the audio sigmas, the noise, and the guider. Think of it as the sampler-selection dropdown on a diet.

    How it works

    DPM-Solver++ SDE takes each step in two halves: a solve to a midpoint, then another solve from there. That's where the two model evals come from. On top of the solve, each substep re-injects noise - that's what eta (how much of the step is taken stochastically; 0 makes it fully deterministic) and s_noise (scales the injected noise) control. This pack gives each stream its own copies of both knobs, and the driver pairs the two streams' requests into one DiT call, so the audio can run a completely different sigma schedule than the video without extra forward passes.

    The inputs that matter

    • eta_video / eta_audio - how much of each stream's step is stochastic. 0 turns that stream into a plain deterministic solve.
    • s_noise_video / s_noise_audio - scales the noise added to each stream.
    • noise_device - where each stream's Brownian path is generated. cpu keeps a run reproducible across GPUs; gpu builds it on the accelerator instead, which is faster but ties your results to your hardware.

    That's the whole interface. Output is a single DUAL_SAMPLER wired into DualSamplerCustomAdvanced. It's its own socket type, so you can't accidentally plug a stock SAMPLER in - the error would be yours to find anyway.

    Install

    ComfyUI Manager → search "ComfyUI-SuperNodes", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sonnybox/ComfyUI-SuperNodes
    

    then restart ComfyUI. The only real dependency is matplotlib. No model downloads, nothing to babysit. The pack is by "SuperCC", and the sampling folder makes its focus obvious: DualSamplerEulerAncestral is the cheaper twin, and the scheduling section ships SigmaAncestry for exactly the eta tuning you'll now be doing in stereo.

    Where people get burned

    The node refuses to run rather than silently corrupting, and the errors are unusually good at telling you why:

    • "The dual sampler only supports rectified flow (CONST) models" - H3 is a flow model; you're on the wrong checkpoint if you see this.
    • The timestep-multiplier error means the guider's model isn't patched correctly. Use ModelSamplingMiniMaxH3 or ModelSamplingSD3 on the guider, and keep ModelSamplingAuraFlow off that branch (it belongs on a separate one feeding BasicScheduler).
    • Both schedules must have the same number of steps, and you can't start one stream at sigma 1.0 while the other sits below it - the model's mapping fixes 1.0. Use 0.9999 for the first sigma of whichever stream is starting high.
    • An all-zero schedule freezes that stream, meaning "leave it alone, it's already x0." Freeze both and it raises on principle.

    If the audio sounds wrong on a first pass, the first lever to pull is eta_audio → 0. Deterministic audio with stochastic video is a perfectly reasonable place to start, and it isolates which stream is actually the problem.

    CategorySuperNodes/Sampling

    Inputs (5)

    NameTypeDefaultDescription
    eta_videoFLOAT1.000–100How much of the video stream's step is taken stochastically. 0 makes the step deterministic.
    eta_audioFLOAT1.000–100How much of the audio stream's step is taken stochastically. 0 makes the step deterministic.
    s_noise_videoFLOAT1.000–100Scales the noise added to the video stream.
    s_noise_audioFLOAT1.000–100Scales the noise added to the audio stream.
    noise_deviceCOMBOWhere each stream's Brownian path is generated. cpu keeps a run reproducible across GPUs.

    Outputs (1)

    NameTypeDescription
    DUAL_SAMPLERDUAL_SAMPLERSampler for DualSamplerCustomAdvanced.