Nodes/AnimateDiff Evolved/AD Per Block Floats (SD1.5) πŸŽ­πŸ…πŸ…“
ComfyUI Node Runs on cloud

AD Per Block Floats (SD1.5) πŸŽ­πŸ…πŸ…“

Scripting all 21 SD1.5 motion blocks from two lists of numbers

By KosinkadinkΒ·Created 3 years agoΒ·Updated 12 days agoΒ· 3,519
AD Per Block Floats (SD1.5) πŸŽ­πŸ…πŸ…“
  • effect_21_floats
  • scale_21_floats
  • PER_BLOCK

If you've looked at AD Per Block++ (SD1.5) and recoiled at the sight of 21 separate sockets, this node is the shortcut. Instead of building 21 individual block configurations by hand, you hand it two flat lists of 21 numbers each - one for effect, one for scale - and it assembles the whole per-block configuration in a single node.

Where this sits in the per-block ladder

This pack exposes per-block motion control at four levels of granularity, and it's worth knowing the whole ladder before picking one. AD Per Block (the "high level" node) gives you three knobs: down, mid, up - one setting for each whole group of the UNet. AD Per Block+ splits that into nine: down_0 through down_3, mid, up_0 through up_3 - one per structural stage. AD Per Block++ goes all the way to 21: every individual sub-block, addressed by name (down_0__0, down_0__1, and so on through mid to up_3__2). This node is the same 21-slot granularity as ++, but instead of wiring 21 separate AD_BLOCK builder nodes, you feed two FLOATS lists directly.

The count itself reflects SD 1.5's actual UNet structure: four down stages with two sub-blocks each (8), one mid block (1), and four up stages with three sub-blocks each (12) - 21 total. The order your two lists need to follow matches ADE_PerBlock_SD15_LowLevel's own field order exactly: down_0__0, down_0__1, down_1__0, down_1__1, down_2__0, down_2__1, down_3__0, down_3__1, mid, then up_0__0 through up_3__2.

The trade-off

The low-level AD_BLOCK nodes (ADE_ADBlockCombo, ADE_ADBlockIndiv) take MULTIVAL inputs, which means each block's effect/scale can be masked spatially or scheduled independently. This node takes plain floats - one flat number per block, no masking, no per-block scheduling. That's the whole point: it trades flexibility for speed when you already know the 21 numbers you want and don't want to click through 21 nodes to set them. Where would those numbers come from? ADE_ValueScheduling or a chain of ADE_FloatToFloats are the natural sources if you're generating them programmatically rather than typing them by hand.

Inputs and output

Both optional, and independent of each other - you can drive just effect, just scale, or both, and leave the other at its default:

  • effect_21_floats (FLOATS) - 21 values, in the order above.
  • scale_21_floats (FLOATS) - same order, for motion intensity per block.

Output is a single PER_BLOCK, which feeds an Apply node's per_block input or a keyframe's per_block_replace slot if you want the configuration scheduled to change partway through the clip.

How to install it

ComfyUI Manager: search AnimateDiff Evolved, confirm the author is Kosinkadink, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

No model download for this node specifically - it's configuration layered on top of a motion module you've already loaded.

Common issues & troubleshooting

List isn't exactly 21 entries. Both lists need to match the block count precisely - pad or trim before wiring them in, don't assume a shorter list gets silently repeated or extended.

Not sure which position in the list maps to which block. It follows ADE_PerBlock_SD15_LowLevel's own naming order, given above - if you're unsure, build one instance of the low-level node alongside this one as a reference while you get your list order right, then drop it once you're confident.

Wanted to mask one block spatially and can't here. Correct - this node only accepts flat numbers. Drop to ADE_PerBlock_SD15_LowLevel and feed the block you need masked control on with ADE_ADBlockCombo/ADE_ADBlockIndiv instead, leaving the rest on FromFloats or defaults.

21 numbers feels like more precision than you actually need. It usually is. Most motion problems that per-block tuning actually fixes are traceable to one or two structural regions, not all 21 - try ADE_PerBlock_SD15_MidLevel (9 knobs) or the plain AD Per Block (3 knobs) first, and only reach for this level once you've confirmed you genuinely need block-by-block precision.

CategoryAnimate Diff πŸŽ­πŸ…πŸ…“/per block

Inputs (2)

NameTypeDefaultDescription
effect_21_floatsoptFLOATSβ€”
scale_21_floatsoptFLOATSβ€”

Outputs (1)

NameTypeDescription
PER_BLOCKPER_BLOCKβ€”