Nodes/CRT-Nodes/Tube Compressor (CRT)
ComfyUI Node

Tube Compressor (CRT)

A 'tube' compressor for generated video audio

By PGCRT·Created 2 years ago·Updated 2 days ago· 132
Tube Compressor (CRT)
  • audio
  • audio
  • gr_meter_data
threshold_db-20.0
ratio4.0
attack_ms5.0
release_ms100
warmth0.10
mix_wet1.00
makeup_gain_db0.0
match_input_peakOFF
soft_clipper_toggleOFF
clipper_threshold1.00

Video models with audio - LTX 2.3's whole selling point is synchronized sound - hand you audio that's often uneven: quiet sections, loud spikes, mumbly patches. Tube Compressor (CRT) is the pack's audio glue for exactly that problem: a compressor with a warmth control that evens out the level and tames the peaks before you export. It's one of the few full-featured audio-processing nodes in the ComfyUI ecosystem, and it lives in the CRT pack's growing audio drawer alongside the EQ, preview, mono-to-stereo, and save nodes.

The "tube" in the name is worth a skeptical look: this isn't an analog-tube emulation with transformer saturation curves. It's a clean DSP chain - a compressor plus a distortion stage for "warmth" - built on the pedalboard library. It sounds good and does the job; it's just not the boutique tube emulation the name might imply. Call it a mastering-style compressor with a saturation flavor knob and you'll have the right mental model.

How it works

The chain, in order: normalize to the input's peak, optionally run a distortion stage (warmth maps to a drive of 0–12dB) for that "tube" color, compress with threshold_db / ratio / attack_ms / release_ms, mix wet and dry (mix_wet), match loudness back to the input, apply makeup_gain_db, optionally soft-clip, then cap at −1dB so nothing blows out. It even measures the plugin's latency with an impulse and aligns wet/dry so the mix doesn't smear.

The inputs that actually matter for most people:

  • threshold_db (−60 to 0, default −20) and ratio (1–20, default 4) - the heart of it. −20dB at 4:1 is a gentle "everything louder than −20 gets squashed by 4:1" setting. Lower threshold = more compression; higher ratio = heavier squash.
  • attack_ms (default 5) and release_ms (default 100) - how fast it grabs and lets go. Fast attack catches transients; the default is a good all-rounder.
  • warmth (0–1, default 0.1) - the saturation. A touch adds body; past ~0.5 it starts audibly distorting.
  • mix_wet (default 1) - full wet by default; back it off toward 0.5–0.8 for parallel compression.
  • makeup_gain_db and match_input_peak - the level-matching side. With match_input_peak ON the output peaks match the input; OFF matches RMS instead.

Outputs: audio (the processed AUDIO) and gr_meter_data (a JSON-ish string of the gain-reduction envelope over time, which the node's UI renders as a gain-reduction meter - that's what the "tube" front panel is showing you).

Where it fits

After generation and before save/export. LTX 2.3 audio tends to run hot in places and quiet in others; a compressor pass makes the whole clip sit consistently in the mix. It also slots into the pack's audio workflow: EQ → compressor → preview → save. If you're doing voiceover-style LTX audio, threshold around −20 to −25 with ratio 3–4 and a little warmth is a genuinely good starting point.

Install and gotchas

cd ComfyUI/custom_nodes
git clone https://github.com/PGCRT/CRT-Nodes.git
pip install -r requirements.txt

or ComfyUI Manager → search "CRT-Nodes". pedalboard is in the requirements, but two real gotchas: the library needs a CPU with AVX2, so on old hardware the import fails and the node shows a warning and returns your audio unchanged rather than crashing - and if pedalboard is missing entirely, same graceful fallback. Both cases print a clear message to the console. And if the output sounds late by a hair, that's the latency alignment doing its job - the node compensates internally, but at very fast attack times the transient handling is worth a listen rather than a blind default.

CategoryCRT/Audio

Inputs (11)

NameTypeDefaultDescription
audioAUDIO
threshold_dbFLOAT-20.0-60–0
ratioFLOAT4.01–20
attack_msFLOAT5.00.1–200
release_msFLOAT10010–2000
warmthFLOAT0.100–1
mix_wetFLOAT1.000–1
makeup_gain_dbFLOAT0.0-24–24
match_input_peakCOMBOOFF2 options: OFF, ON
soft_clipper_toggleCOMBOOFF2 options: OFF, ON
clipper_thresholdFLOAT1.000.1–1

Outputs (2)

NameTypeDescription
audioAUDIO
gr_meter_dataSTRING