→ ComfyTV Audio
Getting native audio into a ComfyTV pipeline
- audio
- audio
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 nativeAUDIOonly.
Inputs (4)
| 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. |
| audio | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |