Dials

Training-free steering for MiniMax H3, made from prompt pairs.

Write two prompts that differ in one quality, such as "stands perfectly still" and "runs across the scene". Dials turns the difference into a ~14 KB file that works like a strength slider in ComfyUI. Negative strength moves every generation toward the first prompt, positive toward the second.

Demo, 1:57. Every video shot was rendered locally with MiniMax H3 and Pika H3 Flex in ComfyUI, and the narration was voiced by MiniMax H3 too. Captions are burned in.

What a dial is

Prompt pairs in, a slider outNo training and no rendering to make one. About a minute: one text-encoder pass per prompt, averaged into one direction.
Added where H3 reads the promptOne vector, added to every prompt token right after H3's token refiner. Strength is the slider.
Stacks with everythingCombine dials with each other, with LoRAs, and with Pika H3 Flex's 6-step LoRA.

How it started

DaveSnow's Natural_detailV2 dataset is 122 beautiful, perfectly still photos. An H3 LoRA trained on stills costs about 20 % of subject motion. His trick of training only every other block behaved like turning the LoRA down to about 0.7: the same trade at a smaller dose.

Every post-hoc edit we tried (block subsets, factor splits, activation projections, timestep schedules) landed back on that same strength curve. Untangling the weights would take far more time, so the question became: is there anything less tangled to play with? The prompt is. In prompt space, an idea like motion is one direction.

Measured

motion dial on base H3motion vs base
−20.05× (near-frozen, cinemagraph-like)
+2about 2.7× (everything zooms)
with DaveSnow's detail LoRA (12 clips, vs base)subject motiondetail
LoRA alone0.81×1.80×
LoRA + motion dial +11.33×1.22×

At +1 you get more motion and more of the LoRA's look than the base model. +0.5 to +1 is the sane range for everyday use; above about 1.5, side effects appear.

Pika H3 Flex, with de-rope

The dials work unchanged on Pika H3 Flex, a 6-step LoRA for H3. De-rope finds stretches that move too fast for the frame rate, slows them, re-renders and maps the clip back to real time.

Four panels: base H3 at 25 steps, and Pika plus de-rope at dread 0, +0.5 and +1
1280×704, 141 frames, seed 42, one RTX PRO 6000 Max-Qtimemotion (px/frame)sharpness
MiniMax H3 base, 25 steps, no de-rope326 s2.25348
Pika + de-rope, motion +0.5, dread 0393 s2.44477
Pika + de-rope, motion +0.5, dread +0.5370 s2.56473
Pika + de-rope, motion +0.5, dread +1369 s2.58445

Motion: camera-removed optical flow. Sharpness: variance of the Laplacian (higher is crisper). One take each. Individual clips: Hugging Face examples.

Villainy pack

Eight evil flavours, each its own direction: sinister, creepy, cold, unhinged, seductive, corrupted, dread and impish. +1 to +2 is the sweet spot.

Library scene: base, dread, creepy and sinister at +2

Get started

  1. Install the nodes (no extra dependencies):
    cd ComfyUI/custom_nodes
    git clone https://github.com/matlowai/ComfyUI-Dials
  2. Copy the dial files (dials/*.safetensors, from the repo or Hugging Face) into ComfyUI/models/loras/dials/.
  3. Load a workflow: dials_studio_h3.json (motion + evil sliders), dial_maker_h3.json (make your own), or dials_pika_h3_flex*.json (Pika, with and without de-rope).

Needs MiniMax H3 in ComfyUI (Comfy-Org repack). The de-rope workflows also need ComfyUI-MAINodes.