Wan FreeLong Enforcer
The Enforcer's locked motion skeleton
- model
- model
WanFreeLong fixes the everyday Wan 2.2 drift - the ping-pong, the subject swap, the ignored motion. WanFreeLongEnforcer is what you try when the standard FreeLong still lets complex motion slip. It's the stricter sibling in shootthesound's comfyUI-LongLook pack: same spectral-blending family, same MODEL-in / MODEL-out patcher shape, but with a deliberately heavier hand on the motion side.
The difference is a three-tier frequency scheme instead of FreeLong's two. Where standard FreeLong blends global (motion) and local (detail) streams across the whole spectrum, the Enforcer splits it further: the ultra-low frequencies get locked 100% to the global stream - that's the "motion skeleton," and local attention is never allowed to override it. The mid-range frequencies get the normal blended treatment, and the highs stay local for detail. On top of that, the first N transformer blocks skip local processing entirely and run global-only, so the model commits to a motion trajectory early in the network instead of waffling. Two side effects worth knowing: the early blocks are actually faster than standard FreeLong (they don't do the windowed pass at all), and the whole thing trades a bit of dynamism for directional stability.
When do you actually need this? The author's guidance is specific: vehicles cornering, camera movement, choreographed action - scenes where the motion intent is complex enough that standard FreeLong still shows drift or direction reversals. The instruction is also refreshingly direct: try standard FreeLong first. If your footage is stable with the regular node, the Enforcer's extra locking will mostly cost you liveliness.
The controls are a superset of FreeLong's, and the ones that matter:
- motion_lock_ratio (0.15) - how much of the ultra-low spectrum is hard-locked to global. Up (0.2–0.3) for stronger lock, down (0.05–0.1) for more natural motion.
- motion_lock_blocks (5) - how many early blocks run global-only. More (8–12) establishes motion sooner, less (0–3) lets detail influence earlier.
- blend_strength (0.8) and low_freq_ratio (0.5) - same roles as standard FreeLong, but note
low_freq_ratiohere is the upper bound of the blended zone above the locked band. - local_window_frames (33) - the detail window, same tuning logic as FreeLong.
The enabled toggle is the A/B tool: since this is an experimental variant, you should absolutely be flipping it on and off to check whether the locking is helping before you commit.
Installation is the pack's one shared routine - no requirements.txt, no model downloads, it patches whatever Wan 2.2 checkpoint you load (i2v recommended; GGUF works). Either ComfyUI Manager (search "comfyUI-LongLook") or:
cd ComfyUI/custom_nodes
git clone https://github.com/shootthesound/comfyUI-LongLook.git
then restart. Fair warning on expectations: this is the least-seen node in the pack - it's genuinely experimental, the tuning guide is thinner than the standard node's, and "drift" in the context of a five-second clip is often just the model being the model. Use it as a targeted fix for complex-motion scenes, run the A/B, and don't leave it in a workflow that was already fine.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| enabled | BOOLEAN | true | Turn FreeLong Enforcer on or off. |
| motion_lock_ratio | FLOAT | 0.150–0.5 | Ultra-low frequencies that are 100% locked to global. Higher = stronger motion lock but may reduce dynamism. 0.15 is a good starting point. |
| blend_strength | FLOAT | 0.80–1 | How strongly the enforcer affects the video. Higher = more consistent but slightly softer. |
| low_freq_ratio | FLOAT | 0.500–1 | Upper bound for global influence (above motion_lock_ratio, frequencies are blended). |
| local_window_frames | INT | 339–241 | Window size for local attention. Smaller = sharper details, larger = smoother. |
| motion_lock_blocks | INT | 50–20 | First N blocks use global-only (no local processing). Establishes motion early. 5 is a good default. 0 disables this feature. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |