Nodes/PromptMasterLD/🎞 H3 Refs - LD
ComfyUI Node

🎞 H3 Refs - LD

Turn the panel's reference list into sockets you can actually wire

By Lora-DaddyΒ·Created 6 days agoΒ·Updated 2 days agoΒ· 5
🎞 H3 Refs - LD
  • pack
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • video_frames_1
  • video_frames_2
  • video_frames_3
  • video_audio_1
  • video_audio_2
  • video_audio_3
  • audio_1
  • audio_2
  • audio_3
  • report
β—„video_frames158β–Ί
β—„manifest_jsonβ–Ί
β—„pathsβ–Ί

When you attach reference images, clips and audio in the H3 Studio panel, they don't magically reach the sampler - something has to translate "the files I picked" into actual tensors sitting on the canvas. H3 Refs - LD is that translator. It explodes the panel's reference manifest into one output socket per slot, so you can wire a MiniMax H3 reference node up directly instead of re-picking every file by hand on the graph. It lives under LD / PromptMaster / Refs & look, and it's the reason a reference-driven shot script stays in sync with what the panel said you were using.

Why the sockets are shaped the way they are

Two decisions here matter, because both are traps if you don't know them.

First, no video socket. H3's ComfyUI nodes take a frame batch plus a separate audio dict - there's no opaque "video file" object in the middle. So one video reference in the panel becomes two pins per clip: video_frames_N (an IMAGE batch of frames) and video_audio_N (that same clip's AUDIO). You wire video_frames_1 β†’ ref_video_0 and video_audio_1 β†’ ref_video_audio_0 on an H3 node.

Second, video tracks aren't audio_N. The audio_1..3 outputs are standalone audio references only. A video's sound lives on its video_audio_N pin. The report output says this out loud when you've got video but no audio refs, precisely because people wire it wrong.

How the frames are read

The video_frames input (default 158, max 360) is the one you'll actually set. Frames are sampled at a true 24 fps from the source's own timeline - 158 frames means 6.6 seconds of real clip. When your clip is longer than the cap, it truncates and keeps the end, because the pack's layout generates onward from where the reference stops. Frames are resized as they're read (the author has the scars: buffering native 4K refs flattened a machine once), and clamped to what H3 actually keeps. Missing refs don't error the graph - empty image slots emit a small black frame and empty audio slots a short silence, because a graph can't hold an empty IMAGE tensor. Read the report output for what loaded, what was missing, and why.

The pack input is the normal route (the Studio panel's manifest, typed CPLD_PACK); manifest_json and paths exist as escape hatches when you're not running a full pack.

A default worth understanding

The old default was 16 frames. At 24 fps that's 0.67 seconds of "motion" - and H3 then snaps the count down to the nearest 17k+5, so every video reference silently arrived as about five frames. A fifth of a second of clip. That's why the default is now 158: the largest count that fits inside the pack's default shot while still reading as real motion. If a reference looks frozen or truncated, this input and the report are the first two places to look.

Install and dependencies

Same install as the whole pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Lora-Daddy/PromptMasterLD
# restart ComfyUI

This is the one node in the set that genuinely needs OpenCV - it decodes video frames and makes thumbnails with it. The pack's requirements.txt lists opencv-python>=4.8.0, which is the one hard dependency ComfyUI doesn't already ship, so if video refs fail with "video frames need OpenCV and torch", that's what's missing. Audio decode runs through PyAV, which ComfyUI provides. One quick sanity tip: only attach a video if you meant a video - with nothing attached, every socket is a placeholder and the report will say exactly that rather than failing mysteriously.

CategoryLD/PromptMaster/Refs & look

Inputs (4)

NameTypeDefaultDescription
video_framesINT1580–360Max frames per video ref, read at a true 24fps (158 = 6.6s). 0 loads every frame. H3 snaps the count down to 17k+5 and caps it at the generation length.
packoptCPLD_PACKβ€”
manifest_jsonoptSTRINGβ€”
pathsoptSTRINGβ€”

Outputs (19)

NameTypeDescription
image_1IMAGEβ€”
image_2IMAGEβ€”
image_3IMAGEβ€”
image_4IMAGEβ€”
image_5IMAGEβ€”
image_6IMAGEβ€”
image_7IMAGEβ€”
image_8IMAGEβ€”
image_9IMAGEβ€”
video_frames_1IMAGEβ€”
video_frames_2IMAGEβ€”
video_frames_3IMAGEβ€”
video_audio_1AUDIOβ€”
video_audio_2AUDIOβ€”
video_audio_3AUDIOβ€”
audio_1AUDIOβ€”
audio_2AUDIOβ€”
audio_3AUDIOβ€”
reportSTRINGβ€”