⚛️FAI Scale Scheduler⚛️
Seventeen motion curves so you never type that cosine formula again
- a
- b
- schedule_list
FAI Scale Scheduler is a schedule generator with an honest origin story: the author couldn't read the formula string the pack's Voronoi node inherited - something like 0:(15 * cos((a / 60 * 3.141 * (t + 0) / b))**70 + 0.009) - so he took the 17 formulas he actually wanted and turned them into dropdown entries with real names. That's the whole pitch: pick a curve by name, get a per-frame value list out.
Why you'd reach for it: almost everything that animates in a video workflow needs a per-frame curve - scale, detail, randomness, x/y offset, even a seed. This is the node that produces those lists. Wire its schedule_list output into FAI_Voronoi_Generator's scale_schedule or randomness_schedule, or into any scale-style input on other video nodes. In the pack's own example, two Voronoi generators get their schedules fed this way.
Mechanically it's a keyframe scheduler in a trench coat. The selected formula string is parsed and evaluated once per frame, with t as the frame index. The two wildcard inputs, a and b, are the knobs you actually turn - in the example workflow a is wired to the video frame rate and b to the BPM, which is why every formula keeps doing a / 60. They're typed as wildcards, so you can feed in plain numbers or pull them from other nodes.
The inputs that matter:
formula- the 17 named curves: smooth periodic sin/cosine, quadratic, cubic, logarithmic, exponential, pulse, sawtooth, gentle wave, and more. They have real characters - Pulse is a square wave, Sawtooth ramps up then snaps back. "Smooth Incremental Change" is the one the example picks for a gentle, calming feel.easing_mode- 19 options including None: linear, ease-in/out, bounce, sinusoidal, exponential, square, triangle. This reshapes the whole curve on top of the formula, which is a cheap way to add organic feel.end_frame- the length of the output. This is where people get burned. Left at 0, the scheduler has no timeline to extend and hands you a list of length one. Set it to your frame count.ndigits- rounding precision (default 5).
Output: schedule_list, a LIST of floats, one per frame.
The trap worth knowing: if you feed a schedule into the Voronoi node that's shorter than its batch_size, it pads with the last value rather than erroring. So a wrong-length list won't crash - it'll just freeze the motion at the tail. A flat, unmoving Voronoi is usually a length mismatch, not a broken formula.
Install through ComfyUI Manager (search "FAI-Node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/alanhuang67/ComfyUI-FAI-Node
then restart. It's part of the small FAI-Node pack by alanhuang67 (Fantasy AI Studio), a hobby project aimed at video generation - no models to download, the only real dependency situation is that the pack's README suggests having SaltAI_AudioViz installed for the full example workflows.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| formula | COMBO | 17 options: High-Frequency Oscillation, Nonlinear Variation, Repeating Linear Change, Smooth Periodic Change [Sin], Smooth Periodic Change [Cosine], Quadratic Curve Change, +11 | |
| easing_mode | COMBO | 19 options: None, linear, ease-in, ease-out, ease-in-out, bounce-in, +13 | |
| end_frameopt | INT | — | |
| ndigitsopt | INT | 51–12 | — |
| aopt | * | — | |
| bopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| schedule_list | LIST | — |