Vintage Glue Compressor — User Guide

Analog-style dynamics processing: combines RMS compression with hyperbolic tangent saturation to emulate classic VCA and opto compressors, adding warmth and cohesion reminiscent of vintage hardware.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 1.0 (2025) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

This script implements a vintage-style glue compressor that emulates the characteristics of classic analog compression hardware. Unlike digital compressors that focus solely on dynamic control, this processor adds intentional saturation and harmonic generation to mimic the "warmth" and "glue" of analog gear. The dual-stage processing combines: (1) RMS-based compression: Professional dynamic control with auto-calibration. (2) Hyperbolic tangent saturation: Mathematical emulation of analog soft-clipping. (3) 4 vintage-inspired presets: Models classic compressor types including opto, VCA, bus compression, and tape saturation. (4) Adjustable warmth: Continuously variable from clean digital to heavy analog saturation.

Key Features:

What is "glue" compression? In analog audio engineering, "glue" refers to the cohesive quality that certain compressors impart to a mix. This comes from two factors: (1) Musical compression: Smooth gain reduction that respects transients. (2) Circuit saturation: Gentle harmonic distortion from analog components. Classic hardware like the SSL Bus Compressor, LA-2A, and DBX 160 are famous for their "glue" characteristics. This script mathematically models both aspects: RMS compression for dynamic control and tanh() saturation for harmonic warmth. The result is compression that not only controls levels but also adds musical character and cohesion.

Technical Implementation: (1) Input analysis: Measure peak levels and auto-calibrate thresholds. (2) RMS envelope: Generate musical level detection using Praat's Intensity object. (3) Gain computation: Apply professional compression curves with makeup gain. (4) Compression stage: Multiply audio by gain reduction envelope. (5) Saturation stage: Apply hyperbolic tangent soft-clipping with adjustable drive. (6) Output management: Peak normalization, vintage-style naming, and cleanup. The saturation stage uses tanh(x × drive)/drive to maintain consistent levels while adding harmonics.

Quick start

  1. In Praat, select exactly one Sound object.
  2. Run script…vintage_glue_compressor.praat.
  3. Choose Preset from dropdown:
    • Vocal Opto: Slow, warm LA-2A style compression
    • Drum VCA: Fast, snappy SSL-style compression
    • Mix Bus Glue: Gentle SSL bus compression
    • Tape Squeeze: Heavy saturation and compression
  4. Or select Custom and adjust:
    • Threshold_dB: Compression start point
    • Ratio: Amount of compression
    • Attack_Release_window: Time response
    • Analog_Warmth: Saturation amount (0.0-1.0)
    • Makeup_Gain_dB: Output level compensation
  5. Set Scale_peak (0.99 recommended)
  6. Enable Play_result for immediate audition
  7. Enable Keep_original to preserve source
  8. Click OK — processed sound created with vintage-style suffix
Quick tip: Start with presets to experience different vintage compressor characters. For vocals: use Vocal Opto for smooth, musical compression. For drums: use Drum VCA for fast, punchy control. For full mixes: use Mix Bus Glue for gentle cohesion. For creative effects: use Tape Squeeze for heavy saturation. The Analog_Warmth parameter is key — lower values (0.1-0.3) add subtle harmonics, higher values (0.6-1.0) create obvious saturation effects.
Important: SATURATION IS ADDITIVE — warmth parameter adds harmonic distortion. Analog_Warmth=0.0: Clean digital compression only. Analog_Warmth=0.5: Moderate tube-like saturation. Analog_Warmth=1.0: Heavy saturation approaching distortion. Makeup gain: Saturation can increase perceived loudness — adjust carefully. Peak normalization: Essential with saturation to prevent inter-sample peaks. Vintage character: Presets emulate specific hardware — results vary by source material. Original preservation: "Keep_original=0" removes source sound — use with caution.

Analog Compression Theory

Vintage Compressor Characteristics

What Makes Analog Compression Different?

Hardware vs digital differences:

DIGITAL COMPRESSION: - Pure mathematical processing - No added coloration - Transparent dynamic control - Predictable, repeatable ANALOG COMPRESSION: - Circuit-based processing - Added harmonic distortion - Non-linear time constants - "Musical" artifacts and character Key analog characteristics: 1. SOFT CLIPPING: Gentle saturation on peaks 2. EVEN HARMONICS: Musically pleasing distortion 3. NON-LINEAR RESPONSE: Varies with signal level 4. TRANSFORMER COLOR: Frequency-dependent phase shifts 5. TUBE/TRAINSISTOR COLOR: Circuit-specific harmonics Our emulation focus: - Soft clipping via hyperbolic tangent - Even harmonic generation - Level-dependent saturation - Vintage-style time constants

