WanVideo Block Strength Builder
Generate a 40-block strength curve in one dropdown
- block_strengths
- strength_visualization
The block activation builder gives you on/off per block. This node is the "how hard" version. It produces a 40-value strength profile - a curve across Wan's transformer depth - so you can say "inject softly at the start, hard in the middle, taper off" without hand-tuning forty sliders.
The idea is grounded in how Wan actually works. The 40-block DiT processes text conditioning at every depth, and the "early blocks = low-level features, late blocks = semantics" story is real but rough. A strength curve is the natural way to test gradients against that hypothesis: maybe the sweet spot isn't a clean "late blocks" binary, but a ramp or a peak somewhere in the middle. This node exists to make that experiment a one-dropdown affair.
How the patterns work
- uniform - every block at
base_strength. Equivalent to the base editor. - linear_decay / linear_rise - ramp from
base_strengthdown to 0 (or up to it). A decay is the classic "strong early, weak late" injection. - gaussian_peak / inverse_gaussian - a bell curve centered at
peak_block(default 20, so the middle), controlled byspread. Peak = "hit the middle blocks hard, leave the ends alone." - sine_wave - alternating high/low across depth.
- stepped - blocky steps every
step_sizeblocks. - random - chaos, for "map the block space" runs where you don't want to bias the outcome.
- focus_early / focus_mid / focus_late - hand-tuned profiles favoring each third of the stack.
- custom - your own values via the 40
block_0_strength…block_39_strengthfloats.
Only pattern and base_strength are required. The rest (peak_block, spread, step_size, the 40 custom floats) are optional and only matter for the patterns that use them.
Outputs: block_strengths (BLOCK_STRENGTHS, the object WanVideoAdvancedActivationEditor consumes) and strength_visualization - a ready-made ASCII/bar representation of the curve, handy for a quick look or for feeding WanVideoStrengthVisualizer if you want it pretty.
Install
It's part of fblissjr/ComfyUI-WanActivationEditor, so the install is the pack install: ComfyUI Manager (search "ComfyUI-WanActivationEditor") or
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper # required first
git clone https://github.com/fblissjr/ComfyUI-WanActivationEditor
cd ComfyUI-WanActivationEditor && pip install -r requirements.txt
then restart ComfyUI. Dependencies are torch, numpy, duckdb, zstandard - nothing exotic.
The honest caveat
Read the WanVideoAdvancedActivationEditor article for the full story, but the short version: the runtime patch code doesn't yet consume per-block strengths, so these curves are stored and visualized but may not change the actual injection in the current build. That doesn't make this node useless - the pattern math is solid, the visualization is real, and the plumbing is being built out. It just means you shouldn't expect the gaussian peak to produce a measurably different render from uniform strength today. Use it to design and visualize your hypothesis; check the repo periodically for the patch to catch up.
Inputs (45)
| Name | Type | Default | Description |
|---|---|---|---|
| pattern | COMBO | 12 options: custom, uniform, linear_decay, linear_rise, gaussian_peak, inverse_gaussian, +6 | |
| base_strength | FLOAT | 0.500–1 | — |
| peak_blockopt | INT | 200–39 | — |
| spreadopt | FLOAT | 5.00.5–20 | — |
| step_sizeopt | INT | 51–20 | — |
| block_0_strengthopt | FLOAT | 0.000–1 | — |
| block_1_strengthopt | FLOAT | 0.000–1 | — |
| block_2_strengthopt | FLOAT | 0.000–1 | — |
| block_3_strengthopt | FLOAT | 0.000–1 | — |
| block_4_strengthopt | FLOAT | 0.000–1 | — |
| block_5_strengthopt | FLOAT | 0.000–1 | — |
| block_6_strengthopt | FLOAT | 0.000–1 | — |
| block_7_strengthopt | FLOAT | 0.000–1 | — |
| block_8_strengthopt | FLOAT | 0.000–1 | — |
| block_9_strengthopt | FLOAT | 0.000–1 | — |
| block_10_strengthopt | FLOAT | 0.000–1 | — |
| block_11_strengthopt | FLOAT | 0.000–1 | — |
| block_12_strengthopt | FLOAT | 0.000–1 | — |
| block_13_strengthopt | FLOAT | 0.000–1 | — |
| block_14_strengthopt | FLOAT | 0.000–1 | — |
| block_15_strengthopt | FLOAT | 0.000–1 | — |
| block_16_strengthopt | FLOAT | 0.000–1 | — |
| block_17_strengthopt | FLOAT | 0.000–1 | — |
| block_18_strengthopt | FLOAT | 0.000–1 | — |
| block_19_strengthopt | FLOAT | 0.000–1 | — |
| block_20_strengthopt | FLOAT | 0.000–1 | — |
| block_21_strengthopt | FLOAT | 0.000–1 | — |
| block_22_strengthopt | FLOAT | 0.000–1 | — |
| block_23_strengthopt | FLOAT | 0.000–1 | — |
| block_24_strengthopt | FLOAT | 0.000–1 | — |
| block_25_strengthopt | FLOAT | 0.000–1 | — |
| block_26_strengthopt | FLOAT | 0.000–1 | — |
| block_27_strengthopt | FLOAT | 0.000–1 | — |
| block_28_strengthopt | FLOAT | 0.000–1 | — |
| block_29_strengthopt | FLOAT | 0.000–1 | — |
| block_30_strengthopt | FLOAT | 0.000–1 | — |
| block_31_strengthopt | FLOAT | 0.000–1 | — |
| block_32_strengthopt | FLOAT | 0.000–1 | — |
| block_33_strengthopt | FLOAT | 0.000–1 | — |
| block_34_strengthopt | FLOAT | 0.000–1 | — |
| block_35_strengthopt | FLOAT | 0.000–1 | — |
| block_36_strengthopt | FLOAT | 0.000–1 | — |
| block_37_strengthopt | FLOAT | 0.000–1 | — |
| block_38_strengthopt | FLOAT | 0.000–1 | — |
| block_39_strengthopt | FLOAT | 0.000–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| block_strengths | BLOCK_STRENGTHS | — |
| strength_visualization | STRING | — |