System Processing
LinFIR provides global (system-wide) processing that applies corrections to the summed system response after all individual driver filters. This is available in both Loudspeaker Design and Room Calibration modes.
Global processing consists of two main components:
- Global FIR Correction Filter: Magnitude and phase correction of the summed system response
- Global IIR Filters: System-wide parametric EQ for room correction and final tuning
This page documents the global FIR correction filter. For global IIR filtering, see the corresponding section below.
Global FIR Correction Filter
The Global FIR Correction Filter corrects the summed system response using FIR filters. It applies after all individual driver filters are combined, providing final system-level magnitude and phase correction.
Access the global FIR correction window from the Drivers/Measurements column (Global FIR button in the Global Filters section).

When to Use Global Correction
Loudspeaker Design Mode:
- Correct summed driver response/entire loudspeaker
- Align final system response to target curves (Flat, Harman, Custom)
- Compensate for baffle diffraction effects on the combined response
- Final system voicing and tuning
Room Calibration Mode:
- Room correction applied to the averaged measurements
- Correct combined room + speaker response
- Export global correction for integration into DSP processors
💡 Tip: Use global correction for overall tonal balance, and system-wide frequency response issues. Use per-driver correction (in Loudspeaker Design mode) for individual driver resonances, breakup modes, or response irregularities.
Global FIR Filter Length
FIR Taps
- Range: 32 to 65,536 taps
- Controls: the length (and thus frequency resolution) of the global FIR correction filter
How to choose:
- Higher tap counts → better low-frequency resolution, longer processing latency
- Lower tap counts → lower latency, reduced low-frequency precision
⚠️ Latency Note: The global FIR filter’s latency depends on tap count, magnitude causality, and phase correction:
- Causality = 1.0 (minimum-phase) + no phase correction: ~0 latency (impulse at t ≈ 0)
- Causality = 0.0 (linear-phase): ~
ntaps/2samples latency (impulse centered)- Phase correction enabled: adds latency regardless of causality (shifts impulse to center)
For low-latency applications, use Causality = 1.0 and disable phase correction.
Export Padding
- Range: 0 to 65,536 taps
- Purpose: Add zero-padding to the exported FIR filter files only
Export padding does not affect internal processing—it only extends the exported FIR coefficients with zeros. This is useful for:
- Meeting minimum FIR length requirements of external DSP platforms
- Aligning export formats across multiple filters
Example: If the global FIR filter is 4096 taps and you set export padding to 512, the exported file will contain 4608 coefficients (4096 actual + 512 zeros).
FIR Compensation Delay
- Range: -100 to +100 ms
- Purpose: Fine-tune the alignment of the global FIR filter in the processing chain
This parameter shifts the global FIR filter in time relative to the driver FIR filters. It is not the primary timing alignment tool—use the Reference Timing feature for that.
Use Cases:
- Compensate for small timing misalignments introduced by FIR processing
- Adjust global FIR placement when mixing minimum-phase and linear-phase filters
💡 Tip: In most cases, leave this at 0 ms. Only adjust if you observe timing issues and ringing truncation in the impulse response.
Compensate FIR Delay on Graphs
- Toggle: Shift the impulse response left in plots to remove visual delay
When enabled:
- The impulse response plot shifts left by approximately
ntaps/2samples - The phase and group delay plots are also affected
- Exported filters are not modified
Purpose:
- Provides a clearer view of the aligned impulse response across drivers
- Useful for comparing driver responses without the visual offset from FIR latency
When to enable:
- When visually analyzing impulse alignment between drivers
- When comparing group delay and phase between the individual drivers and the sum
When to disable:
- When you need to see the true latency of the system
Magnitude Correction
The Magnitude Correction section corrects the frequency response (magnitude) of the summed system.
Enable Magnitude Correction
Toggle to enable/disable magnitude response correction independently from phase.
When disabled, magnitude correction settings are grayed out.
Calculation Point (Magnitude)
- Options:
pre-IIRorpost-IIR - Purpose: Choose where to measure the system response for magnitude correction
pre-IIR:
- Measures the system before global IIR filters
- Corrects the summed driver response (FIR crossovers + driver FIR corrections + driver IIR)
- Use when you want to correct the raw driver summation before applying IIR EQ
post-IIR:
- Measures the system after global IIR filters
- Corrects the final system response (drivers + global IIR)
- Use for final system tuning or room correction that accounts for global IIR EQ
💡 Tip: For room calibration, use
post-IIRto correct the final room + speaker response. For loudspeaker design, usepre-IIRto correct driver interactions before applying global voicing EQ.
Target Curve
- Button:
Configure - Purpose: Select and configure the target curve for magnitude correction
Clicking Configure opens the Target Curve Window where you can:
- Select Flat or Harman as base curves
- Add inflection points and shape the curve
The magnitude correction FIR filter will match the response to this target curve.
See the Target Curves section in the documentation for details on curve types and customization.
Resolution (Magnitude)
- Options:
1/48 octave,1/24 octave,1/12 octave,1/6 octave,1/3 octave - Purpose: Control the smoothing applied to the magnitude correction
Lower fractions (e.g., 1/48 oct) → finer detail, corrects small ripples
Higher fractions (e.g., 1/3 oct) → broader smoothing, corrects only major trends
How to choose:
- Room correction: Use
1/6 octaveor1/3 octaveto avoid over-correcting room modes (which vary with position) - Loudspeaker design: Use
1/12 octaveor1/24 octavefor detailed driver correction
⚠️ Warning: Very fine smoothing (1/48 oct) can lead to excessive correction of measurement noise. Use with caution.
Max Attenuation
- Range: 0 to 30 dB
- Default: 10 dB
- Purpose: Limit the maximum attenuation (cut) applied by magnitude correction
This parameter “cuts from the top”—it limits how much the correction filter can reduce peaks in the frequency response.
Why limit attenuation?
- Prevents excessive cuts that waste headroom
- Avoids over-correcting narrow resonances (which may not be audible)
- Maintains system efficiency
Example:
- If the system has a +15 dB peak at 200 Hz and Max Attenuation is set to 10 dB, the correction will cut only 10 dB (leaving a +5 dB peak)
Recommended values:
- Room correction: 10–15 dB (room modes can be large)
- Loudspeaker design: 6–10 dB (driver peaks are typically smaller)
Correction Gain
- Range: -20 to +20 dB
- Default: 4 dB
- Purpose: Add gain to the correction filter to compensate for attenuation and maintain system level
Magnitude correction typically attenuates peaks, which reduces overall loudness. Correction Gain adds a fixed boost to restore the level.
How to choose:
- Set Correction Gain to approximately match the average attenuation applied
- For example, if the correction cuts ~4 dB on average, set Correction Gain to +4 dB
💡 Tip: Adjust Correction Gain by observing the final system level after correction. Too much gain can cause clipping or driver damage; too little leaves the system quieter than before.
Kaiser β (Magnitude)
Range: 0.0 to 50.0
Default: 8.0
Kaiser windowing parameter for the magnitude correction FIR filter.
Effect:
- Lower values (3-5): Sharper correction BUT may increase ringing
- Moderate values (6-10): Good balance between precision and ringing suppression
- Higher values (12-20): Smoother correction, reduced ringing, but less precise
Recommendation: Start with default 8.0, decrease to 1-2 if ringing is not problematic.
Frequency Range (Magnitude)
- f_min (minimum frequency): Starting point for magnitude correction
- f_max (maximum frequency): Ending point for magnitude correction
- Fade-in/Fade-out: Smooth transitions at the boundaries
Purpose: Limit magnitude correction to a specific frequency range.
Example:
- Set
f_min = 40 Hzandf_max = 12,000 Hzto correct only mid-bass through mid-treble, leaving deep bass and extreme treble unaffected
💡 Tip: Avoid correcting frequencies outside the measurement’s reliable range. Measurement noise dominates at the extremes.
Causality (Magnitude)
Range: 0.0 (linear-phase) to 1.0 (minimum-phase)
Default: 1.0 (minimum-phase)
Controls the phase characteristic of the magnitude correction filter.
- 0.0 (Linear-phase): Symmetric pre- and post-ringing, constant group delay
- 1.0 (Minimum-phase): No pre-ringing, all energy is causal, variable group delay
Typical choice: 1.0 (minimum-phase) to avoid pre-ringing artifacts.
Why minimum-phase is preferred: Most acoustic and electronic systems are minimum-phase (magnitude and phase are coupled via Kramers-Kronig relations). Correcting magnitude with a minimum-phase filter automatically corrects the associated phase deviation, providing physically accurate correction. Use 0.0 (linear-phase) only if you specifically need constant group delay with a non-flat target curve and can tolerate pre-ringing.
Phase Correction
The Phase Correction section corrects the group delay and phase response of the summed system.
Enable Phase Correction
Toggle to enable/disable phase response correction independently from magnitude.
⚠️ Critical Limitation: Phase Correction vs. Low Latency
You cannot have both near-zero latency FIR filters AND active phase correction. This is a fundamental limitation, not a software bug.
Why this incompatibility exists:
Even if you configure your FIR magnitude correction with causality = 1.0 (minimum-phase, low latency), which positions the FIR impulse peak near t=0 (left-aligned), enabling phase correction will shift the combined FIR impulse peak to the center (around ntaps/2), introducing significant latency.
The reason is fundamental:
- Phase correction = temporal correction: Phase distortion is fundamentally a time-domain problem (different frequencies arriving at different times)
- To correct temporal defects, you need time: The filter needs temporal “space” before and after the main impulse to reposition frequency components correctly
- This requires centering the impulse: Phase correction filters must have headroom both before (pre-ringing) and after (post-ringing) the main signal to perform time-domain manipulations
- Result: The combined FIR impulse peak moves from t≈0 (low latency) to t≈ntaps/2 (high latency)
Practical impact:
- Without phase correction: Causality=1.0 filters → impulse peak at t≈0 → latency ≈ 0 samples
- With phase correction enabled: Impulse peak moves towards t≈ntaps/2 → latency ≈ ntaps/2 samples (e.g., 2048 samples at 48kHz = 42.7ms)
Recommended approach:
- For low-latency applications (live sound, PA, monitoring): Use causality = 1.0 on crossover/magnitude filters, disable phase correction, accept phase as-is
- For high-fidelity applications (studio monitors, reference systems): Use causality = 0.0 on crossover, 1.0 on magnitude filters, enable phase correction if needed, accept the latency
- For hybrid approach: Use moderate causality (0.3-0.7) for reduced latency with some phase correction capability (but still expect significant latency when phase correction is active)
Calculation Point (Phase)
- Options:
pre-IIRorpost-IIR - Purpose: Choose where to measure the system response for phase correction
pre-IIR:
- Measures phase before global IIR filters
- Corrects driver phase interactions (crossover phase shifts, driver delays)
- Use when global IIR has minimal phase impact
post-IIR:
- Measures phase after global IIR filters
- Corrects final system phase (including IIR phase shifts)
- Use for complete system phase linearization
💡 Tip: Phase and magnitude correction can use different calculation points. For example, use
pre-IIRfor magnitude (correct drivers) andpost-IIRfor phase (linearize final system).
Resolution (Phase)
- Options:
1/48 octave,1/24 octave,1/12 octave,1/6 octave,1/3 octave - Purpose: Control the smoothing applied to phase correction
Same principle as magnitude resolution:
- Finer smoothing (1/48 oct) → corrects small phase variations
- Coarser smoothing (1/3 oct) → corrects only major phase trends
Recommended values:
- Room correction: 1/6 or 1/3 octave
- Loudspeaker design: 1/12 or 1/24 octave
Intensity
- Range: 0% to 100%
- Default: 100%
- Purpose: Control the strength of phase correction
100%: Full phase correction (matches measured phase to target)
0%: No phase correction
50%: Half-strength correction (blend between measured and target phase)
Use Cases:
- Reduce intensity (e.g., 70–80%) if full phase correction introduces audible artifacts
- Use partial correction to preserve some driver phase characteristics
💡 Tip: Start with 100% and reduce intensity if the correction sounds unnatural.
Phase Offset
Range: -180° to +180°
Default: 0°
Phase offset applied to the filter’s phase response.
Purpose: Controls the symmetry of the impulse response by adjusting the phase offset. This allows fine-tuning the balance between pre-ringing and post-ringing in the time-domain response.
How it works:
- 0°: Default even symmetric behavior
- Positive/Negative offset: Shifts impulse response characteristics towards odd symmetry
Use case: Advanced parameter for optimizing impulse response symmetry in multi-driver systems.
Recommendation: Leave at 0° unless you have specific symmetry requirements and understand impulse response trade-offs.
Kaiser β (Phase)
Range: 0.0 to 50.0
Default: 1.0
Kaiser windowing parameter for the phase correction FIR filter.
Effect:
- Lower values (3-5): Sharper phase correction BUT may cause more ringing
- Moderate values (6-10): Good balance between precision and ringing artifacts
- Higher values (12-20): Reduced ringing BUT may introduce magnitude artifacts elsewhere in the spectrum
Recommendation: Start with default 1.0, increase to 12-15 if too much ringing appears.
Frequency Range (Phase)
- f_min (minimum frequency): Starting point for phase correction
- f_max (maximum frequency): Ending point for phase correction
Purpose: Limit phase correction to a specific frequency range.
Example:
- Set
f_min = 100 Hzandf_max = 10,000 Hzto correct only mid-bass through treble phase, leaving deep bass phase untouched
Use Cases:
- Avoid correcting phase at frequencies where group delay measurements are unreliable
- Avoid correcting phase outside speaker’s frequency response
Global IIR Filtering
In addition to global FIR correction, LinFIR provides Global IIR Filters for system-wide parametric EQ.
When to Use Global IIR
- Room correction EQ: Parametric filters to address specific room modes
- Final system tuning: Overall tonal balance adjustments (bass/treble tilt, voicing)
- Low taps count: IIR filters require less processing power, allowing easier low end correction with small DSP processors
💡 Tip: Use global IIR for low end corrections and global FIR for high frequencies correction.
Access Global IIR Window
Access the global IIR window from the Drivers/Measurements column (Global IIR button in the Global Filters section).
Manual vs. Auto EQ Tabs
The Global IIR window has two tabs, identical to the per-driver IIR system:
Manual Tab:
- Manually add/edit parametric filters (PEQ, low shelf, high shelf, etc.)
- Full control over frequency, gain, Q
- Lock individual filters to prevent Auto EQ from modifying them
Auto EQ Tab:
- Automatically generates IIR filters to match the system to a target curve
- Same parameters as driver Auto EQ:
- Gain Offset: Adjust overall target level
- EQ Boost Cap: Prevent excessive boost
- Frequency range, Q range, Filter count
Auto EQ (Global)
Global Auto EQ works on the summed system response after driver processing:
- Measures the final system (drivers + global FIR + global IIR)
- Generates IIR filters to match the selected target curve (Flat, Harman, Custom)
- Applies to the entire system (not per-driver)
Use Cases:
- Room correction: Auto EQ generates filters to correct room + speaker response
- Final voicing: Quick tonal adjustments without regenerating FIR filters
Locked Filters (🔒):
Individual filters can be locked to preserve them during operations:
- Lock toggle: Click the 🔓/🔒 icon next to any filter to lock/unlock it
- Protected from Clear: Locked filters are not deleted when clicking “Clear Filters”
- Protected from Auto EQ: Locked filters are not removed when regenerating Auto EQ
- Integration into Auto EQ:
- locked filters are integrated into the Auto EQ target curve
- The optimizer respects their frequency response instead of trying to compensate
Use Cases:
- Set a protective high-pass filter, lock it, then let Auto EQ optimize the rest
- Lock a low-pass filter for driver protection while auto-correcting midrange
- Preserve manually tuned filters while regenerating Auto EQ corrections
- Combine manual protective filters with automatic room correction
Example Workflow:
- Switch to Auto EQ tab
- Add protective filters (e.g., -24 dB/oct HP at 60 Hz, room mode notches) using ➕ Add Filter
- Lock them using the 🔒 icon
- Configure target curve (Flat, Harman, Custom)
- Click “Generate” to run Auto EQ optimization
- Review and adjust: Edit any auto-generated filter directly (frequency, gain, Q)
- Lock refined filters: Lock manually adjusted filters to preserve them
- Iterate: Regenerate Auto EQ as many times as needed—locked filters stay in place
- Result: Auto EQ creates corrective filters while respecting locked protective filters
📖 For detailed Auto EQ parameter descriptions, see the Driver Processing page (Auto EQ section). Global Auto EQ uses identical parameters.
Workflow Recommendations
Loudspeaker Design Mode
- Design individual driver filters (FIR crossovers, FIR corrections, IIR EQ)
- Verify summed system response (check for phase cancellations, comb filtering)
- Apply global FIR correction if needed:
- Correct driver interaction issues (dips, peaks from crossover summing)
- Match system to target curve (Flat, Harman)
- Add global IIR filters for final voicing (bass/treble tilt, room-specific adjustments)
- Export filters for DSP platform
Room Calibration Mode
- Measure room response at listening position
- Apply global FIR correction:
- Set resolution to 1/6 or 1/3 octave (avoid over-correcting room modes)
- Limit frequency range (e.g., 500–18,000 Hz)
- Set Max Attenuation to 10–15 dB
- Add global IIR filters for specific room modes (parametric notches)
- Re-measure and iterate if needed
- Export global correction filters for room DSP processor
💡 Best Practice: In room calibration mode, avoid excessive correction of room modes and deep nulls. Boosting these regions by more than 6-10 dB risks clipping, increased distortion, driver overexcursion, and potential damage. Use acoustic treatment for problematic modes instead of EQ.
Related Documentation
- Driver Processing: Per-driver FIR/IIR filtering (loudspeaker design mode)
- Global Settings: Application-wide filter processing defaults
- Target Curves: Configuring Flat, Harman, and Custom curves
- Export: Exporting filters for DSP platforms (input FIR vs. output FIR)
Summary
Global FIR Correction provides system-level magnitude and phase correction for:
- Loudspeaker Design: Correcting summed driver interactions and final system voicing
- Room Calibration: Correcting room + speaker response at the listening position
Key Features:
- Independent magnitude and phase correction with separate calculation points (pre-IIR/post-IIR)
- Adjustable resolution, frequency range, and causality for flexible correction strategies
- FIR compensation delay and graph compensation for fine-tuning alignment and visualization
Global IIR Filtering complements FIR correction with:
- Manual parametric EQ for precise corrections
- Auto EQ for automatic target curve matching
- Locked filters for hybrid manual/automatic workflows
Use global processing after per-driver processing to achieve final system performance targets.