Classic Compressor Types

Vintage hardware emulation:

🎛️ Vintage Compressor Families

Opto-Compressors (LA-2A, LA-3A):

  • Detection: Light-dependent resistor
  • Character: Slow, smooth, musical
  • Best for: Vocals, bass, slow material
  • Our preset: Vocal Opto

VCA Compressors (SSL, DBX, API):

  • Detection: Voltage-controlled amplifier
  • Character: Fast, precise, aggressive
  • Best for: Drums, buses, mastering
  • Our preset: Drum VCA

FET Compressors (1176):

  • Detection: Field-effect transistor
  • Character: Very fast, colorful
  • Best for: Drums, vocals, aggressive material

Variable-Mu (Fairchild, Manley):

  • Detection: Tube-based gain reduction
  • Character: Warm, smooth, expensive
  • Best for: Mix bus, mastering

RMS Detection for Musical Compression

Why RMS for Vintage Emulation?

Perceptual accuracy:

RMS (ROOT MEAN SQUARE) DETECTION: RMS = √( (x₁² + x₂² + ... + xₙ²) / n ) Why RMS for vintage emulation? - Matches human loudness perception - Most analog compressors use RMS-like detection - Creates smooth, musical compression - Respects transient information PEAK DETECTION COMPARISON: Peak: Responds to instantaneous maximums RMS: Responds to average power over time Vintage hardware behavior: - Opto: Very slow RMS-like response - VCA: Medium-fast RMS response - FET: Can be peak or RMS depending on design - Variable-Mu: Slow RMS response Our implementation: Uses Praat's Intensity object for RMS detection Time constants tuned for vintage characteristics Auto-calibration for accurate threshold operation

Time Constant Philosophy

Vintage timing characteristics:

Vintage Compressor Time Constants:

Opto-Compressors (LA-2A):
Attack: 10ms (slow)
Release: 500ms-5s (program-dependent)
Character: Lazy, smooth, musical

VCA Compressors (SSL):
Attack: 1-30ms (adjustable)
Release: 100-1100ms (adjustable)
Character: Fast, precise, aggressive

FET Compressors (1176):
Attack: 20-800μs (very fast)
Release: 50-1100ms (fast)
Character: Grabby, aggressive, colorful

Our Implementation:
Unified attack/release window for simplicity
Presets emulate vintage timing characteristics
Custom mode allows fine-tuning

Harmonic Distortion Theory

Even vs Odd Harmonics

Musical distortion characteristics:

HARMONIC SERIES: Fundamental: f (original frequency) 2nd harmonic: 2f (octave) 3rd harmonic: 3f (octave + fifth) 4th harmonic: 4f (two octaves) 5th harmonic: 5f (two octaves + major third) EVEN HARMONICS (2nd, 4th, 6th...): - Musically consonant - Create "warmth" and "fullness" - Characteristic of tube circuits and tape - Our tanh() saturation generates even harmonics ODD HARMONICS (3rd, 5th, 7th...): - Musically dissonant - Create "edge" and "aggression" - Characteristic of transistor circuits - Our compression stage can generate odd harmonics Why even harmonics sound "warm": - Reinforce the fundamental - Create sense of fullness - Psychoacoustically pleasing - Associated with classic analog gear Our saturation: Primarily even harmonics from soft clipping

Saturation Modeling

Hyperbolic Tangent Saturation

Mathematical Soft Clipping

The tanh() function:

HYPERBOLIC TANGENT FUNCTION: tanh(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ) Properties: - Smooth S-shaped curve - Limits output to [-1, 1] regardless of input - Gentle rounding near zero - Progressive soft clipping as input increases Why tanh() for analog emulation? - Matches tube/tape transfer characteristics - Creates pleasant even-order harmonics - Smooth, musical distortion - Standard in analog circuit modeling Our implementation: output = tanh(input × drive) / (drive × 0.8) Where: drive = 1.0 + (analog_Warmth × 2.0) Explanation: - input × drive: Amplify signal into non-linear region - tanh(): Apply soft clipping - / (drive × 0.8): Normalize level approximately - analog_Warmth: Controls amount of drive (0.0-1.0)

Saturation Curves

Hyperbolic Tangent Transfer Curves

