Nodes/SDXL Auto Prompter/APNext H3 De-Rope + Save Clip (Motion Lab by matlowai)
ComfyUI Node

APNext H3 De-Rope + Save Clip (Motion Lab by matlowai)

The fix for H3's fast-motion smear, fused into one node

By dagthomas·Created 3 years ago·Updated 2 days ago· 289
APNext H3 De-Rope + Save Clip (Motion Lab by matlowai)
  • samples
  • guider
  • model
  • vae
  • audio
  • audio_vae
  • file_path
  • report
filename_prefixvideo/H3
fps24
format
seed0
steps14
inject0.50
schedulerbeta
sampler_nameer_sde
q0.75
d_max4
bridge8
enabledtrue
audio_followfollow the original performance (0.5)

APNext H3 De-Rope + Save Clip is where this pack stops being cute and gets genuinely clever. It fuses matlowai's "Motion Lab" de-rope pass into a single node that fixes H3's worst visual tell - the smeared, stringy interpolation you get when a clip's motion is too fast for the model's temporal upsampling - and then writes the result to disk. If you've ever watched an H3 render of someone turning their head quickly and thought "why does the back of their head look like rope," this is the answer to that specific grief.

The technique (all credit to matlowai's ComfyUI-MAINodes) is: find where motion is too fast, hold those frames, regenerate the clip v2v at partial denoise with the song stretched onto the held clock so lips stay on the lyric, then drop the held frames to recover exact real time. What this node adds is that the whole pipeline - H3JerkOracle → decode → H3TimeSmear → VAE encode → H3AudioSmearH3V2VInitH3InjectSchedule → partial-denoise sampling → decode → H3ExactRecover → save - runs per clip, freeing each clip's frames before the next. As ten separate nodes, every stage would cache every clip's frames and OOM a long song. As one node, an 18-scene song needs the RAM of a single clip.

Budget the time: a de-roped clip renders at roughly 2.4–3x its frame count. That's the price of the fix.

The inputs that matter

  • samples - the pass-1 sampler output (H3 AV latent). With a scene list wired in, each clip is de-roped and saved before the next is touched.
  • guider - the same BasicGuider the pass-1 sampler used (same model, same conditioning). Reuse the identical node.
  • model - the patched H3 model, for the injection schedule. vae - the H3 video VAE.
  • steps - default 14. Match your main sampler's step count; inject decides how many actually run. inject 0.5 = faithful (metric best), 0.7 = balanced, 0.8 = loose.
  • q, d_max, bridge - the de-roping knobs: q (default 0.75) is the jerk quantile that counts as "too fast"; d_max (4) is the peak hold on the hottest frames; bridge (8) closes valleys inside one burst. Tune q down toward 0.7 to catch more motion, up toward 0.85 for tighter, cheaper spans.
  • enabled - off skips de-roping and saves pass-1 as-is. Handy for A/B.
  • audio, audio_vae, audio_follow - the clip's song slice, the H3 audio VAE, and how hard pass 2 follows the stretched song. The default, "follow the original performance (0.5)", keeps dialogue and lip-sync through held spans; "invent freely" is the original Motion Lab behaviour (no audio seeding).

Outputs: file_path and a report string describing what the oracle decided.

Installing it - read this one

Yes, install the pack (comfyui_dagthomas, via Manager or git clone + pip install -r requirements.txt). But this node also requires ComfyUI-MAINodes (https://github.com/matlowai/ComfyUI-MAINodes) - it calls that pack's registered nodes rather than reimplementing them, so without it you get a runtime error: "node H3JerkOracle is not installed." The README's dependency list won't tell you this; the node's error message will. Install both, restart, then pull the H3 model files from the h3_music_video_masked_audio_derope.json example's download links.

Issues you'll actually hit

  • Missing MAINodes - above.
  • Audio wired but audio_vae empty: pass 2 invents its own audio, and held spans can come back with rushed lips. The console warns you. Wire the H3 audio VAE in.
  • sampler_name defaults to er_sde; if it's not in your build the list still includes the standard set. Match the main sampler for consistency.

If de-roping sounds like magic, it's not - it's a second, targeted render pass with the motion budget sorted out. That's why it costs 2.4–3x. For songs with a lot of movement, it's the difference between a music video and a slideshow with audio.

Categorycomfyui_dagthomas/H3

Inputs (19)

NameTypeDefaultDescription
samplesLATENTThe pass-1 sampler output (H3 AV latent). With a scene list wired in, each clip is de-roped and saved before the next one is touched.
guiderGUIDERThe SAME BasicGuider the pass-1 sampler used (same model, same conditioning).
modelMODELThe patched H3 model (for the injection schedule).
vaeVAEThe MiniMax H3 video VAE.
filename_prefixSTRINGvideo/H3Wire a writer's `project_name` output so every run gets its own folder.
fpsFLOAT241–120
formatCOMBOmp4/mkv use H.264, webm uses AV1.
seedINT00–18446744073709550000Noise seed for the de-rope regeneration pass.
stepsINT144–100Match the MAIN sampler's step count; `inject` decides how many actually run.
injectFLOAT0.500.05–1How much of the denoise runs on the smeared init. 0.5 = faithful (metric best), 0.7 = balanced, 0.8 = loose.
schedulerCOMBObeta6 options: beta, simple, normal, sgm_uniform, karras, exponential
sampler_nameCOMBOer_sde44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
qFLOAT0.750.5–0.99Jerk quantile that counts as 'too fast'. Raise toward 0.85 for tighter spans (cheaper), lower toward 0.7 to catch more.
d_maxINT42–8Peak hold count on the hottest frames; 4 is the measured sweet spot.
bridgeINT80–20Close hold-map valleys inside one burst (prevents mid-burst hiccups). 0 = off.
enabledBOOLEANtrueOff = skip the de-rope entirely and save the pass-1 clip as-is.
audiooptAUDIOThis clip's slice of the song (writer `audio_segments`). Used twice: stretched onto the held clock to seed pass 2's audio rows (keeps lip-sync through held spans), and muxed into the saved file.
audio_vaeoptVAEThe MiniMax H3 audio VAE - needed to seed pass 2's audio rows.
audio_followoptCOMBOfollow the original performance (0.5)How hard pass 2 follows the stretched song. 'follow the original performance' keeps dialogue/lip-sync through held spans; 'invent freely' skips audio seeding (the original Motion Lab behaviour).

Outputs (2)

NameTypeDescription
file_pathSTRING
reportSTRING