Single-Band Compressor
Even out dynamics and add punch with professional RMS compression
What It Does
The compressor evens out the volume differences in your audio. When audio gets too loud (above the threshold), the compressor automatically turns it down. This makes quiet parts louder relative to loud parts, creating a more consistent, punchy sound.
Think of it like an automatic volume knob that pulls down peaks while leaving quieter sections alone. This is how you get that "radio-ready" sound where everything sits at a consistent level without constant manual volume riding.
Use the compressor canvas visualization to see what's happening. Blue shows input level, orange gradient shows how much gain reduction is happening, and green shows the final output.
When to Use Compression
- Even out vocals: Tame loud peaks in singing so every word is audible without clipping
- Add punch to drums: Fast attack to catch transients, slow release for sustained body
- Glue a mix together: Gentle compression (2:1 ratio) on the master bus makes everything feel cohesive
- Control dynamics: Make quiet parts louder relative to loud parts without manual volume automation
- Prevent clipping: Higher ratios (8:1+) act like soft limiting to prevent digital overs
Understanding the Controls
The compressor has six main controls. Here's what each does at a glance:
- Threshold: The level where compression starts. Lower = more compression.
- Ratio: How much compression. 4:1 means 4 dB over threshold becomes 1 dB out.
- Knee: Smooths the transition. Higher knee = more gradual onset.
- Attack: How fast it reacts. Shorter = catches transients. Longer = lets punch through.
- Release: How fast it recovers. Too fast can pump; too slow can feel sluggish.
- Makeup Gain: Restore level lost to compression. Match your GR amount.
▶ Detailed Parameter Guide (Threshold, Ratio, Knee, Attack, Release, Makeup)
Threshold
Sets the volume level where compression starts. Audio louder than this gets compressed, quieter audio passes through untouched.
Watch the input waveform (blue). Set threshold so peaks trigger compression (orange GR appears). Lower threshold = more compression, higher threshold = less compression.
- Vocals: -18 to -12 dB (catch peaks, leave body alone)
- Mix bus: -12 to -6 dB (gentle glue compression)
- Aggressive limiting: -6 to 0 dB (heavy compression/limiting)
Ratio
Controls how much compression happens. At 4:1, every 4 dB over threshold becomes 1 dB out (3 dB of gain reduction).
- 1:1: No compression (bypass)
- 2:1 - 3:1: Gentle, transparent (mix bus, mastering)
- 4:1 - 6:1: Moderate, musical (vocals, instruments)
- 8:1 - 10:1: Heavy, obvious (aggressive vocal control)
- 20:1+: Limiting (brickwall peak control)
Knee
Smooths the transition from no compression to full compression. Higher knee values make compression kick in gradually instead of suddenly.
- 0 dB (hard knee): Abrupt transition, more obvious compression
- 6-12 dB (medium): Smooth, natural-sounding transition
- 20+ dB (soft knee): Very gentle, transparent compression
Attack
How fast the compressor reacts to loud signals. Shorter attack catches transients quickly, longer attack lets transients through.
- Fast (1-5ms): Tame sharp transients (drums, plucks). Can sound squashed if too fast.
- Medium (10-30ms): Balanced, most vocals. Catches peaks but preserves punch.
- Slow (50-100ms): Let transients through, compress sustain. Adds punch to drums.
Release
How fast the compressor stops compressing after the signal drops below threshold. Longer release = smoother, shorter release = more responsive.
- Fast (50-100ms): Responsive, follows audio closely. Can sound pumpy.
- Medium (100-300ms): Natural, musical. Good for most sources.
- Slow (500ms-1s+): Smooth, glue-like. Mix bus compression.
- Rule of thumb: Set release so compression "breathes" with the music, not against it.
Makeup Gain
Boosts the output to compensate for volume lost to compression. If you're pulling down peaks by 6 dB, add 6 dB makeup to restore overall level.
Watch the gain reduction meter. If you're getting 6 dB of GR, add +6 dB makeup. Use A/B comparison to match before/after loudness.
Sidechain HP Filter
What it does: Removes low frequencies from the compressor's detection signal (NOT from the audio). Prevents bass from triggering compression and making the whole mix pump.
When to use it:
- Off (20 Hz): Full-range detection. Default.
- 80-120 Hz: Remove sub-bass from detection. Prevents kick drum from over-compressing.
- 150-300 Hz: Focus detection on mids/highs. Good for de-essing or controlling vocal resonance.
▶ Gear Head Details: Sidechain HP Filter Architecture
TabDSP implements true sidechain filtering—the HP filter affects only the detection signal, not the audio signal.
Signal flow:
- Audio enters compressor (L/R channels)
- Audio is duplicated → one path for detection, one path for processing
- Detection path: Apply 2nd-order Butterworth HP filter at sidechain frequency
- Detection path: Measure RMS level from filtered signal
- Calculate gain reduction based on filtered detection level
- Apply gain reduction to ORIGINAL audio (not filtered)
Implementation details:
- Filter type: 2nd-order Butterworth HP (Q = 0.707 / √2/2)
- Coefficient smoothing: 10ms time constant to prevent clicks when changing frequency
- Denormal protection: ANTI_DENORMAL constant (1e-25) added to filter feedback to prevent CPU spikes
- Stereo processing: Independent HP filter state per channel
This is superior to simple frequency-dependent compression because the audio remains unfiltered—only the compressor's "ears" are filtered.
Comparison to plugins:
- FabFilter Pro-C 2: Has similar sidechain filtering (HP/LP/bell)
- Waves CLA-76: No sidechain filtering (vintage hardware emulation)
- SSL G-Bus Compressor: Fixed sidechain filter at ~100 Hz (cannot adjust)
Digital vs. Analog Modes
Digital Mode (Default)
Detection: Peak detection—catches the highest sample instantly.
Sound: Transparent, surgical, fast. No added warmth or color.
Use when: You want clean, obvious compression without changing tone. Good for limiting, transparent vocal leveling.
Analog Mode
Detection: RMS (Root Mean Square)—averages level over 10ms window. Slower, more musical response.
Sound: Warmer, smoother, less reactive to brief peaks. Feels more "glued."
Use when: You want gentle, musical compression that breathes with the audio. Mix bus, mastering, vintage vibe.
▶ Gear Head Details: Peak vs. RMS Detection
Peak Detection (Digital Mode):
- Tracks maximum absolute sample value
- 1ms peak hold time to prevent excessive pumping
- Instant response to transients
- Formula:
peak = max(abs(L), abs(R))
RMS Detection (Analog Mode):
- Short sliding window average, on the order of ten milliseconds
- Responds to perceived loudness rather than instantaneous peaks
- Periodically refreshed so long sessions stay numerically stable
Why RMS sounds smoother: Because it averages over time, brief peaks don't trigger full compression. The compressor responds to perceived loudness rather than instantaneous peaks.
Comparison to hardware:
- LA-2A (optical): Acts like very slow RMS (50-100ms effective window)
- 1176 (FET): Fast peak detection, similar to Digital mode
- SSL Bus Compressor: RMS detection with program-dependent release
Using the Compressor Canvas
When the COMP module is selected, the canvas shows real-time waveform visualization. The three layers tell the story of your compression: blue input, orange gain reduction, green output. The orange horizontal line is the threshold—drag it up/down to adjust in real time.
▶ Canvas Element Guide (Waveforms, Cursor Readout, Text Readouts)
Waveform Layers
- Blue fill: Input level (what's coming in)
- Orange gradient: Gain reduction (how much compression is happening)
- Green line: Output level (input - GR + makeup)
Cursor Readout
Hover over the canvas to see:
- Time position: How far back in history (0ms = newest, 4000ms = oldest)
- Level: The actual dB value at that point in time
- Peak hold: Values hold for 1 second for easier reading
Text Readouts (Bottom)
- GR: Current gain reduction in dB (how much compression right now)
- Thresh: Current threshold setting
- Peak: Highest input level seen (with 1-second hold)
- In: Current input level
- Out: Current output level (after compression + makeup)
▶ Gear Head Details: Waveform Visualization Implementation
History buffer architecture:
- 240-sample ring buffer (~4 seconds at 60fps)
- Three independent buffers: trueInputHistory, grHistory, trueOutputHistory
- Updated every meter interval (sampleRate / 60)
True input/output measurement:
- Input: Measured from raw input samples BEFORE sidechain HP filtering
- Output: Measured from actual output samples AFTER compression + makeup
- Method:
max(abs(L), abs(R))per render quantum (128 samples)
This ensures waveform visualization shows actual signal levels, not sidechain detection levels (which may be HP filtered or RMS averaged).
Canvas rendering:
- 0 dB at top, -24 dB at bottom (adjustable range in future)
- Grid lines at 0, -6, -12, -18, -24 dB
- Time flows left to right: oldest (left) to newest (right)
- Double-render guard prevents duplicate rendering when bins and grHistory both exist
How the Compressor Works
When audio exceeds the threshold, the compressor calculates how much gain reduction is needed based on the ratio. This gain reduction is then smoothly applied using the attack and release times.
▶ Gear Head Details: RMS Envelope Follower Implementation
TabDSP uses a classic exponential envelope follower with separate attack and release time constants.
How the detector responds: The envelope follower continuously measures incoming level and compares it against the threshold. Signals well below the knee pass untouched; signals well above the knee are reduced by the full ratio; signals inside the knee region receive a smoothly increasing amount of reduction, so the transition into compression is gradual rather than abrupt. Gain reduction moves toward its target with separate attack and release smoothing — a short attack clamps down quickly on transients, while a longer release lets the reduction recover musically after the peak has passed. Makeup gain is applied at the output so that the compressed signal can be matched back to the input's perceived level.
Soft knee behavior: The knee defines a transition region centered on the threshold. Signals below the region pass untouched, signals above the region receive the full ratio, and signals inside the region are compressed by a smoothly increasing amount so the onset of compression is rounded rather than abrupt.
Comparison to classic compressors:
- VCA (API 2500): Similar exponential envelope follower
- FET (1176): Faster attack possible (50µs hardware, 0.1ms in TabDSP)
- Optical (LA-2A): Much slower attack/release (hardware uses photoresistor lag)
Common Compressor Settings
Starting point recipes for common scenarios. These are not rules—let your ears guide the final settings.
▶ Show Recipes (Vocal Leveling, Mix Bus Glue, Podcast Voice, Aggressive Limiting, Punchy Drums)
1. Vocal Leveling
- Threshold: -18 dB
- Ratio: 4:1
- Knee: 12 dB
- Attack: 10ms
- Release: 250ms
- Makeup: Match GR amount (~6 dB)
- SC HP: 100 Hz (prevent plosives from triggering compression)
2. Mix Bus Glue
- Threshold: -12 dB
- Ratio: 2:1 to 3:1
- Knee: 20 dB (very soft)
- Attack: 30ms (let transients through)
- Release: 500ms to 1s (smooth, slow)
- Makeup: +2 to +4 dB
- Mode: Analog (RMS)
3. Podcast Voice
- Threshold: -20 dB
- Ratio: 4:1 to 6:1
- Knee: 10 dB
- Attack: 5ms (fast, catch consonants)
- Release: 150ms
- Makeup: Match GR (~8 dB)
- SC HP: 150 Hz (focus on speech, ignore room rumble)
4. Aggressive Limiting
- Threshold: -6 dB
- Ratio: 10:1 or 20:1
- Knee: 6 dB
- Attack: 1ms (instant)
- Release: 80ms
- Makeup: +6 to +10 dB
- Mode: Digital (peak detection)
5. Punchy Drums
- Threshold: -15 dB
- Ratio: 3:1 to 4:1
- Knee: 8 dB
- Attack: 50ms (let transients through for punch)
- Release: 100ms (fast recovery)
- Makeup: +3 to +5 dB
- SC HP: 80 Hz (prevent kick from over-compressing)
Parameter Reference
| Parameter | Range | Default | Description |
|---|---|---|---|
| Threshold | -60 to 0 dB | -18 dB | Level where compression starts |
| Ratio | 1:1 to 20:1 | 3:1 | Amount of compression applied |
| Knee | 0 to 40 dB | 12 dB | Transition smoothness |
| Attack | 0.001 to 0.2 s (1-200ms) | 0.01 s (10ms) | How fast compression starts |
| Release | 0.01 to 1.5 s (10-1500ms) | 0.25 s (250ms) | How fast compression stops |
| Makeup | -12 to +12 dB | 0 dB | Output gain compensation |
| SC HP | 20 to 300 Hz | 20 Hz (off) | Sidechain high-pass filter |
| Mode | Digital, Analog | Digital | Detection type (Peak/RMS) |