Input/Output Characteristics:
Drive=1.0 (Clean):
-1.0 → -0.76 | -0.5 → -0.46 | 0.0 → 0.0 | 0.5 → 0.46 | 1.0 → 0.76

Drive=2.0 (Warm):
-1.0 → -0.96 | -0.5 → -0.76 | 0.0 → 0.0 | 0.5 → 0.76 | 1.0 → 0.96

Drive=3.0 (Saturated):
-1.0 → -1.00 | -0.5 → -0.91 | 0.0 → 0.0 | 0.5 → 0.91 | 1.0 → 1.00

Note: Output normalized for comparison
Higher drive = more soft clipping = more harmonics

Warmth Parameter Implementation

Drive Calculation

Controlling saturation amount:

ANALOG_WARMTH PARAMETER: Range: 0.0 to 1.0 0.0 = No saturation (digital clean) 1.0 = Maximum saturation (heavy distortion) DRIVE CALCULATION: drive = 1.0 + (analog_Warmth × 2.0) Examples: analog_Warmth = 0.0 → drive = 1.0 (no additional drive) analog_Warmth = 0.5 → drive = 2.0 (moderate drive) analog_Warmth = 1.0 → drive = 3.0 (heavy drive) SATURATION FORMULA: output = tanh(input × drive) / (drive × 0.8) Why divide by (drive × 0.8)? - Compensates for level loss from soft clipping - Maintains approximately consistent output level - The 0.8 factor found empirically for best results - Can be adjusted based on taste Result: Smooth progression from clean to saturated

Harmonic Generation

Spectrum analysis:

Saturation Harmonic Content:

analog_Warmth = 0.1 (Subtle):
- 2nd harmonic: -60dB
- 3rd harmonic: -80dB
- Character: Very subtle warmth

analog_Warmth = 0.3 (Warm):
- 2nd harmonic: -40dB
- 3rd harmonic: -60dB
- Character: Noticeable tube-like warmth

analog_Warmth = 0.6 (Saturated):
- 2nd harmonic: -25dB
- 3rd harmonic: -40dB
- 4th harmonic: -50dB
- Character: Obvious saturation, tape-like

analog_Warmth = 1.0 (Heavy):
- 2nd harmonic: -15dB
- 3rd harmonic: -25dB
- Multiple higher harmonics
- Character: Distortion, aggressive

Dual-Stage Processing

Compression Then Saturation

Signal flow rationale:

PROCESSING STAGES: STAGE 1: COMPRESSION Input → RMS Detection → Gain Reduction → Compressed Audio STAGE 2: SATURATION Compressed Audio → Drive → tanh() → Normalization → Output Why this order? - Compression first: Controls dynamics before saturation - Saturation second: Adds harmonics to compressed signal - Analog reality: Most hardware works this way - Musical result: Controlled dynamics with added warmth Alternative: Saturation then compression Would saturate peaks before compression Could create unwanted distortion on transients Less musically useful for most applications Our flow matches analog hardware behavior: VCA/opto compression → output stage saturation Creates classic "glue" compression character

Level Management

Gain staging considerations:

GAIN STAGING THROUGH PROCESSING: Input: Original audio (variable level) Compression: Level reduced by gain reduction Makeup Gain: Level increased to compensate compression Saturation: Level affected by soft clipping normalization Peak Normalization: Final safety scaling Key considerations: - Makeup gain affects saturation amount - Higher makeup gain → more saturation - Saturation normalization maintains reasonable levels - Peak normalization prevents clipping Professional practice: - Adjust threshold/ratio for desired compression - Set makeup gain for appropriate output level - Adjust warmth for desired harmonic content - Use peak normalization as safety net Our implementation: Automatic level management Makeup gain preset appropriately for each style Saturation normalization maintains levels Peak normalization ensures no clipping

Vintage Presets

Vocal Opto (Slow & Warm)

ParameterValueVintage Inspiration
Threshold-20 dBLA-2A, LA-3A opto compressors
Ratio3.0:1Gentle, program-dependent
Time Window0.10 sSlow, musical response
Makeup Gain+3.0 dBTube-like level boost
Analog Warmth0.3Subtle tube saturation
Suffix_OptoOpto-compressor style

🎤 Opto-Compressor Characteristics

Vintage inspiration: Teletronix LA-2A, Universal Audio LA-3A

Sonic character: Smooth, lazy, musical, warm

Best for: Vocals, bass, acoustic instruments, slow material

