Nodes/ComfyCollectorNodes/MiniMax H3 Ref Tinker (CCN)
ComfyUI Node

MiniMax H3 Ref Tinker (CCN)

MiniMax H3 Ref Tinker (CCN)

By valkymaera·Created 4 months ago·Updated 10 days ago· 1
MiniMax H3 Ref Tinker (CCN)
  • model
  • MODEL
enabledtrue
visual_cond_noise_aug0.999
audio_cond_noise_aug1.000
ref_temporal_gap0.0
ref_spatial_shift_h0.00
ref_spatial_shift_w0.00

MiniMax H3 Ref Tinker (CCN) is an experimental scalpel for one of the weirdest behaviors in the new MiniMax H3 video model: reference images that don't behave like references. When you give H3 a reference image via ref2va, the model treats it more like a start frame than an image to draw inspiration from - the identity lands, but so does the verbatim copy. This node exposes the internal levers that control how strongly the model copies, how far the reference sits in time from your video, and where it's positioned in the model's spatial coordinate space. It sits in the model/patch/minimax category next to the official H3 nodes, and it's the kind of thing only someone who actually ran the model and got annoyed would build.

First, the honest framing: this is a tinker node for an architecture that's days old in the wild, and the license on H3 itself is the thing to check before you even get here - the MiniMax H3 Community License excludes users in the US, EU, UK, and South Korea from running the local weights at all. If you're in those territories, this node is academic until that changes. If you're licensed, here's the map.

It works by wrapping the diffusion-model call (a patcher_extension wrapper) and rewriting a copy of the model's internal "minimax payload" on every step. It doesn't touch the model's weights - it patches the call, which means it composes cleanly with other model patches (sigma shift, attention mods, sampler packs) and can be toggled off with the enabled switch for a pure passthrough.

The levers, which are exactly the four you'd tune:

  • visual_cond_noise_aug (default 0.999, stock) - strength of the visual reference rows. Lower this and the node mixes fixed-seed noise into the reference rows each step and lowers their declared timestep, which weakens verbatim copying. The useful band is roughly 0.90–1.00 - below that you're drifting into "the model stops listening" territory. This is the first knob to try if H3 is copying your reference image pixel-for-pixel instead of interpreting it.
  • audio_cond_noise_aug (default 1.0) - the same lever for reference-audio rows. Leave at 1.0 unless audio copying is your problem.
  • ref_temporal_gap (default 0) - extra RoPE-time distance between the reference block and the target audio/video streams, in position ticks (1 tick = 1/40 s on the shared AV clock; stock ref→video gap is 1.0 tick). Setting it to -1.0 co-locates the last image reference with frame 0 - a "soft keyframe-anchor" mode.
  • ref_spatial_shift_h / ref_spatial_shift_w (default 0) - offsets to the reference's RoPE h/w coordinates, which decorrelate ref↔target pixel alignment without editing the image. If you want the reference to inform but not pin the exact layout, small shifts here are the cheap trick.

Output: a single MODEL - wire it in place of your plain H3 model, and treat the values as a from-scratch experimentation surface. There are no presets because nobody has made good presets yet; the author calls it experimental, and it genuinely is.

Install

WIP-adjacent pack member:

cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes

Restart ComfyUI; find it under model/patch/minimax. It imports comfy.patcher_extension and the H3 model internals - stock ComfyUI, no new pip deps, no downloads (you bring the H3 weights, license permitting). MIT.

Common issues

The realistic failure mode is "nothing happens," which usually means the node isn't wired where the ref2va path actually runs - it only does anything on calls carrying a minimax payload, so it must sit on the model that's actually sampling video with references, not a staging clone. Check enabled is on, and remember the payload is copied per-call (the wrapper never mutates the shared payload, so chaining won't corrupt a run). If you push visual_cond_noise_aug low and the video falls apart, that's the expected cliff - the band is narrow, so move in 0.01 steps and read the result, not the value.

Categorymodel/patch/minimax

Inputs (7)

NameTypeDefaultDescription
modelMODEL
enabledBOOLEANtrueManual off switch - passes the model through unpatched.
visual_cond_noise_augFLOAT0.9990–1Strength of visual condition rows (reference images and fl2va keyframes). 0.999 = stock (rows re-injected ~clean every step). Lower mixes fixed-seed noise into the rows (aug*latent + (1-aug)*noise) and lowers their declared timestep, weakening verbatim copying before identity. Useful band ~0.90-1.00.
audio_cond_noise_augFLOAT1.0000–1Same for reference-audio rows. 1.0 = stock (fully clean).
ref_temporal_gapFLOAT0.0-1–2000Extra RoPE-time distance between reference blocks and the target audio/video streams, in position ticks (1 tick = 1/40 s on the shared AV clock). Stock ref->video gap is 1.0 tick; video frame hops are 1.67/6.67. -1.0 co-locates the last image ref with frame 0 (soft keyframe-anchor mode). 0 = stock.
ref_spatial_shift_hFLOAT0.00-64–64Offset added to image-reference RoPE h coordinates (frame grids are area-normalized, roughly spanning 0-32). Decorrelates ref<->target pixel alignment without editing the image. 0 = stock.
ref_spatial_shift_wFLOAT0.00-64–64Offset added to image-reference RoPE w coordinates. 0 = stock.

Outputs (1)

NameTypeDescription
MODELMODEL