Click Track
A metronome that renders as audio
- labels
- audio
- performance
Sometimes the most boring node is the one that saves your session. Click Track generates a metronome: give it a tempo, a time signature, and a bar count, and it renders an actual click audio track - accented downbeat, plain off-beats - through the same SoundFont synthesizer the rest of ComfyTV's music lane uses. If you're building a backing bed with Chord Accompaniment, or you need a count-in to record or align against, this is the piece that keeps everything in time.
What makes it more than a one-trick utility is the second output. Alongside the audio click track you get a performance payload - the same JSON performance format Score Synth and the other music stages consume. Your click track doubles as a timing reference for anything else on the canvas, which is a thoughtful bit of design for a node this small.
How it works
Hit ▶ Run and the pack's score_synth runner renders the clicks. Two paths in the source: if you wire a labels input (COMFYTV_TEXT), the clicks land at those labelled points instead of on a fixed grid - useful for irregular timing. Without labels, it builds a plain grid from bpm, beats_per_bar, and bars. A soundfont filename from the resource library voices the click if you want a specific sound; blank (or not found) falls back to the synth's built-in click voices, so it works out of the box.
The inputs that matter
- bpm - 20–400, default 120 (in 0.5 steps). Ignored when
labelsdrives the track. - beats_per_bar - the top of the time signature, 1–12, default 4. Beat one of each bar is accented.
- bars - how many bars to generate, 1–256, default 8.
- soundfont - optional SoundFont name from the resource library; leave blank for the default click sound.
Outputs: audio (COMFYTV_AUDIO) and performance (COMFYTV_TEXT).
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart the ComfyUI backend (not just the tab); nodes appear under the ComfyTV category. ComfyUI Manager finds the pack by searching "ComfyTV". The README's two recurring gotchas: on Desktop/macOS/multi-install setups the relative cd can clone into the wrong instance - read the startup log for the base path it loaded and clone into that absolute path, quoted - and the first level of custom_nodes/ComfyTV/ must contain __init__.py, not a nested ComfyTV/ComfyTV/ folder. No Python dependencies to install.
Troubleshooting and tips
- The
labelsinput is all-or-nothing. Wire it and bpm/beats_per_bar/bars are ignored. Unwire it for a plain grid click. - Want a specific click sound? Add a SoundFont to the resource library and type its name in
soundfont; otherwise the built-in voice is fine. - Using it as a timing reference. Feed the
performanceoutput to Score Synth or line other stages up against the same grid - that's the output the docs expect you to actually use, not just the audio. - Bridge note: the
audiooutput isCOMFYTV_AUDIO; to hand the click to a native ComfyUI audio node, bridge it out.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| bpm | FLOAT | 120.020–400 | — |
| beats_per_bar | INT | 41–12 | — |
| bars | INT | 81–256 | — |
| soundfont | STRING | — | |
| labelsopt | COMFYTV_TEXT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |
| performance | COMFYTV_TEXT | — |