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
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 H3 | motion vs base |
|---|---|
| −2 | 0.05× (near-frozen, cinemagraph-like) |
| +2 | about 2.7× (everything zooms) |
| with DaveSnow's detail LoRA (12 clips, vs base) | subject motion | detail |
|---|---|---|
| LoRA alone | 0.81× | 1.80× |
| LoRA + motion dial +1 | 1.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.

| 1280×704, 141 frames, seed 42, one RTX PRO 6000 Max-Q | time | motion (px/frame) | sharpness |
|---|---|---|---|
| MiniMax H3 base, 25 steps, no de-rope | 326 s | 2.25 | 348 |
| Pika + de-rope, motion +0.5, dread 0 | 393 s | 2.44 | 477 |
| Pika + de-rope, motion +0.5, dread +0.5 | 370 s | 2.56 | 473 |
| Pika + de-rope, motion +0.5, dread +1 | 369 s | 2.58 | 445 |
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.

- Sinister tends to crush speech audio (dials steer H3's sound too). Keep it low for clear dialogue.
- Unhinged really is unhinged: it leans aggressive even at +2.
New: the Dial Rack, time curves and a de-rope switch
Dials now live in a Dial Rack (in ComfyUI-MAINodes): any number of dials on one model, with a map, an interaction matrix and a wheel that show what they do to each other. The rack is order-independent, and it also works on MOSS-Image (Krea 2 with limits).


Change a dial over the clip, inside one generation
Draw a strength curve with the mouse: click to add a point, drag to move it, double-click to delete, snap to seconds or to the beat. The dial switches on and off during a single generation, with no second pass. Colour and style dials switch within a fraction of a second (0.1 to 0.2 s in our tests); lighting dials ramp over about a second and a half.

A charge that builds, de-roped
Time curves run through the de-rope pass too. A hold-map link maps the curve through the stretched stage-2 clip, so the ramp lands at the same real moment (without it, it landed 0.3 to 0.5 s early). In this scene the dial ramps up with the charge and peaks with the prompt's second marker. A switch turns the whole de-rope stage off: off took 75 s and gave pass 1 unchanged; on took 330 s.
All four de-roped, 1280×704, seed 42, the same prompt. Top left: no dial. Top right and bottom left: a space-warp dial ramping to +2.5 and +4. Bottom right: a psychedelic dial at +2.5. Pika H3 Flex, detail LoRA and motion +0.5 on every clip.
- Edit a dial: drag a probe bar to add or remove a component, then export a new dial that records its parent.
- Per-block control: a 50-cell strip sets how much of the dial each transformer block gets. In our tests the first half of the model carries the whole effect.
- Keep audio clean: an "audio: protect" option leaves the soundtrack undialled (speech errors 0.29 to 0.00 in 3 of 4 cases).
- Make a dial from pictures: two groups of pictures, any number and any size; the framing decides what it learns.
Alpha. Strengths are starting points measured on Pika H3 Flex's 6-step schedule, mostly one seed each. A dial can leak into other qualities (a "psychedelic" dial also brings rave outfits at +2.5). The Dials guide, lessons and roadmap list what we know.
Get started
- Install the nodes (no extra dependencies):
cd ComfyUI/custom_nodes git clone https://github.com/matlowai/ComfyUI-MAINodes
- Copy dial files from Hugging Face into
ComfyUI/models/loras/dials/. - Load
examples/dials/dials_simple_pika_derope.json, pick your model files, write a prompt, drag a slider and queue. De-rope is one switch on the same node.
Needs MiniMax H3 in ComfyUI (Comfy-Org repack). The guide walks through strengths, making your
own dials from prompts or pictures, time curves and de-rope. Want only a couple of sliders? The original
ComfyUI-Dials (Load / Apply / Make Dial, and its
dials_studio_h3.json and dials_pika_h3_flex*.json workflows) still works and reads the same dial files.
