H3 Studio • Advanced Sampling
Stop guessing H3's sampler — this node puts the sigma recipe on the table
- model
- shifted_model
- sampler
- sigmas
- sampling_info
Most ComfyUI sampler nodes are a habit you can ignore: pick euler with karras and move on. MiniMax H3 is not that world. It's an audio-video model being asked to paint stills, it samples through a flow-based ModelSamplingAV path, and it carries separate video and audio sigma shifts inside the same latent. Get the schedule wrong and you get noise or mush, with zero idea which knob did it. H3StudioSamplingSettings (H3 Studio • Advanced Sampling) is the pack pulling that machinery out from behind the Director and putting it on the table where you can actually see and tune it.
What it actually is
This is the "advanced" variant of the pack's simpler H3StudioSamplingPreset. The preset hands you a few cooked recipes; this node gives you every lever: sampler, scheduler, steps, denoise, and the two flow-sigma shifts. You'd reach for it when a recipe isn't behaving, when you want to reproduce someone's exact H3 settings, or when you're comparing approaches - the sampling_info string alone tells you exactly what got resolved, which is half the battle when H3 doesn't come out right.
How it works
The node does three jobs in one call. First it clones your model and patches its model_sampling object with the flow/AV sampling semantics H3 needs - even for image-only output, because the packed latent still carries an audio stream while denoising, and H3's sampler reads audio_scale. Your shift_video and shift_audio values land in there as the two sigma shifts. Then it builds the sampler object, then it computes the sigma schedule for your chosen scheduler and step count. Denoise follows ComfyUI's BasicScheduler semantics for every scheduler: below 1.0 it builds a longer schedule and keeps only the tail; 0 returns empty sigmas, which is the node's way of saying "no sampling, don't."
One genuinely nice detail: beta_custom used to be a weird special case that didn't honor denoise like the rest. That's been fixed - it now behaves identically, with beta_alpha and beta_beta exposed as plain knobs.
The inputs that matter
The node takes nine inputs, and a beginner only really touches four of them:
sampler_name- defaults tores_multistep, which the tooltip correctly calls the H3 baseline. 44 choices live here, but you rarely need to leave the default unless you're reproducing an ER-SDE or SA-Solver style recipe.scheduler- defaults tosimple. The full ComfyUI list plusbeta_custom(10 options). This is where schedule quality actually lives for H3.steps- default 20, executed exactly. Fewer steps is not "free speed" on H3 the way it is on a distilled image model.denoise- default 1.0. Below 1 uses the tail of a longer schedule; 0 is a no-op.shift_video/shift_audio- defaults 12 and 3. Leave them until you know what you're doing; they're the flow-sigma shifts and they do real work on H3.
Wiring the outputs
It returns four things, and they're designed to feed SamplerCustomAdvanced directly: shifted_model → its model input, sampler → sampler, sigmas → sigmas. The fourth output, sampling_info, is a plain string that logs the resolved sampler, scheduler, step count, both shifts and the AV sampling backend - pin it to a text preview node and you've got a perfect record of what actually ran.
Install
Part of the H3 Studio pack, so it comes along with it - ComfyUI Manager (search ComfyUI-MiniMax-H3-Studio) or:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/thaakeno/ComfyUI-MiniMax-H3-Studio.git
cd ComfyUI-MiniMax-H3-Studio
python -m pip install -r requirements.txt
Restart ComfyUI and hard-refresh the frontend. Core H3 models are not auto-downloaded - you'll need a diffusion model, the 32B conditioning encoder and the video VAE installed first.
Where people get burned
Don't route this into a stock KSampler - it wants SamplerCustomAdvanced for the model/sampler/sigmas triplet, and the packed AV latent needs that path. Also, remember H3's sampler reads the audio shift even on stills, so don't zero shift_audio to be clever. And if a shared workflow references beta_custom, the pack must be up to date - the denoise fix is recent, so stale installs still show the old behavior. The pack is alpha and the classic ComfyUI frontend only for now; Nodes 2.0 support isn't there yet.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Loaded MiniMax H3 diffusion model. | |
| sampler_name | COMBO | res_multistep | ComfyUI sampler implementation. res_multistep is the H3 baseline. |
| scheduler | COMBO | simple | Sigma schedule. beta_custom exposes alpha/beta below and now honors denoise identically to other schedulers. |
| steps | INT | 201–10000 | Number of sampling steps actually executed. |
| denoise | FLOAT | 1.000–1 | ComfyUI-style denoise strength. Below 1 builds a longer schedule and keeps only its final steps; 0 returns empty sigmas. This affects both beta_custom and standard schedulers. |
| shift_video | FLOAT | 12.000.01–100 | Flow sigma shift for H3 video/image latent sampling. |
| shift_audio | FLOAT | 3.000.01–100 | H3 audio sigma shift metadata. Image Studio does not decode the audio VAE. |
| beta_alpha | FLOAT | 0.600.01–50 | Alpha parameter used only when scheduler is beta_custom. |
| beta_beta | FLOAT | 0.600.01–50 | Beta parameter used only when scheduler is beta_custom. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| shifted_model | MODEL | Cloned model patched with H3 video/audio flow-sampling shifts. |
| sampler | SAMPLER | Configured ComfyUI sampler object for SamplerCustomAdvanced. |
| sigmas | SIGMAS | Sigma schedule after applying steps, scheduler and denoise semantics. |
| sampling_info | STRING | Resolved sampler, scheduler, step count, shifts and AV sampling backend. |