Nodes/SaltAI-Open-Resources/Apply Keyframing to List
ComfyUI Node

Apply Keyframing to List

Add organic Perlin wobble to any animation schedule

By get-salt-AI·Created 2 years ago·Updated 2 years ago· 84
Apply Keyframing to List
  • list_input
  • list
tremor_scale0.05
octaves1
persistence0.50
lacunarity2.00
repeat1024

If you've ever animated something in ComfyUI with a value schedule - a list of numbers driving zoom, opacity, whatever, frame by frame - you know the problem: a clean mathematical curve looks fake. Real camera shake, real hand-held motion, real anything doesn't move in perfectly smooth arcs. Apply Keyframing to List (its display name; OPACListVariance is the class) takes a list you already built and roughens it up with Perlin noise, so the wobble reads as organic instead of robotic.

How it works

It's the same fractal-noise stack you'll recognize from terrain generators and shader work: Perlin noise instead of pure random noise, because Perlin is continuous - nearby samples stay close in value, so the wobble flows instead of jittering frame to frame like static. octaves stacks multiple noise layers on top of each other at different frequencies for finer detail, persistence controls how much each additional octave contributes (lower means the fine detail fades out faster), and lacunarity is the frequency multiplier between octaves. repeat sets how long the noise pattern is before it loops.

The inputs and outputs that matter

  • list_input (required, LIST) - your existing schedule. This has to be a genuine LIST type, not a batch of images or a single number.
  • tremor_scale (default 0.05, 0.01–1) - the one knob you'll actually touch. This is how much wobble gets added, and it's an offset relative to your list's own value range - if your schedule swings between 0 and 1000, a tremor_scale capped at 1 will barely register. Works best on schedules already living in a small numeric range.
  • octaves, persistence, lacunarity, repeat - leave these at default (1 / 0.5 / 2 / 1024) unless you specifically want finer or coarser noise texture. More octaves adds detail a short list can't really show, which just looks noisy rather than organic.

Output is a single list - wire it right back into whatever was consuming your original schedule.

How to install it

Through ComfyUI Manager: search SaltAI-Open-Resources (the pack's title) or SaltAI, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/get-salt-AI/SaltAI

then restart ComfyUI. The pack's own README is sparse - it doesn't spell out a requirements file or model downloads, and this particular node needs neither; it's pure math on a list, no external model, no GPU work worth mentioning.

Common issues & troubleshooting

Nothing visibly changes. Almost always tremor_scale too small for your list's value range - it's capped at 1, so if your schedule's values are in the hundreds or thousands, bump tremor_scale toward its max and it'll still barely move the needle. Consider normalizing your list before feeding it in, or applying this node earlier in the pipeline before you scale values up.

The wobble looks like static noise, not organic motion. Too many octaves relative to how many frames you're actually animating. A schedule with a handful of keyframes doesn't have room to show fine-grained fractal detail - drop octaves back toward 1–2.

Type errors on list_input. This node wants a LIST, and ComfyUI is picky about that - feeding it a single FLOAT or INT widget instead of an actual list-producing node is the usual mistake.

CategorySALT/Animation/Keyframing

Inputs (6)

NameTypeDefaultDescription
list_inputLIST
tremor_scaleoptFLOAT0.050.01–1
octavesoptINT11–10
persistenceoptFLOAT0.500.01–1
lacunarityoptFLOAT2.001–4
repeatoptINT1024256–4096

Outputs (1)

NameTypeDescription
listLIST