Signal Flow
Understanding how audio flows through TabDSP's processing chain and why module order matters.
The Signal Chain
Default Order: INPUT → EQ → Multiband → Compressor → Limiter → OUTPUT
Analysis Taps
These taps read the signal at different points in the chain for display only — they run in parallel and don't affect the audio.
- Pre-EQ spectrum tap — FFT, 512 log-spaced bins, feeds the spectrum analyzer
- Post-EQ spectrum tap — same, shows the shaped signal after EQ
- Post-dynamics spectrum tap — same, after the last dynamics module (purple overlay)
- LUFS meter — ITU-R BS.1770-4 loudness measurement, parallel tap from output
Stereo Metering Taps
- Input stereo meters — FFT 256, L/R peak and RMS after input gain
- Output stereo meters — FFT 256, L/R peak and RMS after the limiter
- Read at ~30 fps, 256 samples per channel
Fixed vs. Draggable Modules
Fixed Modules (Always Same Position)
- INPUT: Must be first - normalizes incoming audio, removes DC offset, provides analysis taps
- LIMITER: Must be after dynamics - catches peaks from compression makeup gain, prevents clipping
- OUTPUT: Must be last - final gain control, LUFS measurement before destination
Draggable Modules (Reorderable)
- EQ: Frequency shaping with Linear Phase or M/S modes
- MULTIBAND: Frequency-dependent dynamics (3 or 4 bands)
- COMP: Full-band compression with sidechain filtering
How to reorder: Click and drag a module block's drag handle (three horizontal lines). Drop between connectors to change position. Module order is saved in presets and site overrides.
Why Order Matters
Different module orders create fundamentally different sounds. Here's why:
EQ Before Compression
Order: INPUT → EQ → COMP → LIMIT → OUTPUT
- What happens: You shape the frequency balance, THEN compress the shaped audio
- Result: Compressor reacts to post-EQ signal. Boosted frequencies trigger more compression.
- Use for: Corrective listening — fix frequency issues before leveling dynamics
- Example: Cut muddy 200Hz, then compress. Compressor won't pump from bass anymore.
Compression Before EQ
Order: INPUT → COMP → EQ → LIMIT → OUTPUT
- What happens: You level dynamics first, THEN shape tone
- Result: EQ doesn't affect compressor behavior. Cleaner separation of dynamics and tone.
- Use for: When you want compression to be frequency-agnostic
- Example: Compress evenly, then boost presence at 3kHz without changing compression behavior.
Multiband First
Order: INPUT → MB → EQ → COMP → LIMIT → OUTPUT
- What happens: Frequency-dependent dynamics control, then tonal shaping, then final glue
- Result: Multiband tames problem frequencies, EQ shapes overall tone, compressor glues it together
- Use for: Taming problem frequencies before shaping tone
- Example: De-ess with multiband (5-8kHz), EQ for warmth, final compression for consistency.
| Order | Best For | Character |
|---|---|---|
| EQ → MB → COMP | Corrective listening | Surgical, controlled, professional |
| COMP → EQ → MB | Clean separation | Dynamics are frequency-neutral; EQ shapes tone post-leveling |
| MB → EQ → COMP | Frequency control first | Aggressive control, broadcast-ready |
| EQ → COMP → MB | Vocal-focused content | Natural tone shaping with controlled dynamics |
Drag-and-Drop Reordering
How It Works
- Click and hold the drag handle (three horizontal lines) on any draggable module
- Drag the module left or right
- Visual feedback:
- Dragged module becomes semi-transparent
- Valid drop zones (connectors) highlight in green
- Invalid drop zones (adjacent to current position) dim
- Other modules shift to make room
- Drop on a connector to reorder
- Audio crossfades to new order (50ms, glitch-free)
Bypass Arcs
When a module is bypassed, an orange arc appears showing signal routing around it:
- Single bypass: U-shaped arc over one module
- Consecutive bypasses: Arc spans all bypassed modules in sequence
- Signal flows through bypass path, module processing is skipped (saves CPU)
▶ Gear Head Details: Modular Routing Architecture
TabDSP uses a module wrapper pattern for dynamic routing.
How modules stay isolated: Each module presents a single input and a single output, and internally carries two parallel paths between them — one that runs the audio through its processing and one that carries the same audio dry. Bypass is simply a crossfade between those two internal paths, which is why engaging or disengaging a module is click-free even under heavy processing. Modules connect edge-to-edge without peeking inside each other, so reordering or toggling one never alters what another module hears at its input.
How reordering happens without artifacts: When you drag a module to a new slot, the entire chain briefly crossfades down to a clean pass-through, the connections between modules are rewired in the new order, and the chain crossfades back up. The crossfade runs around 50 ms — long enough to suppress the discontinuity of rewiring, short enough that the transition feels instant to the ear.
What reordering actually does: When the new module order is committed, the chain is reassembled by walking the ordered list of draggable modules from the input tap outward, connecting each module's output to the next module's input in sequence. The final draggable module feeds the limiter, which sits in a fixed position at the end of the signal path regardless of how the draggable modules are arranged. This keeps the limiter as a guaranteed last line of defense on the master output while the rest of the chain stays freely reorderable.
Analysis Tap Points
TabDSP has multiple analysis taps that measure audio at different points in the signal chain. These run in parallel and don't affect the audio signal.
| Tap Point | Type | What It Measures | Used For |
|---|---|---|---|
| Input mono tap | FFT (4096) | Raw input after input gain | Input meter display |
| Pre-EQ spectrum tap | FFT (8192) | After DC removal, before EQ | Blue spectrum (pre-EQ, 512 log bins) |
| Post-EQ spectrum tap | FFT (8192) | After EQ, before dynamics | Orange spectrum (post-EQ, 512 log bins) |
| Post-dynamics spectrum tap | FFT (8192) | After the last dynamics module in the current order | Purple spectrum overlay (512 log bins) |
| Output mono tap | FFT (4096) | After all processing | Output meter |
| Input stereo meters (L / R) | FFT (256) | After input gain (parallel dead-end via channel splitter) | Independent L/R input peak/RMS metering |
| Output stereo meters (L / R) | FFT (256) | After the limiter (parallel dead-end via channel splitter) | Independent L/R output peak/RMS metering |
| LUFS meter | ITU-R BS.1770-4 | Parallel tap from the output (not in signal path) | LUFS loudness measurement (LUFS Stack) |
The purple spectrum (post-dynamics tap) reads the output of whichever dynamics module — Multiband or single-band Compressor — is last in the current module order. It reconnects automatically when modules are reordered via drag-and-drop. This shows the cumulative effect of all dynamics processing on the frequency spectrum.
State Persistence
Module order and bypass states are saved in:
- Global settings: Applies to all websites by default
- Site overrides: Per-website settings (enable "Site Override" toggle)
- Presets: Saved in custom and factory presets
- A/B comparison: Module order switches when toggling A/B
State format:
{
moduleOrder: ['eq', 'multiband', 'singleComp'],
moduleBypass: {
eq: false,
multiband: true, // Bypassed
singleComp: false
}
}