Audio Stereo
Audio Stereo — widen it, center it, or swap the channels entirely
- audio
- video
- audio
- fx_spec
Generated music often comes out of the box sounding narrow - everything parked in the middle like a mono radio. Audio Stereo is the stage that fixes that and then some. The mode combo is a seven-way switch, and each mode is a different stereo manipulation, all stock FFmpeg filters doing real DSP:
- widen (default) - the everyday one.
stereowidenwith delay, feedback, crossfeed, and dry/wet mix. A little goes a long way; 10–30ms of delay is the classic widening zone. - extrastereo -
extrastereowith a singlees_mmultiplier on the side channel. Crank it to taste; negative values narrow instead of widen. - crossfeed - headphone-friendly crossfeed (
crossfeed, strength/range) that bleeds some of each channel into the other, which is why it's the mode to reach for before headphone mastering. - haas - the Haas effect: delayed copies of one side into the other (
haaswith side gain and independent left/right delays). The most "spacious" of the lot, and the easiest to overdo into smear. - balance - a simple L/R balance trim via
stereotools(−1 to +1). - mono - collapse to true mono with the left and right summed. The "check your mix in mono" button, which every serious person does.
- swap - flip the channels left↔right, instantly.
Input is audio or video, and you get audio out plus an fx_spec for FX Chain stacking. Like every stage in this pack it carries the hidden force_run_token / project_id / parent_output_id plumbing inputs - ignore them.
Where people get burned: widening is a mono-collapse trap. A heavily widened track sounds huge in stereo and then vanishes or phase-cancels when it hits a mono speaker, a phone, or gets summed to mono - which is precisely why the mono mode exists. If you widen, check the mono mode at the end of your chain before you ship it. The other classic mistake is stacking widen on top of an already-wide track; you're not adding width beyond a point, you're adding phasiness. One stereo stage per bus, not one per element.
Install is the pack-wide story: ComfyUI Manager search "ComfyTV", or git clone https://github.com/jtydhr88/ComfyTV into custom_nodes/, then a full backend restart (Desktop/macOS: clone by absolute path into the running instance or the pack won't register). Zero extra pip dependencies - all modes are PyAV/FFmpeg filters, CPU-only, no models.
Inputs (17)
| 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. |
| mode | COMBO | widen | 7 options: widen, extrastereo, crossfeed, haas, balance, mono, +1 |
| sw_delay | FLOAT | 20.001–100 | — |
| sw_feedback | FLOAT | 0.300–0.9 | — |
| sw_crossfeed | FLOAT | 0.300–0.8 | — |
| sw_drymix | FLOAT | 0.800–1 | — |
| es_m | FLOAT | 2.50-10–10 | — |
| cf_strength | FLOAT | 0.200–1 | — |
| cf_range | FLOAT | 0.500–1 | — |
| haas_side_gain | FLOAT | 1.000.06–12 | — |
| haas_left_delay | FLOAT | 2.050–40 | — |
| haas_right_delay | FLOAT | 2.120–40 | — |
| balance | FLOAT | 0.00-1–1 | — |
| audioopt | COMFYTV_AUDIO | — | |
| videoopt | COMFYTV_VIDEO | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |
| fx_spec | COMFYTV_FXSPEC | — |