DHan-H3 Sampling Preset
The Step Count Is Load-Bearing, and the Scheduler Even More So
- model
- sampler
- sigmas
Why this node exists
H3 is a flow-matching video model, which means the sampler and scheduler habits you carried over from SDXL are worse than useless here. Aggressive reshaped schedules - Karras, exponential - distort a near-straight flow trajectory instead of correcting a curved one, and H3 is also the kind of model where step count is a property of the weights: a distilled Turbo checkpoint and the full model want wildly different settings, and feeding a Turbo model 20 steps is a good way to spend 20x the time for a worse clip.
The Sampling Preset is the pack's answer to that - one node that packages the sampler, the schedule and the step count, with presets that match the checkpoints people actually run.
What it hands you
Two outputs, and they go to the same place: sampler (SAMPLER) and sigmas (SIGMAS). Both wire into SamplerCustomAdvanced - or the pack's Long Sampler, which is a drop-in for it. The point of the node is that you no longer need a visible KSamplerSelect plus a scheduler node, and the sigmas are built from the model you're actually sampling rather than from a checkpoint that's never had H3's sigma shift applied.
That's why the model input matters. Its tooltip is explicit - it wants the patched H3 model output from the Director. The Director applies MiniMaxH3SigmaShift (shift_video 12, shift_audio 3 by default) and hands you that model; wire anything else in and your schedule is built for a different model configuration than the one being sampled.
The presets
- Standard -
res_multistepwith ComfyUI'sBasicScheduleron thebetaschedule, 20 steps. This is your full-model default. - Turbo 4-Step / 6-Step / 8-Step -
eulerwithBetaSamplingScheduler(alpha 0.79, beta 0.50) at 4, 6 or 8 steps. These line up with the distilled H3 Turbo models in circulation; older builds of this pack resolved Larryvrh'sMiniMaxH3TurboSamplernode dynamically, and the current ones just do Euler plus a beta schedule themselves. Run a Turbo preset on the undistilled model and you'll get a soft, half-formed clip - that's the distillation trade, not a bug. - Custom - everything exposed.
custom_sampler(Euler by default, and the author's own tooltip says the working H3 workflow uses Euler),custom_schedule_mode(beta=BetaSamplingScheduler,basic=BasicSchedulerwith the legacycustom_scheduler),custom_steps, plusbeta_alpha/beta_beta.
Two controls on the Custom path are worth knowing before you touch them. denoise defaults to 1.0 and, in beta mode, is applied by splitting the sigma list, so dropping it toward 0.5 gives you a genuinely partial-denoise pass - handy for retake-style work, weird as a general quality dial. And extend_steps (default 3) adds intermediate sigmas via ComfyUI's ExtendIntermediateSigmas, stretching from extend_start_sigma 0.8 down to extend_end_sigma 0, spaced linear. Set extend_steps to 0 and the whole thing is off. The presets ignore all of the Custom fields entirely, so nothing you type in them changes a Standard or Turbo run.
Install and wiring
cd ComfyUI/custom_nodes
git clone https://github.com/DHan315/Comfyui-DHan-Minimax-H3-Director
# restart ComfyUI
It's part of the same pack as the Director - search "Comfyui-DHan-Minimax H3 Director" in ComfyUI Manager if you'd rather not clone by hand. No model files come with it, and there's no requirements.txt; the pack's Python modules import av and torchaudio at load, so those need to exist in ComfyUI's environment.
A minimal H3 graph looks like: Director model → Sampling Preset model; Sampling Preset sampler and sigmas → SamplerCustomAdvanced; Director latent → SamplerCustomAdvanced latent_image; Director positive → your Guider, and Guider guider → SamplerCustomAdvanced guider. Everything is external sampling - the Director conditions, this node configures, and the sampler runs.
Common issues
If the preview or the sampler seems to ignore a widget you changed, check whether you're on a preset: only Custom reads the manual fields. If Turbo presets produce mush, you're running them against the undistilled checkpoint. And if you're wondering why a sigma-related change had no effect, look at which model the node is reading - sigmas built from a raw loader instead of the Director's shifted model are subtly wrong in a way that shows up as a worse-looking clip rather than an error.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Patched H3 model output from Comfyui-DHan-Minimax H3 Director. | |
| preset | COMBO | Standard | 5 options: Standard, Turbo 4-Step, Turbo 6-Step, Turbo 8-Step, Custom |
| custom_sampler | COMBO | euler | Custom only. Working H3 workflow uses Euler. |
| custom_scheduler | COMBO | beta | Legacy Custom scheduler. Used when Schedule Mode = basic. |
| custom_steps | INT | 41–1000 | Base scheduler steps before optional sigma extension. |
| denoise | FLOAT | 1.000–1 | Sampling denoise strength. 1.0 uses the full sigma schedule. |
| custom_schedule_mode | COMBO | beta | Custom only. 'beta' uses BetaSamplingScheduler; 'basic' uses BasicScheduler. |
| beta_alpha | FLOAT | 0.790–50 | Custom only. BetaSamplingScheduler alpha. |
| beta_beta | FLOAT | 0.500–50 | Custom only. BetaSamplingScheduler beta. |
| extend_steps | INT | 30–100 | Custom only. 0 disables ExtendIntermediateSigmas. Working workflow uses 3. |
| extend_start_sigma | FLOAT | 0.80-1–20000 | Custom only. Working workflow extends from sigma 0.8. |
| extend_end_sigma | FLOAT | 0.000–20000 | Custom only. Working workflow extends down to sigma 0. |
| extend_spacing | COMBO | linear | Custom only. Working workflow uses linear. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sampler | SAMPLER | — |
| sigmas | SIGMAS | — |