Nodes/ComfyUI-FL-MiniMaxH3/FL MiniMax H3 Beat Pixel Upscale KSampler
ComfyUI Node

FL MiniMax H3 Beat Pixel Upscale KSampler

The VAE round trip that keeps the audio

By filliptm·Created about a month ago·Updated about 13 hours ago· 17
FL MiniMax H3 Beat Pixel Upscale KSampler
  • model
  • shot_plan
  • latent
  • vae
  • latent
target_long_side896
upscale_methodbicubic
seed0
seed_modeincrement
steps80
start_at_step60
end_at_step80
cfg1.0
sampler_name
scheduler
live_previewfalse

Latent upscaling is the fast path; this is the quality path. FL MiniMax H3 Beat Pixel Upscale KSampler takes each render from your Beat KSampler and runs it through a full pixel round trip - decode the video latent through the H3 video VAE, resize the pixels, re-encode into H3 latent space, rebuild the prompt conditioning at the new dimensions, then sample only the portion of the refinement schedule you choose. The output stays a native nested H3 latent, so audio and shot metadata survive the whole trip and the result still feeds the Shot Assembler.

This is the same decode→resize→re-encode→refine pattern the manual workflow does by hand with Latent Upscale + Apply Timeline, except it's automated per planned render and it works in pixel space instead of latent space. Pixel round trips cost more, but they preserve the detail that latent interpolation smears.

The refinement window

The step controls are the part people misread. steps is the total schedule for the refinement pass (default 80), and start_at_step/end_at_step (defaults 60 → 80) mark the explicit window you actually sample. So by default you're running 20 steps of a theoretical 80-step schedule - a low-denoise refinement, not a full regen. That's the intent: the base render already exists; you're restoring detail after the VAE round trip, not starting over. If you want a heavier touch, widen the window; if the base was already good and you only want to fix the resize softness, narrow it. The node also converts legacy steps+denoise values from pre-1.2.0 Fill Nodes workflows into this step window automatically when an old workflow loads, so migration is mostly painless.

Inputs that matter

  • shot_plan - the exact plan you fed the first Beat KSampler, including the Shot Motion Context output if you used it. It must match, because the node uses it to rebuild each render's conditioning at the new size.
  • latent - the editable latent list from Beat KSampler.
  • vae - the H3 video VAE; this is what makes it a pixel path.
  • target_long_side - pixel size for the longest side (default 896). Both dimensions stay aligned to 32 pixels, and it must be divisible by 32.
  • upscale_method - pixel interpolation between decode and re-encode: bicubic, bilinear, nearest-exact, or lanczos. Bicubic is the sane default.
  • seed / seed_mode - base refinement seed, same increment/fixed logic as the Beat KSampler.
  • live_preview (optional) - decode a lightweight silent MP4 after each refined render. Off by default; enabling it adds one extra VAE decode + preview encode per completed render.

Output and gotchas

The latent output is one refined native H3 latent per render, with timing metadata and the original audio tensor preserved - so it can keep flowing through metadata-preserving latent nodes or straight into the Shot Assembler. The embedded preview player works the same as on the Beat KSampler: live preview while a chunk samples, then the completed MP4 if live is on.

Two practical notes. First, because the Beat KSampler's list output isn't streamed, the upscale sampler only starts after the entire base latent list is done - but once it does, its completed renders appear incrementally. Second, each planned render is a full decode/encode/sample cycle, so this is where a long shot plan gets expensive; don't stack it on a 10-shot plan at high target_long_side unless your VRAM budget actually allows it. Install is the pack standard: ComfyUI Manager → FL MiniMax H3, or clone https://github.com/filliptm/ComfyUI-FL-MiniMaxH3.git into custom_nodes and restart. No extra Python dependencies, no bundled model files.

CategoryFL/MiniMax H3/Sampling

Inputs (15)

NameTypeDefaultDescription
modelMODELMiniMax H3 model used for the refinement pass.
shot_planFL_H3_SHOT_PLANThe exact shot plan connected to the first Beat KSampler, including the output of Shot Motion Context when it is used.
latentLATENTEditable latent list from FL MiniMax H3 Beat KSampler.
vaeVAEMiniMax H3 video VAE used for the pixel round trip.
target_long_sideINT89632–16384Target pixel size for the longest side. The other side stays proportional and both dimensions remain aligned to 32 pixels.
upscale_methodCOMBObicubicPixel interpolation used between H3 VAE decode and re-encode.
seedINT00–18446744073709550000Base refinement seed for the first planned render.
seed_modeCOMBOincrementincrement adds the render index to the base refinement seed.
stepsINT801–10000Total steps in the H3 refinement schedule.
start_at_stepINT600–10000Start the refinement pass at this step in the total schedule.
end_at_stepINT800–10000End the refinement pass at this step in the total schedule.
cfgFLOAT1.00–100Multiplier for the planned visual reference strength. Leave at 1 for the planner's direct 0-1 blend; higher values can over-guide references.
sampler_nameCOMBOSampler used to restore detail after H3 VAE re-encoding.
schedulerCOMBOScheduler used for the refinement pass.
live_previewoptBOOLEANfalseDecode a lightweight silent preview after each refined render.

Outputs (1)

NameTypeDescription
latentLATENTRefined native H3 latent. Render timing metadata and the original audio latent are preserved.