Load Audio from Asset
Grab a sound from your ComfyTV asset library and hand it to the audio chain
- audio
ComfyUI has spent its whole life image-first, then video-first, and audio has been the thinnest layer of the stack. ComfyTV is one of the few packs that treats sound as a first-class citizen - there are thirty-plus audio stages - and this is the front door to all of them. Load Audio from Asset pulls a track from your project's asset library and hands it out on a COMFYTV_AUDIO wire. If the file is already in your project, this is the node.
You'll reach for it in the same situations you reach for the image and video asset loaders: your music bed, a voiceover, or a noise sample lives in the library, and you want it in the graph without touching the input folder. From there the audio chain takes over - Dynamics, EQ, Loudness, Convolve reverb, crossfades, or the audio-reactive stages that drive video parameters from a beat.
How it works
Pick an asset in the node body and its payload URL lands in the internal asset_url input; the stage emits that as its output. Nothing is decoded at this point - the URL is handed downstream and each processing stage decodes what it needs. The output is audio (type COMFYTV_AUDIO), and that's the wire every ComfyTV audio effect consumes. It can also come out of a COMFYTV_VIDEO input on effect stages, which is how you pull the soundtrack out of a clip and process it.
Like its siblings, this node's schema is mostly internal plumbing: project_id, parent_output_id, asset_id, and category are all frontend-populated, marked internal in their tooltips, and exist for lineage and debugging. The one you'll notice is category - the persisted last-used filter so the picker opens where you left off.
Installing ComfyTV
Same story as every ComfyTV stage - it's one pack, ~190 stages:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Then a full backend restart (quit the app / stop the server, not a browser refresh) and the stages show up under the ComfyTV category. ComfyUI Manager can install it by searching "ComfyTV". The pack runs on zero extra Python dependencies - audio decode, filter graphs, and DSP ride on the PyAV/FFmpeg, numpy, and scipy that ComfyUI bundles. No models to download for the loader or the audio FX.
The install gotcha that bites people: on macOS, ComfyUI Desktop, or multi-install machines, the relative cd ComfyUI/custom_nodes can drop you into the wrong instance. The clone succeeds, the nodes never appear. Read the running instance's base path from the startup log, clone into that instance's custom_nodes by absolute path (quotes required if the path has spaces or parentheses), confirm ComfyTV/__init__.py is at the top level, and restart the backend.
Common issues
- The track isn't in the picker. Asset libraries are per-project. Switch projects, or if the file is in
ComfyUI/input, use the plain Load Audio stage instead. - Nothing downstream has sound. Check that the effect stage is actually getting the audio wire, not just the video one - effect stages prefer the
audioinput when both are connected. COMFYTV_AUDIOwon't plug into other packs' audio nodes. Correct - the typed wire is pack-internal. If you need to hand audio to a non-ComfyTV node, look for a Bridge node.
It's a quiet utility node, but it's also the reason the audio suite is usable at all. One click from library to chain.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| 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. |
| asset_url | STRING | Internal — payload URL of the asset picked in the node body. Becomes this stage's output. | |
| asset_id | INT | 00–2147483647 | Internal — library id of the picked asset (lineage/debug only). |
| category | STRING | all | Internal — last-selected category filter, persisted so the node remembers it. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |