Nodes/ComfyTV/→ ComfyTV Audio
ComfyUI Node

→ ComfyTV Audio

Getting native audio into a ComfyTV pipeline

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
→ ComfyTV Audio
  • audio
  • audio
force_run_token0
project_id
parent_output_id0

ComfyUI's audio nodes hand you an AUDIO dict - a waveform tensor plus a sample rate. ComfyTV's stages hand you COMFYTV_AUDIO, a URL snapshot of a wav file living in the project. If you've just generated music with something like Stable Audio or ACE-Step, or you're pulling processed audio out of a native chain, and you want that audio inside a ComfyTV video or audio stage, those two shapes don't connect on their own. → ComfyTV Audio is the adapter: native AUDIO in, COMFYTV_AUDIO out.

The README's framing is worth remembering here - this whole pack is a canvas where every stage runs on its own and downstream consumes the snapshot of what upstream last produced. A bridge like this is the entry checkpoint where a tensor becomes a snapshot. That's not a cosmetic difference; it's the whole design.

How it works

This one is a genuine Stage, not a passive converter: it has a ▶ Run button, and the arrow in the name means "into ComfyTV." On Run it takes the upstream AUDIO, writes it as a wav under output/ComfyTV/bridge/, and registers that file as a COMFYTV_AUDIO snapshot in the current project. The write goes through torchaudio, which the docs call out as deliberate - universal wav output with no codec dependency drama. It also normalizes the waveform shape on the way in, so a [1, channels, samples] tensor from any source ends up well-formed.

The only real input is audio (required). The output is audio of type COMFYTV_AUDIO, which you'd wire into a ComfyTV Video Stage's audio input (for image-to-audio-video work) or an Audio Stage. The three other inputs in the schema - force_run_token, project_id, parent_output_id - are internal lineage plumbing; leave them alone.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart the backend (a real restart, not a tab refresh), and the nodes appear under ComfyTV in the Add-Node menu. ComfyUI Manager finds the pack by searching "ComfyTV". The two classic README 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 make sure the first level of custom_nodes/ComfyTV/ contains __init__.py, not a nested ComfyTV/ComfyTV/ folder.

Zero Python dependencies in pyproject.toml - audio encode/decode rides on what ComfyUI already ships.

Troubleshooting

  • "Run vs Queue" confusion. This bridge needs a Run to create the snapshot. Queuing the graph alone won't do it. If downstream looks empty, you skipped the Run.
  • Audio not appearing. Check output/ComfyTV/bridge/*.wav - if the file is there, the snapshot was made; if the node never ran, it wasn't.
  • Sample rate changing? It shouldn't - the docs note the source sample rate is preserved.
  • Already have a ComfyTV audio track? A Demux audio track is already COMFYTV_AUDIO; you don't need this bridge. It exists for native AUDIO only.
CategoryComfyTV/Bridge

Inputs (4)

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.
audioAUDIO

Outputs (1)

NameTypeDescription
audioCOMFYTV_AUDIO