Random Beats JK๐
Random rhythm coordinates, for when the beat needs to be generated too
- BEATSTEXT
This is the odd one in the pack, and the pack knows it - it's flagged experimental, and the changelog entry that introduced it in 2024 literally says "(not for AIGC)." Random Beats JK generates random coordinate patterns in X-Y-Z space and spits them out as text, formatted for whatever rhythm or animation-timing system you're feeding. If your workflow involves beats, timing, or procedural motion patterns, this hands you a randomized sequence instead of typing one.
What it actually generates
The output BEATSTEXT (STRING) is a list of "beat groups," each containing one or more mTextVal entries with random X, Y, Z coordinates. The inputs are all about the shape of the randomness:
- count - how many beat groups to generate.
- X_start / X_end, Y_start / Y_end, Z_start / Z_end - the min/max range for each coordinate. Defaults give you X and Y in 1โ4 and Z in 1โ23, which is a hint that Z is where most of the action is in the intended use.
- max_items_per_count - the max number of items within a single beat group (default
1). - max_items_odds - a 0โ10 probability knob for whether a group gets multiple items (default
5, roughly coin-flip territory).
If you set max_items_odds to 0 or max_items_per_count to 1, every group gets exactly one item. Crank both up and groups start carrying multiple beats. That's the whole "musicality" of the node - clusters versus steady pulses.
Why "not for AIGC"
That changelog note is the author's own disclaimer: this isn't a diffusion thing, it's a procedural/experimental tool. The coordinate format (X_Y_Z, mTextVal) smells like it's built for a specific animation or rhythm system the author was tinkering with - the kind of thing where you want a randomized but constrained timing pattern and don't want to hand-author 50 entries. It's a genuinely niche node: if you recognize the output format, you know what it's for; if you don't, this probably isn't your node.
Honest advice
Because it's experimental, treat it as a sketch rather than production plumbing. The ranges have validation (start must be โค end, odds must be 0โ10), so it won't silently generate garbage - but the output format is fixed and the node doesn't parameterize the text layout. If you need something more flexible, you're better off with a general random/wildcard node; if you need this exact format, this saves you the copy-paste.
Install
The whole pack installs together:
cd ComfyUI/custom_nodes
git clone https://github.com/jakechai/ComfyUI-JakeUpgrade
pip install -r requirements.txt
Experimental nodes load by default in this pack (it's deprecated ones that hide behind config.ini), so restart and it should be there under the pack's Experiment section. No models, no deps beyond standard Python random. Set a seed elsewhere in your graph if you need reproducible beats - the node itself doesn't take one.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| count | INT | 10โ18446744073709550000 | Number of beat groups to generate |
| X_start | INT | 10โ18446744073709550000 | Minimum value for X coordinate |
| X_end | INT | 41โ18446744073709550000 | Maximum value for X coordinate |
| Y_start | INT | 10โ18446744073709550000 | Minimum value for Y coordinate |
| Y_end | INT | 41โ18446744073709550000 | Maximum value for Y coordinate |
| Z_start | INT | 10โ18446744073709550000 | Minimum value for Z coordinate |
| Z_end | INT | 231โ18446744073709550000 | Maximum value for Z coordinate |
| max_items_per_count | INT | 11โ18446744073709550000 | Maximum number of items per beat group |
| max_items_odds | INT | 50โ10 | Probability (0-10) of generating multiple items per beat |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BEATSTEXT | STRING | โ |