***BETA*** Spline Rhythm Modulator β‘π ‘π π £π
Bounce a point back and forth along a path, on the beat
- feature
- mask
- coord_str
- float
- count
- normalized_str
Same family as SplineFeatureModulator - same idea of moving a point along a hand-drawn spline, driven by a Flex FEATURE - but a different flavor of motion. Where the Feature Modulator maps your driving signal to speed (louder = faster travel), this one is built around rhythm: position and direction, with a smoothing knob to keep it from looking twitchy. Also marked BETA, so treat it as a bit rougher-edged than the pack's core nodes.
If you want a point that visibly bounces or oscillates in time with music or motion rather than one that just accelerates and decelerates, this is the one to reach for.
How it works
coordinates is the same JSON spline-points format as its sibling - draw it with the pack's spline interface rather than hand-typing it. feature drives the motion, same as before. The difference is in what's exposed: instead of min_speed/max_speed, you get smoothing and direction. smoothing (0β1, default 0.5) dampens jitter in the incoming feature before it's translated into movement - raise it if your source feature is spiky (raw audio RMS energy, say) and the point looks like it's twitching rather than moving with intent. direction picks how the point traverses the path: forward, backward, or bounce.
Worth thinking about before you pick: forward and backward mean the point restarts from one end once it reaches the other - on a path that isn't naturally a closed loop, that can read as a visible snap back to the start rather than smooth motion. bounce turns it into a genuine back-and-forth, which is usually the more natural default for anything tied to a beat or a repeating motion - that's also why it's the node's default.
The inputs and outputs that matter
The three you'll actually adjust: smoothing, direction, and float_output_type (list / pandas series / tensor - leave on tensor unless something downstream wants otherwise). mask_width/mask_height just size the output canvas, match your render resolution. Optional min_value/max_value rescale the numeric output range, same as the Feature Modulator.
Outputs mirror the sibling node exactly: mask (the position marker, ready to composite - pairs well with TranslucentComposite for a glow or light effect), float (the raw driving value), coord_str/normalized_str (string forms of the position data), and count (sample count).
How to install it
Via ComfyUI Manager, search "RyanOnTheInside." Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
Restart after. Nothing extra needed for this specific node beyond the pack's general dependencies (opencv, scipy, matplotlib, etc.) - pure CPU math, no model downloads.
Common issues & troubleshooting
Same coordinates caveat as its sibling: hand-typed spline JSON that doesn't match what the drawing interface actually produces tends to fail quietly rather than loudly, so build your path with the pack's editor.
If the motion looks jittery or nervous rather than rhythmic, that's what smoothing is for - push it up before you assume the feature extraction upstream is bad. And if you switch direction to forward or backward and the animation looks like it jump-cuts at the end of the path, that's the wraparound behavior described above - bounce is the fix for most music-driven use cases.
It's beta, same as SplineFeatureModulator - check the in-node ? docs after updating the pack, since parameter behavior here is more likely to shift release to release than in the pack's stable nodes.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| coordinates | STRING | JSON string containing spline control points | |
| feature | FEATURE | Input feature for rhythm modulation | |
| mask_width | INT | 5128β4096 | Width of the output mask (8 to 4096) |
| mask_height | INT | 5128β4096 | Height of the output mask (8 to 4096) |
| smoothing | FLOAT | 0.500β1 | Amount of smoothing applied to the feature values (0.0 to 1.0) |
| direction | COMBO | bounce | Direction of movement along the spline ('forward', 'backward', 'bounce') |
| float_output_type | COMBO | list | Type of float output ('list', 'pandas series', 'tensor') |
| min_valueopt | FLOAT | 0.00-10000β10000 | Optional minimum value for normalization |
| max_valueopt | FLOAT | 1.00-10000β10000 | Optional maximum value for normalization |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| mask | MASK | β |
| coord_str | STRING | β |
| float | FLOAT | β |
| count | INT | β |
| normalized_str | STRING | β |