Graphic EQ
Surgical frequency shaping with real-time visual feedback
What It Does
The Graphic EQ is your frequency scalpel. See exactly what frequencies are happening in your audio with the real-time spectrum analyzer, then boost or cut with surgical precision. Up to 8 bands, each with independent frequency, gain, and Q (bandwidth) controls.
Think of it like adjusting the bass and treble knobs on a stereo, but with 8 knobs instead of 2, and you can see exactly what you're doing.
Start by clicking anywhere on the spectrum to add an EQ band. The spectrum shows what's actually in your audio—don't EQ blindly, let your ears and eyes work together.
When to Use EQ
- Fix harsh frequencies: That piercing "s" sound in vocals? Find it on the spectrum (usually 5-8 kHz) and cut it by 3-6 dB.
- Add warmth: Boost low frequencies (80-200 Hz) for fuller sound, but watch out for muddiness.
- Clean up rumble: Enable the High-Pass filter to remove unwanted low-end noise (AC hum, traffic, mic handling).
- Brighten dull audio: Boost high frequencies (8-12 kHz) for more "air" and clarity.
- Match reference tracks: Use Linear Phase mode to match your audio's frequency balance to professional mixes without introducing phase shift.
Using the EQ Interface
Spectrum Analyzer
The colored visualization shows your audio's frequency content in real-time. Lower frequencies (bass) on the left, higher frequencies (treble) on the right. Taller peaks mean more energy at that frequency.
- Blue spectrum: Pre-EQ (what's coming in)
- Orange spectrum: Post-EQ (what's going out)—enable "Overlay" to see both at once
- White curve: Your EQ's frequency response
- Control points: Colored dots you can drag to adjust frequency, gain, and Q
Adding and Removing Bands
- Double-click anywhere on the spectrum to add a band at that frequency
- Click a band point to open the floating control panel
- Delete button in the floating panel removes the selected band
- Up to 8 bands can be active simultaneously
Adjusting Bands
- Drag vertically: Adjust gain (boost/cut)
- Drag horizontally: Adjust frequency
- Scroll wheel: Adjust Q (bandwidth)—higher Q = narrower cut/boost
- Double-click a point: Reset band to 0 dB gain
▶ Gear Head Details: Filter Types and Q Factor
TabDSP uses cascaded biquad IIR filters (2nd-order) for each band. The filter type changes based on band position and settings:
- Peaking (Bell): Default for mid-frequency bands. Q controls bandwidth—typical range 0.2 to 12. A Q of 1.0 gives roughly ±1.5 octave bandwidth at -3 dB. Higher Q means narrower, more surgical cuts.
- Low Shelf: Available for low-frequency bands. Boosts/cuts all frequencies below the corner frequency. Q affects transition slope.
- High Shelf: Available for high-frequency bands. Boosts/cuts all frequencies above the corner frequency.
Filter comparison to hardware/plugins:
- FabFilter Pro-Q 4: TabDSP's bell filters are similar to Pro-Q's "Bell" shape at default Q. Our Q range (0.2-12) covers Pro-Q's wide to narrow settings.
- Waves SSL E-Channel: TabDSP's Digital mode is transparent like SSL's clean EQ section. Analog mode adds subtle harmonic warmth via waveshaping.
- UAD Pultec: For Pultec-style passive EQ curves, use Low/High Shelf types with moderate Q (around 0.7).
Processing Modes
Digital vs. Analog
Digital mode: Transparent, surgical precision. No added harmonics. Use when you want to fix problems without changing the character of the sound.
Analog mode: Adds subtle harmonic warmth via analog-modeled saturation before and after the EQ. Use when you want vintage console vibe.
▶ Gear Head Details: Analog Saturation Implementation
Analog mode adds two saturation stages:
- Input saturation stage: WaveShaper node with soft clipping curve applied before the biquad filters. Adds 2nd and 3rd harmonics to the input signal.
- Color low-pass filter: Gentle low-pass at 18 kHz to tame high-frequency harshness introduced by saturation.
Note: Linear Phase mode bypasses saturation entirely for maximum transparency.
Minimum Phase vs. Linear Phase
Minimum Phase (default): Fast, efficient, zero latency. Standard biquad filters like you'd find in most hardware EQs. Slight phase shift is normal and usually inaudible.
Linear Phase: Uses a 511-tap FIR filter to maintain phase coherence across all frequencies. Prevents phase smearing but introduces ~11ms latency. Use for mastering, surgical cuts, or when matching commercial tracks.
Linear Phase mode adds ~11ms latency due to the FIR filter's processing window. You'll see a latency indicator when enabled. This is unavoidable with phase-coherent processing.
▶ Gear Head Details: Linear Phase Implementation
TabDSP's Linear Phase mode uses a 511-tap FIR filter implemented in an AudioWorklet processor. The filter design process:
- Generate target magnitude response from EQ parameters (bands, gain, Q)
- Apply Kaiser window (β=5.0) for ~50dB stopband attenuation
- Compute FIR coefficients using frequency-sampling method with Kaiser windowing
- Convolve via FFT overlap-add (1024-point radix-2 Cooley-Tukey FFT)
Latency calculation: 511 taps / 2 = 255.5 samples. At 48kHz: 255.5 / 48000 ≈ 5.3ms processing + 5.3ms lookahead = ~10.6ms total.
CPU optimization: Coefficients are cached and only regenerated when EQ parameters change. A 20ms crossfade prevents clicks during coefficient updates.
Comparison to plugins:
- FabFilter Pro-Q 4: Uses similar FIR approach with variable tap count. TabDSP's 511 taps are comparable to Pro-Q's "Medium" quality setting.
- oeksound soothe2: Uses linear phase processing for resonance suppression. TabDSP's implementation is suitable for similar surgical correction work.
Mid/Side Processing
Process the center (Mid) and sides (Side) of your stereo image independently. Use this to:
- Widen vocals: Boost high frequencies in the Side channel
- Mono bass: Cut low frequencies in the Side channel to tighten bass
- De-ess sides: Cut harsh frequencies in the Side channel without affecting the center vocal
Use the M (Mid Solo) and S (Side Solo) buttons to hear just the center or just the sides. Great for checking mono compatibility (everything important should be clear in Mid) and stereo width (Side should add ambience, not core content).
▶ Gear Head Details: M/S Encoding
Mid/Side processing uses matrix encoding/decoding:
Encode (L/R → M/S):
- Mid = (L + R) / 2
- Side = (L - R) / 2
Decode (M/S → L/R):
- L = Mid + Side
- R = Mid - Side
TabDSP implements this using ChannelSplitter/ChannelMerger nodes and GainNodes for the matrix math. Two separate EQ chains process Mid and Side independently before decoding back to L/R.
Solo monitoring: When Mid Solo is active, the Side signal is muted at decode (Side gain = 0). When Side Solo is active, the Mid signal is muted. A pulsing warning banner reminds you solo is engaged.
High-Pass and Low-Pass Filters
High-Pass (HP): Removes frequencies below the cutoff. Use to eliminate rumble, mic handling noise, or tighten muddy low-end.
Low-Pass (LP): Removes frequencies above the cutoff. Use to tame harshness or create lo-fi effects.
▶ Common Settings and Filter Types
High-Pass common settings:
- Vocals: 80-120 Hz, 12-24 dB/oct
- Acoustic guitar: 80-100 Hz, 12 dB/oct
- Podcasts/voiceover: 100-150 Hz, 24 dB/oct (aggressive rumble removal)
Low-Pass common settings:
- Bass guitar: 8-10 kHz, 12 dB/oct (remove pick noise)
- Lo-fi effect: 3-5 kHz, 24-48 dB/oct (telephone/AM radio sound)
- General de-harsh: 12-16 kHz, 12 dB/oct (tame digital harshness)
Slope (dB/octave):
- 12 dB/oct: Gentle, musical. Sounds natural on most sources.
- 24 dB/oct: Moderate slope. Good balance of effectiveness and transparency.
- 36 dB/oct: Steep. More aggressive filtering, may sound unnatural.
- 48 dB/oct: Brickwall. Very aggressive, use for surgical removal only.
Filter Types:
- Butterworth (BW): Maximally flat passband. Standard, neutral response.
- Linkwitz-Riley (LR): -6 dB at cutoff, no peak. Used in crossovers. Slightly gentler transition.
▶ Gear Head Details: Higher-Order Filter Implementation
TabDSP achieves 12-48 dB/oct slopes by cascading 2nd-order biquad filters:
- 12 dB/oct: 1 stage (2nd-order)
- 24 dB/oct: 2 stages (4th-order)
- 36 dB/oct: 3 stages (6th-order)
- 48 dB/oct: 4 stages (8th-order)
Butterworth design: Each stage uses coefficients calculated for maximally flat passband response. Stages are cascaded in series.
Linkwitz-Riley design: Uses cascaded 2nd-order Butterworth stages with -3 dB point chosen such that magnitude response is -6 dB at crossover frequency. This ensures phase coherence when used with complementary LP/HP pairs.
Coefficient smoothing: When changing slope or cutoff frequency, filter coefficients are smoothed over 10ms using exponential ramps to prevent audible clicks.
Spectrum Analyzer Options
Overlay
Shows both pre-EQ (blue) and post-EQ (orange) spectrums simultaneously. Lets you see exactly what your EQ is doing to the frequency balance.
Peak Hold
Displays thin peak markers showing the highest level each frequency has reached. Useful for catching transient peaks that might not be visible in the smoothed spectrum. Click "Reset" to clear peak markers.
Post-Dynamics Overlay
When viewing the Multiband Compressor canvas, enabling the Overlay toggle shows a purple post-dynamics spectrum alongside the pre-EQ spectrum, revealing how multiband compression reshapes the frequency balance. This overlay is specific to the multiband view -- the EQ canvas shows pre-EQ (blue) and post-EQ (orange) spectrums only.
▶ Gear Head Details: Spectrum Analysis
TabDSP uses the browser's native AnalyserNode FFT with constant-Q power summation for spectrum analysis. This achieves professional-quality constant-Q resolution with zero JavaScript CPU overhead.
How it works: The browser's C++ audio engine computes an 8192-point FFT via AnalyserNode. TabDSP then maps the linear FFT bins into 512 logarithmically-spaced output bins using constant-Q power summation (Q=12), where overlapping FFT bins are weighted and summed to achieve constant relative bandwidth at every frequency.
TabDSP implementation:
- FFT engine: Native AnalyserNode (8192-point, C++ execution) — zero AudioWorklet overhead
- Output resolution: 512 log-spaced bins from 20 Hz to 20 kHz
- Q factor: Q=12 constant-Q power summation with overlapping band weighting
- Window: Blackman window with coherent gain compensation (+7.535 dB) for accurate absolute levels
- Data precision: Float32 float-precision frequency data (no byte quantization)
- Update rate: 60 fps for smooth visualization
- Smoothing: Asymmetric attack/release (0.3/0.85) for professional visual dynamics
- Tap points: 3 spectrum taps — pre-EQ (blue), post-EQ (orange), post-dynamics (purple overlay)
Comparison to plugins: Similar approach to FabFilter Pro-Q 4 and Voxengo SPAN — FFT with log-frequency mapping for constant-Q display.
Parameter Reference
| Parameter | Range | Default | Description |
|---|---|---|---|
| Frequency | 20 Hz - 20 kHz | 1 kHz | Center frequency of the EQ band |
| Gain | -18 dB to +18 dB | 0 dB | Boost or cut amount |
| Q | 0.2 to 12 | 1.0 | Bandwidth (higher = narrower) |
| Type | Peak, Low Shelf, High Shelf | Peak | Filter shape |
| HP Slope | 12/24/36/48 dB/oct | 12 dB/oct | High-pass filter steepness |
| LP Slope | 12/24/36/48 dB/oct | 12 dB/oct | Low-pass filter steepness |
| Mode | Digital, Analog | Digital | Processing character |
| Phase | Minimum, Linear | Minimum | Phase response type |
| Channel | Stereo, Mid, Side | Stereo | Processing channel(s) |
Common EQ Recipes
Starting points for common listening scenarios. Always use your ears and the spectrum analyzer together—every source sounds different.
▶ Show EQ Recipes (Podcast Voice, Music, De-Harsh, Bass Boost)
1. Podcast Voice Clarity
- HP at 100 Hz, 24 dB/oct (remove rumble)
- Cut 3-4 dB at 250-300 Hz (reduce muddiness)
- Boost 2-3 dB at 3-5 kHz (add presence/clarity)
- Cut 2-3 dB at 6-8 kHz if sibilance is harsh
2. Music Enhancement (General)
- Gentle boost at 60-80 Hz (add warmth)
- Slight cut at 200-400 Hz (reduce boxiness)
- Boost at 10-12 kHz (add air/sparkle)
- Use Overlay mode to compare before/after
3. De-Harsh / Tame Brightness
- Cut 3-6 dB at 4-6 kHz (harsh upper mids)
- Cut 2-4 dB at 8-10 kHz (harsh highs)
- LP at 16 kHz if extreme digital harshness
- Use narrow Q (4-8) for surgical cuts
4. Bass Boost (without mud)
- HP at 30-40 Hz (remove sub-bass rumble)
- Boost 4-6 dB at 60-80 Hz (low bass punch)
- Cut 2-3 dB at 200-300 Hz (reduce muddiness)
- If using M/S: Cut Side channel below 100 Hz (mono bass)