Technical notes: Slow attack preserves transients, gentle ratio creates natural compression, tube-like warmth adds harmonic richness

Drum VCA (Snappy)

ParameterValueVintage Inspiration
Threshold-18 dBSSL Bus Compressor, DBX 160
Ratio10.0:1Aggressive control
Time Window0.015 sFast, punchy response
Makeup Gain+4.0 dBSignificant level boost
Analog Warmth0.5Moderate transformer color
Suffix_VCAVCA compressor style

🥁 VCA Compressor Characteristics

Vintage inspiration: SSL 4000 Bus Compressor, DBX 160, API 2500

Sonic character: Fast, punchy, aggressive, controlled

Best for: Drums, percussion, drum buses, aggressive material

Technical notes: Fast attack controls transients, high ratio adds density, transformer saturation adds punch and weight

Mix Bus Glue (The Classic)

ParameterValueVintage Inspiration
Threshold-10 dBSSL Bus Compressor gentle setting
Ratio2.0:1Very gentle compression
Time Window0.10 sSlow, transparent response
Makeup Gain+2.0 dBSubtle level compensation
Analog Warmth0.1Very subtle console color
Suffix_GlueBus compression style

🎚️ Bus Compressor Characteristics

Vintage inspiration: SSL 4000 Bus Compressor, Neve consoles

Sonic character: Cohesive, transparent, "glued"

Best for: Mix buses, subgroup buses, mastering

Technical notes: Very gentle ratio for transparency, slow timing for smooth operation, subtle console saturation for cohesion

Tape Squeeze (Heavy Saturation)

ParameterValueVintage Inspiration
Threshold-12 dBTape machine saturation threshold
Ratio4.0:1Medium compression
Time Window0.05 sMedium response
Makeup Gain+5.0 dBSignificant level boost
Analog Warmth0.8Heavy tape saturation
Suffix_TapeTape machine style
Preset Selection Guide:
  • Vocal Opto: Smooth vocals, bass, acoustic instruments
  • Drum VCA: Punchy drums, percussion, aggressive material
  • Mix Bus Glue: Subtle mix cohesion, mastering
  • Tape Squeeze: Creative saturation effects, lo-fi sounds

Parameters & Settings

Compression Parameters

ParameterRangeDefaultDescription
Threshold_dB-60 to 0-15.0Compression start point
Ratio1.0-20.04.0Compression amount above threshold
Attack_Release_window0.001-1.00.05Combined time response

Saturation Parameters

ParameterRangeDefaultDescription
Analog_Warmth0.0-1.00.2Saturation amount (0=clean, 1=heavy)

Output Parameters

ParameterRangeDefaultDescription
Makeup_Gain_dB-20 to +202.0Output level compensation
Scale_peak0.1-1.00.99Final peak normalization
Play_resultboolean1Auto-play after processing
Keep_originalboolean1Preserve source sound

Parameter Guidance

Analog_Warmth settings:
  • 0.0-0.2: Very subtle, console-like color
  • 0.2-0.4: Moderate, tube-like warmth
  • 0.4-0.6: Noticeable, transformer color
  • 0.6-0.8: Heavy, tape-like saturation
  • 0.8-1.0: Extreme, distortion effects
Time window selection:
  • 0.01-0.03s: Very fast (drums, percussion)
  • 0.03-0.07s: Fast (vocals, bass)
  • 0.07-0.15s: Medium (general purpose)
  • 0.15-0.30s: Slow (opto-style, smooth)
  • 0.30s+: Very slow (special effects)
Ratio selection for vintage character:
  • 1.5:1-3:1: Opto-style, gentle
  • 3:1-6:1: General purpose, musical
  • 6:1-10:1: VCA-style, aggressive
  • 10:1+: Limiting territory, extreme

Applications

Vocal Processing

Use case: Smooth, warm vocal compression

Technique: Use Vocal Opto preset with medium threshold

Benefits: Musical level control, added warmth, reduced sibilance harshness

Drum Enhancement

Use case: Punchy, aggressive drum sounds

Technique: Use Drum VCA preset on drum buses or individual drums

Results: Controlled transients, enhanced sustain, transformer weight

Mix Bus Processing

Use case: Creating cohesive final mixes

Technique: Use Mix Bus Glue preset on stereo mix

Benefits: Gentle cohesion, console-like color, "glued" sound

Creative Saturation

Use case: Adding vintage character to digital sources

Technique: Use Tape Squeeze preset or high Analog_Warmth settings

