Nodes/ComfyTV/Audio Stereo
ComfyUI Node

Audio Stereo

Audio Stereo — widen it, center it, or swap the channels entirely

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Audio Stereo
  • audio
  • video
  • audio
  • fx_spec
force_run_token0
project_id
parent_output_id0
modewiden
sw_delay20.00
sw_feedback0.30
sw_crossfeed0.30
sw_drymix0.80
es_m2.50
cf_strength0.20
cf_range0.50
haas_side_gain1.00
haas_left_delay2.05
haas_right_delay2.12
balance0.00

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. stereowiden with delay, feedback, crossfeed, and dry/wet mix. A little goes a long way; 10–30ms of delay is the classic widening zone.
  • extrastereo - extrastereo with a single es_m multiplier 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 (haas with 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.

CategoryComfyTV/AudioFX

Inputs (17)

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.
modeCOMBOwiden7 options: widen, extrastereo, crossfeed, haas, balance, mono, +1
sw_delayFLOAT20.001–100
sw_feedbackFLOAT0.300–0.9
sw_crossfeedFLOAT0.300–0.8
sw_drymixFLOAT0.800–1
es_mFLOAT2.50-10–10
cf_strengthFLOAT0.200–1
cf_rangeFLOAT0.500–1
haas_side_gainFLOAT1.000.06–12
haas_left_delayFLOAT2.050–40
haas_right_delayFLOAT2.120–40
balanceFLOAT0.00-1–1
audiooptCOMFYTV_AUDIO
videooptCOMFYTV_VIDEO

Outputs (2)

NameTypeDescription
audioCOMFYTV_AUDIO
fx_specCOMFYTV_FXSPEC