Nodes/ComfyTV/Click Track
ComfyUI Node

Click Track

A metronome that renders as audio

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Click Track
  • labels
  • audio
  • performance
force_run_token0
project_id
parent_output_id0
bpm120.0
beats_per_bar4
bars8
soundfont

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 labels drives 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 labels input 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 performance output 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 audio output is COMFYTV_AUDIO; to hand the click to a native ComfyUI audio node, bridge it out.
CategoryComfyTV/Music

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
bpmFLOAT120.020–400
beats_per_barINT41–12
barsINT81–256
soundfontSTRING
labelsoptCOMFYTV_TEXT

Outputs (2)

NameTypeDescription
audioCOMFYTV_AUDIO
performanceCOMFYTV_TEXT