Results: Tape-like warmth, harmonic richness, reduced digital harshness

Practical Workflow Examples

🎤 Vintage Vocal Chain

Goal: Classic vocal sound with warmth and control

Setup:

  • Preset: Vocal Opto
  • Source: Lead vocal recording
  • Adjustment: Lower threshold for more compression if needed
  • Result: Smooth, warm, professional vocal sound

Tip: Increase Analog_Warmth to 0.4-0.5 for more tube-like character

🥁 Punchy Drum Bus

Goal: Aggressive, weighty drum sound

Setup:

  • Preset: Drum VCA
  • Source: Drum bus or individual drum
  • Adjustment: Increase ratio for more aggression
  • Result: Powerful, controlled drums with transformer weight

Tip: Use parallel compression for extreme effects

🎚️ Analog Mix Glue

Goal: Cohesive final mix with console character

Setup:

  • Preset: Mix Bus Glue
  • Source: Stereo mix
  • Adjustment: Very subtle - listen for "glue" not obvious effect
  • Result: Professional, cohesive mix with analog character

Tip: A/B compare to ensure transparency

Advanced Techniques

Serial compression:
  • Stage 1: Vocal Opto for smooth leveling
  • Stage 2: Drum VCA for aggressive control
  • Result: Complex, professional compression chain
  • Application: Lead vocals, bass, important elements
Parallel saturation:
  • Method: Process copy with heavy saturation, mix with dry signal
  • Benefits: Harmonic richness without losing clarity
  • Presets: Use Tape Squeeze for parallel processing
  • Result: Best of both worlds - clarity and warmth

Troubleshooting Common Issues

Problem: Too much saturation/distortion
Cause: Analog_Warmth too high or makeup gain too high
Solution: Reduce Analog_Warmth, reduce makeup gain, or raise threshold
Problem: Lost high-frequency detail
Cause: Heavy saturation rolling off highs
Solution: Reduce Analog_Warmth, use parallel processing, or EQ after compression
Problem: Pumping or breathing artifacts
Cause: Too fast release time or too low threshold
Solution: Increase time window, raise threshold, or reduce ratio
Problem: Not enough vintage character
Cause: Analog_Warmth too low or inappropriate preset
Solution: Increase Analog_Warmth, try different preset, or use serial processing

Algorithmic Extensions

Advanced Saturation Models

Circuit-Specific Emulation

Beyond basic tanh():

TUBE SATURATION ENHANCEMENT: output = tanh(x) + 0.1 × tanh(10 × x) Adds higher-order harmonics for tube character More complex harmonic structure TRANSFORMER SATURATION: output = x / sqrt(1 + x²) Gentle asymmetric saturation Transformer-like characteristics TAPE SATURATION: output = x / (1 + |x|) Asymmetric soft clipping Tape machine emulation DIODE SATURATION: output = (2 / (1 + e^(-2×x))) - 1 Diode-like transfer function FET compressor character Benefits: More specific vintage emulation Different circuits have different characteristics More authentic hardware modeling

Frequency-Dependent Saturation

Multi-band Warmth

Spectral saturation control:

FREQUENCY-DEPENDENT SATURATION: Approach 1: Pre-emphasis Boost highs before saturation Cut highs after saturation Creates high-frequency saturation without loss Approach 2: Multi-band saturation Split into frequency bands Apply different warmth to each band Recombine bands Example settings: Low band: High warmth for weight Mid band: Medium warmth for body High band: Low warmth for air Benefits: - Control saturation by frequency - Prevent high-frequency loss - More surgical vintage emulation - Professional results Implementation: Use Praat filtering before/after saturation

Advanced Time Constants

Vintage-Specific Timing

Hardware-accurate response:

OPTO-COMPRESSOR TIMING: Attack: 10ms (fixed) Release: Program-dependent (0.1-5s) Implementation: Look-up table based on signal characteristics VCA COMPRESSOR TIMING: Attack: 1-30ms (adjustable) Release: 0.1-1.1s (adjustable) Implementation: Separate attack/release constants FET COMPRESSOR TIMING: Attack: 20-800μs (very fast) Release: 0.05-1.1s (fast) Implementation: Ultra-fast response with overshoot VARIABLE-MU TIMING: Attack: 1-10ms (slow) Release: 0.5-5s (very slow) Implementation: Program-dependent release Benefits: More authentic vintage emulation Each compressor type has unique timing Creates more specific vintage character Professional-level modeling