Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

LinFIR Documentation

Welcome to the official LinFIR documentation. LinFIR is a professional tool for designing FIR filters for loudspeaker crossovers and frequency response corrections.

Quick Navigation

About This Documentation

This documentation covers all aspects of LinFIR, from basic setup to advanced directivity analysis. Use the sidebar to navigate through different topics, or use the search function (top-left) to find specific information.

Accessing Documentation

You can access this documentation in several ways:

  • From within LinFIR: Select Help > Documentation from the menu bar or press H from any window
  • Online: Visit https://demaudio.com/doc/linfir/ for the latest version
  • Offline: LinFIR automatically serves embedded documentation locally when no internet connection is available

When you access documentation from within LinFIR, the application will:

  1. First attempt to open the online version
  2. If the online version is unreachable (no internet or timeout after 3 seconds), automatically fall back to the embedded local documentation server
  3. The local server runs on port 3030+ and serves the documentation directly from the application

This ensures you always have access to documentation, whether online or offline.

Safari Configuration (Mac OS)

⚠️ Important for Safari users on Mac OS: The local documentation server uses HTTP (not HTTPS) for localhost connections. To access the embedded local documentation in Safari, you need to:

  1. Open Safari > Settings (or Safari > Preferences)
  2. Go to the Security tab
  3. Disable the “Non-secure site connections” option

This allows Safari to connect to the local HTTP server running on http://localhost:3030+.

Alternative: If you prefer to keep Safari’s security settings unchanged, the online documentation at https://demaudio.com/doc/linfir/ is always available and uses HTTPS.


LinFIR - Precision FIR Filter Design for Speaker Crossovers and Corrections
Visit https://linfir.demaudio.com for updates and support

Overview

LinFIR is a professional audio software tool designed for precise FIR (Finite Impulse Response) and IIR (Infinite Impulse Reponse) filter design, tailored specifically for loudspeaker crossovers and frequency response correction. The application provides comprehensive control over both magnitude and phase response characteristics, enabling engineers and enthusiasts to craft high-quality audio filter solutions.

LinFIR Main Window LinFIR Main Window

Design Philosophy

LinFIR is designed to be both a filter creation tool and a DSP-faithful system simulator. It shows what the filters will actually do when applied to your measurements, not an idealized version.

What You See Is What You Get: LinFIR operates with real DSP constraints—impulse timing, causality, delay, phase rotation, and resampling effects all matter. The application does not silently recenter impulses or adjust phase for prettier graphs. What is displayed is what a real DSP would produce.

This approach requires some understanding of signal processing fundamentals, but LinFIR automates most technical decisions under the hood to keep the workflow practical. The trade-off is that results may sometimes look less “clean” than in tools that abstract away these constraints, but they are physically accurate and predictable.

Different by Design: LinFIR does not replicate the workflows or interface conventions of other tools. The internal DSP-like architecture drives both the workflow and presentation. This is intentional, the goal is to bring a time-domain perspective into DIY loudspeaker and room-correction work, not to replace existing approaches.

Understanding what LinFIR shows and why helps avoid confusion and makes the tool more effective for its intended purpose.

Dual Operating Modes

LinFIR offers two distinct modes of operation, each optimized for different workflows:

Loudspeaker Design Mode

This mode is dedicated to designing and optimizing multi-way loudspeaker systems. Key applications include:

  • Crossover design with multiple filter types
  • Individual driver frequency response correction
  • Phase and time alignment between drivers
  • Directivity pattern analysis and optimization
  • Complete system integration and tuning

Room Calibration Mode

Focused on in-room acoustic measurements and correction:

  • Multiple measurement position capture and averaging
  • Automatic temporal alignment using GCC-PHAT algorithm
  • Room response correction filter generation
  • Spatially-averaged frequency response optimization
  • Integration with existing room correction workflows

The mode is selected when creating a new project and remains fixed throughout the project’s lifetime. To switch modes, simply create a new project with the desired configuration.

Core Features

FIR Filter Design

LinFIR implements sophisticated FIR filtering with:

  • Configurable filter length: From 32 to 65536 taps for precise frequency resolution
  • Causality control: Continuous adjustment from pure linear-phase (0.0) to minimum-phase (1.0)
  • Multiple filter types: Brickwall (Sinc), Linkwitz-Riley, Butterworth, and Bessel characteristics
  • Kaiser window shaping: Fine-tune transition band characteristics

Frequency Response Correction

Advanced magnitude and phase correction capabilities:

  • Target curve options: Flat response, Harman in-room curve, or custom user-defined targets
  • Independent correction modes: Separate control for magnitude and phase correction
  • Frequency range limiting: Apply corrections only where needed
  • Maximum attenuation control: Prevent over-correction of deep nulls

IIR Filtering

Complement FIR filters with cascaded IIR sections:

  • Parametric EQ: Precise peak/notch filters for resonance control
  • Shelving filters: Low-shelf and high-shelf for tonal balance
  • Crossover filters: Butterworth, Linkwitz-Riley, and Bessel topologies
  • All-pass filters: Dedicated phase shaping without magnitude changes
  • Auto-EQ: Automatic optimization to target curves with configurable parameters

Measurement System

Built-in exponential sine sweep measurement for impulse response capture:

  • Configurable sweep parameters: Duration, amplitude, frequency range
  • Quality validation: Automatic rejection of poor captures
  • Microphone calibration: Import manufacturer calibration files for accurate measurements

Workflow Integration

LinFIR seamlessly integrates into professional audio workflows:

  • Import/export WAV, txt, and specialized formats
  • Direct export to Powersoft Armonia processors
  • Export FIR coefficients in binary, text, WAV or CSV format
  • Hypex FA Series amplifier configuration (HFD format)
  • CamillaDSP filter export
  • Comprehensive project management with auto-save

Platform Support

  • Mac OS: Full feature support with low-latency audio
  • Windows: Complete functionality with platform-specific audio optimizations
  • Cross-platform projects: Projects are fully compatible across platforms

Project Modes

LinFIR offers two specialized operating modes, each designed for specific audio engineering workflows. The mode is selected during project creation and determines the available features and interface elements throughout the project’s lifetime.

Loudspeaker Design Mode

Purpose

This mode is optimized for designing and analyzing multi-way loudspeaker systems. It provides comprehensive tools for crossover design, driver integration, and directivity analysis.

Key Features

  • Multi-driver support: Design systems with multiple drivers (subwoofers, woofers, midranges, tweeters)
  • Crossover: FIR and IIR crossover filters with various types
  • Driver correction: Individual magnitude and phase correction for each driver
  • Directivity tools: Analyze off-axis response and polar patterns (license required)
  • Complete export: Export individual driver filters, global filters, and HFD configurations

Loudspeaker Design Mode Loudspeaker Design Mode

Typical Workflow

  1. Create a new Loudspeaker Design project
  2. Import or measure impulse responses for each driver
  3. Design crossover filters (low-pass, high-pass)
  4. Apply frequency response corrections
  5. Analyze summed system response
  6. Export filters for DSP implementation

When to Use

  • Designing passive loudspeaker conversions to active DSP
  • Optimizing existing multi-way systems
  • Analyzing driver interactions and phase relationships
  • Creating custom crossover
  • Performing anechoic or quasi-anechoic measurements

Room Calibration Mode

Purpose

Dedicated to in-room acoustic measurements and correction filter generation. This mode focuses on capturing multiple measurement positions, aligning them temporally, and creating averaged correction filters.

Key Features

  • Multiple measurement positions: Capture IRs at different listening locations
  • Automatic temporal alignment: GCC-PHAT algorithm aligns measurements
  • Spatial averaging: Creates averaged response across measurement positions
  • Global correction only: Simplified interface focused on room correction
  • Streamlined export: Export only global correction filters

Room Calibration Mode Room Calibration Mode

Typical Workflow

  1. Create a new Room Calibration project
  2. Configure sweep output channel
  3. Capture measurements at 3-5 different listening positions
  4. Measurements are automatically aligned using GCC-PHAT
  5. Design global correction filters (FIR and/or IIR)
  6. Export correction filters for room EQ implementation

UI Adaptations

When in Room Calibration mode, the interface adapts to focus on relevant features:

  • Disabled: Directivity analysis tools (not applicable to room measurements)
  • Simplified: Filter graphs show only global filters
  • Restricted: Export options limited to global correction filters
  • Hidden: Individual driver processing controls

Export Restrictions

Room Calibration projects export only:

  • Global FIR correction filter (if enabled)
  • Global IIR filters (Manual or Auto-EQ)

The following exports are disabled:

  • HFD config export
  • Detailed reports (TXT/PDF)
  • Individual driver filters

This ensures clean, focused output for room correction workflows.

When to Use

  • Correcting in-room frequency response
  • Creating stereo-linked or mono room correction
  • Working with existing loudspeaker systems
  • Integrating with convolution engines

Mode Selection

Creating a New Project

Project mode is selected via File → New Project:

  1. Click “New Project”
  2. Choose between “Loudspeaker Design” and “Room Calibration”
  3. Configure initial project settings (sample rate, filter length, etc.)
  4. Begin working in the selected mode

Mode Permanence

⚠️ Important: Once a project is created, its mode cannot be changed. The mode is permanently associated with the project file.

To work in a different mode:

  1. Save your current project (if needed)
  2. Create a new project with the desired mode
  3. Import measurements or data as required

Choosing the Right Mode

Use Loudspeaker Design Mode when:

  • Designing crossovers for multi-driver systems
  • Analyzing individual driver characteristics
  • Performing directivity analysis
  • Exporting filters to Hypex FA amplifiers
  • Working with anechoic or quasi-anechoic data

Use Room Calibration Mode when:

  • Correcting in-room frequency response
  • Creating averaged room correction filters
  • Working with existing complete loudspeaker systems
  • Focusing on global system correction only

Best Practices

Room Calibration Mode

  • Measurement count: Capture 3-5 measurements at different positions
  • Position spacing: Keep positions within 30-50 cm of main listening area
  • Height consistency: Use consistent microphone height across measurements
  • Reference position: First measurement should be at primary listening position
  • Correction philosophy: Apply gentle correction, avoid over-equalization
  • Deep nulls: Don’t attempt to fill room mode nulls below 300 Hz
  • Phase type: Consider minimum-phase FIR for reduced latency
  • Acoustic treatment: Combine with room treatment for best results

Loudspeaker Design Mode

  • Measurement quality: Use anechoic or quasi-anechoic measurements when possible
  • Windowing: Gate reflections using IR time windowing
  • Alignment: Align drivers using time delay controls, not FIR compensation delay
  • Crossover design: Start with appropriate crossover frequencies and filter slopes
  • Phase analysis: Monitor phase relationships between drivers
  • Directivity: Capture multiple angles for comprehensive analysis (license required)

Mode Comparison Table

FeatureLoudspeaker DesignRoom Calibration
Multi-driver support❌ (single “system”)
Individual driver filters
Global filters
Directivity analysis✅ (license)
Multiple measurements
Automatic alignment✅ (GCC-PHAT)
HFD export
IIR filter export
Detailed reports
THD analysis

Graph Interaction & Display

This section covers all interactive features, display controls, and analysis tools available when working with LinFIR’s graphs.


Graph Toolbar

The graph toolbar provides comprehensive controls for selecting which data to display and how to visualize it. The toolbar adapts based on the project mode (Loudspeaker Design vs Room Calibration).

Loudspeaker Design Mode:

Graph Toolbar - Loudspeaker Design Mode Graph Toolbar - Loudspeaker Design Mode

Room Calibration Mode:

Graph Toolbar - Room Calibration Mode Graph Toolbar - Room Calibration Mode

Display Mode Selection

Purpose: Choose which stage of the signal processing chain to visualize.

Available modes:

  • FIR - FIR filter responses only (crossovers, magnitude/phase correction)
  • IIR - IIR filter responses only (parametric EQ, shelves, crossovers)
  • FIR+IIR - Combined FIR and IIR responses
  • Drivers (Loudspeaker Design) / Measurements (Room Calibration) - Full signal chain applied to driver or room measurements (theoretical system response)

Keyboard shortcuts:

  • Press F to cycle through filter modes (FIR → IIR → FIR+IIR)
  • Press D to switch to Drivers/Measurements mode

Mode behavior:

  • Loudspeaker Design mode: Shows individual driver filters plus global filters
  • Room Calibration mode: Shows only global filters in FIR/IIR/FIR+IIR modes

See Display Modes section below for detailed explanations of each mode.

Graph Visibility Toggles

Purpose: Show or hide specific graph types.

Available graphs:

  • Magnitude (M) - Frequency response in dB
  • Phase (P) - Phase response in degrees
  • Group Delay (G) - Group delay in milliseconds
  • Impulse (I) - Impulse response in time domain
  • Step (T) - Step response in time domain
  • THD (K) - Total Harmonic Distortion (Loudspeaker Design mode only)

Each button toggles visibility of the corresponding graph. Letters in parentheses indicate keyboard shortcuts.

Note: THD is only available in Loudspeaker Design mode with Drivers display mode active, as harmonic distortion analysis is not applicable to in-room measurements.

Angle Selector (Loudspeaker Design mode only)

Purpose: Select which off-axis measurement angle to display when drivers have directivity data.

  • Horizontal angles: Typically ±15°, ±30°, ±45°, ±60°, ±75°, ±90°
  • Vertical angles: Same as horizontal
  • Toggle H/V: Switch between horizontal and vertical axis selection

Only available when at least one driver has off-axis measurements. The selector is hidden in Room Calibration mode as directivity analysis is specific to anechoic/quasi-anechoic loudspeaker measurements.

See Directivity Analysis for complete details on polar measurements and analysis.

Visualization Options

Normalize

Purpose: Scale impulse and step responses to ±1 range for easier comparison.

When enabled:

  • Impulse responses normalized to peak amplitude = 1
  • Step responses normalized to maximum value = 1
  • Useful for comparing relative timing and shape without amplitude differences

Sum Focus

Purpose: Emphasize the combined system response while dimming individual curves.

  • Loudspeaker Design: Highlights the summed driver output at listening position
  • Room Calibration: Highlights the averaged response across measurement positions
  • Individual curves remain visible but with reduced opacity
  • Useful for evaluating overall system performance

Unwrap Phase

Purpose: Display continuous phase response without ±180° wrapping discontinuities.

  • Disabled: Phase wraps at ±180° (sawtooth pattern)
  • Enabled: Phase continues beyond ±180° showing true accumulated phase shift
  • Essential for analyzing linear phase filters and group delay
  • Makes phase response easier to interpret across wide frequency ranges

Time-Centered Phase

Purpose: Remove linear phase component (constant group delay) from phase responses.

  • Disabled: Phase includes linear delay component
  • Enabled: Linear phase component subtracted via regression, flattening phase around 0°
  • Highlights phase alignment issues without bulk delay obscuring differences
  • See Time-Centered Phase section below for detailed algorithm and use cases

Smoothing

Purpose: Apply fractional-octave smoothing to magnitude, THD, directivity and group delay plots.

Smoothing options:

  • None, 1/48, 1/24, 1/12, 1/6, 1/3 octave (higher = more smoothing)

Applies to:

  • Magnitude (frequency response)
  • Group delay
  • THD (Total Harmonic Distortion)
  • Directivity sonograms

Does not affect: Phase or time-domain plots (impulse, step response)

Note: Smoothing is cosmetic and does not affect filter calculations or exports. See Fractional Octave Smoothing section below for detailed behavior.


Mouse & Trackpad Controls

Zoom Controls

Zoom In - Multiple methods:

  • Box zoom: Right-click and drag to select a region
  • Trackpad pinch: Pinch gesture to zoom in/out
  • Mouse wheel: Scroll to move the view within a graph

Zoom Out:

  • Double-click anywhere on a graph to reset to auto-calculated bounds
  • Double-click re-enables auto-bounds mode (graphs automatically adjust to data range)

Pan

Left-click and drag to move the view within a zoomed graph.

Legend Interaction

Click on color dots in the legend to show/hide individual curves:

  • Hidden curves are grayed out in the legend
  • Click again to show the curve
  • Useful for isolating specific drivers or filters

Detach Graphs

Right-click on any graph to open it in a separate window:

Open in Separate Window Open in Separate Window

  • All graph types supported (Frequency, Phase, Group Delay, Impulse, Step, THD)
  • Detached windows render in real-time following the active display mode
  • Multiple graphs can be opened simultaneously for side-by-side comparison
  • Ideal for multi-monitor setups and detailed analysis workflows
  • Close detached windows: Cmd+W (macOS) / Ctrl+W (Windows)

Detached Graphs Example Detached Graphs Example


Display Modes

Project Mode Impact

LinFIR supports two project modes that affect display terminology:

  • Loudspeaker Design - Speaker design with drivers
  • Room Calibration - Multi-position measurements for room correction

In Room Calibration mode:

  • “Drivers” mode is renamed to “Measurements”
  • Individual measurement curves are shown in Measurements mode
  • Filter modes (FIR/IIR/FIR+IIR) display only global filters

In Loudspeaker Design mode:

  • “Drivers” mode displays individual drivers
  • Filter modes show both per-driver filters and global filters

Filters vs. Drivers/Measurements Mode

Filters Mode (Keyboard: F):

  • Shows individual filter responses (FIR, IIR, or FIR+IIR combined)
  • Press F multiple times to cycle through filter submodes:
    • FIR Filters - Shows only FIR filter responses
    • IIR Filters - Shows only IIR filter responses
    • FIR+IIR Filters - Shows combined FIR and IIR responses
  • Loudspeaker Design: Per-driver crossover and correction filters displayed separately
  • Room Calibration: Only global filters are shown
  • Global filters shown as additional curves
  • Useful for analyzing filter design and frequency response shaping

Drivers/Measurements Mode (Keyboard: D):

  • Loudspeaker Design: Shows combined driver + filter responses (acoustic output)
    • Each curve represents the complete signal chain for that driver
    • Sum curve shows the total system response at listening position
  • Room Calibration: Shows individual measurement positions and averaged response
    • Each curve represents a raw measurement location (no filters applied)
    • Sum curve shows the averaged response with global filters applied
  • Useful for analyzing final acoustic performance

Graph Visibility Toggles

Show/hide individual graph types using keyboard shortcuts:

  • M - Toggle Magnitude (Frequency Response) plot
  • P - Toggle Phase Response plot
  • G - Toggle Group Delay plot
  • I - Toggle Impulse Response plot
  • T - Toggle Step Response plot
  • K - Toggle THD (Total Harmonic Distortion) plot

X-Axis Synchronization

Toggle: X key or toolbar button

When enabled, Sync X-axis synchronizes the horizontal axis across related plots:

Frequency Plots (Magnitude, Phase, Group Delay, Directivity Sonograms):

  • All plots share the same frequency range
  • Zooming any plot updates all frequency plots simultaneously
  • Double-click resets all frequency plots to full range

Time Plots (Impulse, Step Response):

  • All time-domain plots share the same time range
  • Zooming any plot updates all time plots simultaneously
  • Double-click resets all time plots to full range

Independent Y-Axes:

  • Each plot maintains its own vertical scale
  • Y-axis auto-bounds independently for each graph type

Use Cases:

  • Compare magnitude and phase behavior at the same frequency
  • Analyze impulse and step response in the same time window
  • Maintain consistent zoom across multiple graph types

Impulse & Step Response Normalization

Toggle: N key or toolbar button

Normalizes impulse and step responses to peak amplitude = 1.0:

Purpose:

  • Allows visual comparison between responses with different amplitudes
  • Focuses on filter shape and time-domain characteristics
  • Eliminates gain differences for easier visual analysis

Effect:

  • All IR and SR curves are scaled to the same peak height
  • Does not affect magnitude or phase plots
  • Purely visual - does not modify underlying data

Use Cases:

  • Compare filter shapes between drivers with different sensitivity
  • Analyze time-domain behavior without gain differences obscuring details
  • Identify pre-ringing or timing issues across multiple drivers

Sum Focus Mode

Toggle: S key or toolbar button (Drivers/Measurements mode only)

Synchronizes the time window of all temporal plots (Impulse & Step Response) to the Sum/Average curve boundaries:

How it Works:

  1. Analyzes the Sum/Average impulse response to find its energy boundaries
  2. Detects first and last samples above -60 dB threshold (1/1000th of peak)
  3. Adds configurable margins before and after the detected energy region
  4. Applies the same time window to all temporal plots (both Impulse and Step Response)
  5. Enables auto-bounds for all time plots

Behavior:

  • Requires at least 2 active curves to activate (otherwise ignored)
  • Focuses all temporal plots on the main acoustic energy of the Sum/Average response
  • Individual driver/measurement curves are zoomed to the same time window as the sum
  • Easier to compare arrival times and transient behavior across all curves
  • Works with adaptive display mode margins (configurable in Settings)

Use Cases:

  • Loudspeaker Design: Quickly identify timing alignment issues across drivers
    • See if all drivers arrive within the sum’s main energy window
    • Detect delays or misalignment relative to system response
  • Room Calibration: Focus on the averaged room response energy region
    • Compare individual measurement positions to the average response timing
    • Identify room reflections within the main energy window
  • Eliminate clutter from pre-ringing or tail noise outside the main energy region

Only available in Drivers/Measurements Mode (not applicable to individual filters).

Note: Works in both Loudspeaker Design and Room Calibration project modes when display mode is set to Drivers/Measurements.


Phase Display Options

Unwrap Phase

Toggle: U key or toolbar button

Controls phase display format:

Wrapped Phase (default):

  • Phase values constrained to ±180°
  • Shows discontinuities (phase wraps) at ±180° boundaries
  • Easier to read for simple filters
  • Standard display format for most audio applications

Unwrapped Phase:

  • Continuous phase values extending beyond ±180°
  • Shows total accumulated phase shift
  • Useful for analyzing group delay trends and overall phase shift

Note: Group delay is always computed from unwrapped phase internally. The Unwrap toggle only affects phase display, not group delay accuracy.

Time-Centered Phase

Toggle: C key or toolbar button (next to Unwrap Phase)

Removes the linear phase component (constant group delay) from phase responses:

Algorithm:

  • Computes linear phase slope from IR peak position for all curves (drivers and filters)
  • Subtracts the constant group delay (linear phase shift)
  • Flattens phase around 0° while preserving relative phase differences
  • Works with both wrapped and unwrapped phase display modes

In Loudspeaker Design Mode (Drivers):

When multiple speakers are active:

  • Removes the linear delay of the Sum curve from all responses
  • Centers all driver phases around 0° relative to the system response
  • Highlights phase alignment issues between drivers
  • Makes phase differences visible without bulk delay obscuring them

When single driver is active:

  • Removes the linear component of that driver’s phase
  • Flattens phase around 0° to show only non-linear phase shifts

In Room Calibration Mode (Measurements):

  • Independent correction: Removes the linear phase component of each individual measurement independently
  • No shared reference - each measurement position is treated separately
  • Flattens each measurement’s phase around 0°
  • Useful for comparing phase behavior across different room positions without timing offsets
  • The averaged curve also has its own linear component removed

In Filters Mode (FIR, IIR, FIR+IIR):

  • Per-filter correction: Removes the linear phase component of each individual filter
  • Flattens each filter’s phase around 0°
  • Reveals only non-linear phase rotations introduced by the filter
  • Useful for analyzing filter phase behavior independent of bulk delay

Use Cases:

  • Identify phase alignment issues between drivers without delay obscuring differences
  • Visualize phase rotations introduced by filters (independent of linear delay)
  • Compare filter phase characteristics across different designs
  • Verify minimum-phase vs. linear-phase behavior

Fractional Octave Smoothing

Control: Dropdown menu in toolbar (1/48 oct to 1/3 oct, or “None”)

Apply smoothing to reduce measurement noise and reveal trends:

Smoothing Width:

  • No smoothing - Show raw response (no averaging)
  • 1/48 octave - Very fine smoothing (highest detail)
  • 1/24 octave - Fine smoothing
  • 1/12 octave - Moderate smoothing (default)
  • 1/6 octave - Coarse smoothing
  • 1/3 octave - Very coarse smoothing (lowest detail)

Effect:

  • Wider smoothing = smoother curves, less detail
  • Narrower smoothing = more detail, more noise visible

Applies to:

  • Frequency response (magnitude), THD, Directivity Sonograms and group delay plots
  • Does not affect phase, time-domain plots

Note: Smoothing is applied after all processing (filters, crossovers, correction). It affects display only, not exported data. It can also alter crossover slopes on the graphs.


Impulse Response Analysis

Automatic Pre-Ringing Detection

When hovering over impulse response curves, LinFIR displays additional analysis information:

Pre-ring Level (in dB relative to peak):

  • Weighted RMS measurement of signal energy before the main peak
  • Analysis stops at the last zero-crossing before peak (excludes rising edge)
  • Uses Hilbert envelope to capture perceptible energy regardless of phase
  • Perceptually weighted: energy closer to the peak is less penalized (temporal masking)
  • Displayed as: Pre-ring: -50.0 dB (Likely masked)

Algorithm Details:

  1. Find the impulse peak position and amplitude
  2. Find the last zero-crossing before the peak (to exclude the rising edge)
  3. Extract the pre-ringing region (from start to zero-crossing)
  4. Calculate the Hilbert envelope of the pre-ringing region
  5. Apply sigmoid weighting (closer to peak = less perceptual penalty)
    • Masking time at 50% penalty: 0.6 ms (default)
    • Weight floor: 0.2 (minimum weight for distant pre-ring)
    • Weight ceiling: 1.0 (maximum weight for near-peak pre-ring)
  6. Calculate weighted RMS of the envelope
  7. Convert to dB relative to peak amplitude

Weighting Rationale:

  • Pre-ringing close to the peak is masked by the main transient (temporal masking)
  • Pre-ringing far from the peak is more audible (less masking)
  • Sigmoid function models gradual transition from masked to unmasked

Risk Assessment Labels

Pre-ringing levels are classified based on typical perceptual thresholds (indicative):

Level (dB)Risk AssessmentDescription
≤ -36 dBLikely maskedGenerally inaudible, masked by main transient
-36 to -24 dBLow riskMay be perceptible in some cases (quiet passages)
-24 to -12 dBModerate riskLikely perceptible depending on program material
> -12 dBHigh riskPotentially objectionable, consider reducing filter length

Important Notes:

  • These are indicative estimates, not absolute rules
  • Actual audibility depends on:
    • Program material (transient-rich vs. sustained tones)
    • Listening level
    • Individual hearing sensitivity
    • Room acoustics and background noise
  • Use as a guideline for filter design, not strict limits
  • Shorter FIR filters or increased causality reduce pre-ringing at the cost of magnitude and phase accuracy

Trade-offs:

  • Longer FIR filters → More pre-ringing, better magnitude/phase accuracy
  • Shorter FIR filters → Less pre-ringing, reduced correction capability
  • Higher causality (e.g., minimum-phase) → Less pre-ringing, potential phase distortion
  • Linear-phase (causality = 0) → Maximum pre-ringing, linear phase

Auto-Bounds Behavior

LinFIR automatically adjusts graph bounds to fit data:

Auto-Bounds Enabled (default):

  • Graphs automatically scale to show all data
  • Y-axis adjusts when switching between drivers or display modes
  • X-axis adjusts based on data range (frequency or time)

Auto-Bounds Disabled (after user interaction):

  • Manual zoom/pan disables auto-bounds for that axis
  • Graph retains user-specified bounds
  • Switching modes preserves manual bounds
  • Double-click re-enables auto-bounds and resets to calculated range

Per-Axis Independence:

  • X-axis and Y-axis auto-bounds are independent
  • Dragging vertically disables Y auto-bounds, preserves X auto-bounds
  • Dragging horizontally disables X auto-bounds, preserves Y auto-bounds
  • Box zoom (right-click drag) disables both X and Y auto-bounds

Per-Graph Independence:

  • Each graph type has independent auto-bounds state
  • Zooming Frequency plot does not affect Impulse plot
  • Switching between display modes preserves per-graph bounds

Keyboard Shortcuts Summary

Display Modes

  • F - Switch to Filters display mode
  • D - Switch to Drivers/Measurements display mode

Display Controls

  • X - Toggle X-axis synchronization
  • N - Toggle normalize impulse and step responses
  • U - Toggle unwrap/wrap phase response
  • C - Toggle time-centered phase
  • S - Toggle focus on summed impulse response (Drivers/Measurements mode only)
  • R - Toggle Directivity Sonogram window (Loudspeaker Design mode only, requires license)

Graph Visibility

  • M - Toggle Magnitude Response plot
  • P - Toggle Phase Response plot
  • G - Toggle Group Delay plot
  • I - Toggle Impulse Response plot
  • T - Toggle Step Response plot
  • K - Toggle THD (Klirr/Distortion) plot

Keyboard Shortcuts

This is a comprehensive reference of all keyboard shortcuts available in LinFIR.

Note: On macOS, use Cmd (⌘). On Windows/Linux, use Ctrl.


File Operations

ShortcutActionDescription
Cmd+S / Ctrl+SSave ProjectSaves the current project to disk. If no file path exists, prompts for location (Save As).
Cmd+E / Ctrl+EExport ProjectOpens file dialog to export project as a new .lnf file (Save As).

Context:

  • Works in main window and all detached windows
  • Disabled when text input fields have focus (to avoid conflicts)
  • Auto-save runs every 60 seconds in the background (if enabled)

Window Operations

ShortcutActionDescription
Cmd+, / Ctrl+,Open SettingsOpens the Settings window. If already open, brings it to front.
Cmd+W / Ctrl+WClose WindowCloses the currently focused window (detached graphs, dialogs, etc.). Does not close main window.
HToggle DocumentationOpens/closes the embedded documentation browser (localhost:3030).

Context:

  • Cmd+W works in detached graph windows, driver IR windows, HFD export window, etc.
  • Cmd+, is a system-wide shortcut to access application settings
  • H toggles documentation visibility globally

Display Modes

ShortcutActionDescription
DDrivers ModeSwitches to Drivers display mode (combined driver + filter responses).
FFilters ModeCycles through filter display modes: FIR → IIR → FIR+IIR → FIR.

Behavior:

  • D: Shows acoustic output (driver impulse + all filters applied)
  • F: Shows individual filter responses
    • First press: FIR filters only
    • Second press: IIR filters only
    • Third press: FIR+IIR combined
    • Fourth press: Back to FIR filters

Context: Only active when no text input has focus.


Display Controls

ShortcutActionDescription
XSync X-AxisToggles X-axis synchronization across related plots (frequency plots and time plots).
NNormalize IR/SRNormalizes impulse and step responses to peak amplitude = 1.0 for visual comparison.
UUnwrap PhaseToggles between wrapped (±180°) and unwrapped (continuous) phase display.
CTime-Centered PhaseRemoves linear phase component (constant group delay) from phase responses.
SSum FocusFocuses on summed impulse boundaries for all time plots (Drivers mode only).

Details:

  • X (Sync X-Axis):

    • Frequency plots (Magnitude, Phase, Group Delay) share X-axis
    • Time plots (Impulse, Step) share X-axis
    • Y-axes remain independent
  • N (Normalize):

    • Visual only - does not affect exported data
    • Useful for comparing filter shapes with different gains
  • U (Unwrap Phase):

    • Wrapped: phase constrained to ±180° (discontinuities)
    • Unwrapped: continuous phase beyond ±180° (smooth)
  • C (Time-Centered Phase):

    • Removes linear phase (constant group delay) via linear regression
    • Flattens phase around 0° to show only non-linear behavior
    • In Drivers mode: removes Sum curve delay from all responses
    • In Filters mode: per-filter linear phase removal
  • S (Sum Focus):

    • Only available in Drivers mode
    • Calculates time boundaries from summed impulse
    • Auto-enables auto-bounds for all time plots

Context: Only active when no text input has focus.


Graph Visibility Toggles

ShortcutActionDescription
MToggle MagnitudeShows/hides frequency response (magnitude) plot.
PToggle PhaseShows/hides phase response plot.
GToggle Group DelayShows/hides group delay plot.
IToggle ImpulseShows/hides impulse response plot.
TToggle StepShows/hides step response plot.
KToggle THDShows/hides THD (Total Harmonic Distortion) plot.

Behavior:

  • Each toggle is independent
  • State persists across sessions (saved in project)

Context: Only active when no text input has focus.


Advanced Features

ShortcutActionDescription
RToggle Directivity SonogramOpens/closes directivity sonogram window (Loudspeaker Design mode only, valid license required).

Requirements:

  • R only works in Loudspeaker Design mode (not Room Calibration)
  • Requires valid license
  • Opens directivity analysis window with frequency-angle sonograms

Context: Only active when no text input has focus.


Undo/Redo

ShortcutActionDescription
Cmd+Z / Ctrl+ZUndoReverts the last change (filter, gain, delay, etc.).
Cmd+Shift+Z / Ctrl+Shift+ZRedoRe-applies the last undone change.

Behavior:

  • Full project state snapshots
  • Limited undo history to 10 snapshots (constrained by memory)
  • Works in main window and all viewport windows (Driver IR, HFD export, etc.)

Context: Disabled when text input fields have focus.


Dialog-Specific Shortcuts

Shortcut Contexts

LinFIR disables shortcuts based on context to avoid conflicts:

When Text Input Has Focus

The following shortcuts are disabled when typing in text fields (IR names, filter frequencies, etc.):

  • All single-letter shortcuts (D, F, M, K, G, I, T, P, U, C, X, S, N, R, H)
  • Undo/Redo (Cmd+Z, Cmd+Shift+Z)
  • Save/Export (Cmd+S, Cmd+E)
  • Settings (Cmd+,)

Still active:

  • Close window (Cmd+W)

When Any Input Window is Open

Certain shortcuts are disabled when modal dialogs or input windows are open:

  • Save (Cmd+S)
  • Export (Cmd+E)

This prevents accidental saves while configuring settings or importing files.


Platform-Specific Notes

macOS

  • Use Cmd (⌘) for all modifier shortcuts
  • Cmd+W closes windows but not the main application window
  • Cmd+Q quits the application (system shortcut)
  • Cmd+, is the standard macOS shortcut for Preferences/Settings

Windows/Linux

  • Use Ctrl for all modifier shortcuts
  • Ctrl+W closes windows
  • Alt+F4 quits the application (system shortcut)

Quick Reference Card

File

  • Cmd+S - Save
  • Cmd+E - Export Project

Window

  • Cmd+W - Close Window
  • Cmd+, - Settings
  • H - Documentation

Display

  • D - Drivers Mode
  • F - Cycle Filters Mode
  • X - Sync X-Axis
  • N - Normalize IR/SR
  • U - Unwrap Phase
  • C - Center Phase
  • S - Sum Focus

Graphs

  • M - Magnitude
  • P - Phase
  • G - Group Delay
  • I - Impulse
  • T - Step
  • K - THD

Advanced

  • R - Directivity Sonogram (license required)

Edit

  • Cmd+Z - Undo
  • Cmd+Shift+Z - Redo

Audio Configuration

Before performing measurements or analyzing audio, LinFIR needs to be configured with the correct audio devices and parameters. This section covers the audio settings available in the application.

Accessing Audio Settings

Audio settings are accessed via:

  • Menu: View → Settings → Audio Settings
  • Keyboard: Cmd+, (macOS) or Ctrl+, (Windows), then select Audio Settings tab

Audio Settings Window Audio Settings Window

Device Selection

Input Device

The input device captures audio from microphones or measurement equipment:

  • Click the dropdown to see available input devices
  • Select your measurement microphone or audio interface input
  • Verify the device shows the correct channel count
  • Ensure the device isn’t in use by another application

Output Device

The output device plays back sweep signals or test tones:

  • Select the audio interface connected to your loudspeaker system
  • Verify the device supports the desired sample rate
  • Check that the device has sufficient channels for your application

Refreshing Devices

If your audio device doesn’t appear:

  1. Click “Refresh Devices” to rescan available hardware
  2. Ensure the device drivers are properly installed
  3. Check that the device is powered on and connected
  4. Try restarting the application if the device remains unavailable

Sample Rate Configuration

Choose a sample rate matching your needs:

  • 44.1 kHz: CD quality, most common for consumer audio
  • 48 kHz: Professional audio standard, video production
  • 88.2/96 kHz: High-resolution audio, improved time-domain precision
  • 176.4/192 kHz: Ultra-high resolution (use only when necessary for THD analysis)

⚠️ Note: The sample rate must be supported by both your input and output devices. If a rate is unavailable, try a different value.

Buffer Size

Controls latency vs. stability trade-off:

  • Smaller buffers (128-256 samples): Lower latency but may cause dropouts
  • Recommended (512-1024 samples): Good balance for measurements
  • Larger buffers (2048+ samples): More stable but higher latency

For sweep measurements, 256 or 512 samples is typically optimal.

Input Gain Compensation

Software-based gain adjustment applied to the input signal:

  • Range: -32 dB to +32 dB
  • Purpose: Compensate for fixed or unavailable hardware gain controls
  • Use case: Particularly useful for USB microphones like UMIK-1 on Mac OS

Why Use Input Gain Compensation?

Some measurement microphones have fixed gain or no hardware gain control, particularly on certain platforms:

  • Mac OS USB microphones: Mac OS enforces very low fixed gain for USB microphones
  • UMIK-1 example: No hardware control available in Mac OS system settings
  • Solution: Use positive gain compensation (+18 to +24 dB) to achieve optimal recording levels

Important Notes

  • Input gain compensation does not improve signal-to-noise ratio
  • It’s a convenience feature for level matching, not a replacement for proper gain staging
  • Optimal SNR still requires appropriate acoustic levels and microphone positioning
  • Use hardware gain controls when available for best results

Microphone Calibration

Import calibration files from measurement microphone manufacturers for accurate frequency response measurements.

Supported Format

Standard text file format with:

  • Sens Factor header line
  • Two-column data: Frequency (Hz) and Error/Correction (dB)
  • Example manufacturers: miniDSP, Dayton Audio, Earthworks, Beyerdynamic

How Calibration Works

When a calibration file is loaded:

  1. LinFIR computes a minimum-phase correction filter from the calibration data
  2. This correction filter is convolved with the recorded signal during capture
  3. The correction is baked into the captured impulse response
  4. This is not just a visual adjustment on graphs

Why Minimum-Phase Convolution?

  • Preserves causality: The corrected IR remains causal (no pre-ringing from correction)
  • Avoids artifacts: No truncation-induced artifacts from non-causal corrections
  • Accurate magnitude: Full-frequency correction of microphone response
  • Natural results: Maintains physical relationships between magnitude and phase

Calibration File Management

  • Loading: Click “Import Calibration” and select the manufacturer-provided file
  • Clearing: Click “Clear Calibration” to remove the active calibration

⚠️ Device Change Warning: When switching input devices, LinFIR warns you if a calibration is active. The calibration may not be valid for the new microphone.


Platform-Specific Considerations

Mac OS

  • Timing stability: Excellent (< 0.01ms typical jitter)
  • Timing reference: Optional when the same device is used as input and output but recommended for best accuracy
  • Multi-interface: Highly reliable even with different input/output devices
  • USB microphones: May require input gain compensation due to OS-enforced low gain with usb devices

Windows

  • Timing stability: Variable (1-150ms jitter due to scheduler instability)
  • Timing reference: Strongly recommended (Electric or Acoustic mode)
  • Timing inconsistency: IR arrival time may vary without timing reference
  • ASIO drivers: Provide improved stability compared to WASAPI
  • Measurement averaging: Requires active timing reference (Electric or Acoustic mode)

Without a timing reference on Windows, measurements may have inconsistent timing, making averaging and multi-position capture unreliable.


Configuration Checklist

Before starting measurements, verify:

  • Input device selected and recognized
  • Output device selected and functional
  • Sample rate matches project settings
  • Buffer size set to 256 or 512 samples
  • Input gain compensation configured (if needed)
  • Microphone calibration loaded (if available)
  • Timing reference configured (see Reference Timing)
  • Devices not in use by other applications

Troubleshooting

Device Not Listed

  • Click “Refresh Devices” to rescan
  • Ensure device drivers are installed
  • Check that device isn’t in use by another application
  • Try different sample rates or buffer sizes
  • Restart LinFIR

Configuration Invalid

  • Selected devices may have been disconnected
  • Sample rate may not be supported by device
  • Channel count may exceed device capabilities
  • Try selecting default devices and refreshing

Audio Dropouts

  • Increase buffer size
  • Close other applications using audio
  • Check for system resource constraints
  • Update audio interface drivers

No Sound During Sweep

  • Verify output device is selected and powered on
  • Check system audio settings
  • Ensure exclusive mode isn’t blocking access (Windows)
  • Try different buffer sizes
  • Verify output channel selection in IR Management window

Sweep Measurements

LinFIR features a built-in exponential sine sweep generator for impulse response capture. This system provides high-quality measurements with automatic quality validation.

Overview

The sweep measurement system generates an exponential sine sweep that excites the system across a specified frequency range. After playback and recording, deconvolution with the inverse sweep extracts the impulse response.

Accessing Sweep Controls

Sweep controls are located in the IR Management window:

  • To open the window: Driver → Manage IR
  • Section: Measurement Settings
  • Start button: 🎤 Measure

Sweep Parameters

Sweep Parameters Sweep Parameters

Duration

Length of the sweep signal in seconds.

  • Range: 1 to 10 seconds
  • Shorter (1-3s): Faster measurements, lower frequency resolution
  • Longer (5-10s): Better low-frequency resolution, improved SNR
  • Recommended: 5-7 seconds for full-range measurements

Longer sweeps provide better time-domain resolution at low frequencies, improving measurement accuracy in the bass region.

Amplitude

Output level of the sweep signal.

  • Range: -50 to 0 dB
  • Purpose: Control the acoustic level of the measurement
  • Typical: -12 to -6 dB for moderate levels
  • Maximum (0.0): Full digital scale output

Adjust amplitude based on driver sensitivity and desired measurement level. Too low may result in poor SNR; too high may cause clipping, distortion or damage.

Start Frequency

Lower frequency limit of the sweep.

  • Default: 0.1 Hz (captures near-DC response)
  • Range: 0.1 Hz to 20 kHz
  • Full-range: 20 Hz (typical for full-bandwidth measurements)
  • Subwoofers: 10-20 Hz for low-frequency drivers
  • Tweeters: >1000 Hz for high-frequency analysis only

Setting the start frequency too high will miss low-frequency information. For full-range measurements or subwoofers, use 20 Hz or lower.

End Frequency

Upper frequency limit of the sweep.

  • Default: Nyquist frequency (sample rate / 2)
  • Range: Start frequency to Nyquist
  • Auto-clamped: Cannot exceed sample rate / 2
  • Full-range: 20,000 Hz for complete audible spectrum
  • Subwoofers: 200-500 Hz for focused low-frequency measurements
  • Limited bandwidth: Useful for measuring specific frequency ranges

Reset Range Button

Quickly restore the frequency range to full bandwidth:

  • Action: Sets Start Freq to 0.1 Hz and End Freq to Nyquist frequency
  • Use: Return to default full-range measurement after bandwidth-limited sweeps

Starting a Measurement

Measure Button (🎤 Measure)

Clicking the 🎤 Measure button initiates the sweep measurement process.

Default behavior (confirmation enabled):

  1. Click 🎤 Measure
  2. Confirmation dialog appears with warnings:
    • Check microphone and speaker positioning
    • Set appropriate gain levels to avoid clipping
    • The sweep will be audible
    • Windows-specific timing warning (if applicable)
  3. Click Start Measurement to proceed or Cancel to abort
  4. Sweep plays and records automatically
  5. IR is processed and validated

Direct mode (confirmation disabled):

  • Measurement starts immediately when clicking 🎤 Measure
  • No confirmation dialog shown
  • Useful for quick repeated measurements

Disabling Confirmation Dialog

To disable the confirmation dialog:

  1. Open Settings (Cmd/Ctrl + ,)
  2. Navigate to Audio Settings
  3. Enable “Skip confirmation dialog” option
  4. Measurements will now start immediately

Warning: Disabling confirmation means sweeps start instantly. Ensure your setup is ready before clicking the button to avoid unexpected loud sweeps.


Level Recommendations

Target levels for best measurement quality:

  • Optimal: -6 dB to -12 dB
  • Acceptable: -12 dB to -20 dB
  • Too low: Below -25 dB (poor SNR, noisy measurements)
  • Too high: Above -3 dB (risk of clipping)

Quality Validation

LinFIR automatically validates each capture and rejects poor-quality measurements.

Clipping Detection

  • Criteria: Any sample reaching digital full-scale (±1.0)
  • Result: Capture rejected immediately
  • Reason: Clipping introduces harmonic distortion that corrupts the impulse response

Solution: Reduce input gain or lower acoustic level (move microphone farther or reduce driver volume).

Level Check

  • Criteria: Peak level must be ≥ -25 dB
  • Result: Capture rejected if too low
  • Reason: Low levels result in poor signal-to-noise ratio

Solution: Increase input gain, raise driver volume, or move microphone closer.


Best Practices

Microphone Positioning

  • On-axis measurements: Position microphone directly in front of driver at typical listening distance
  • Listening position: For room measurements, place microphone at primary listening position
  • Height: Maintain consistent height, typically at seated ear level (90-150 cm)
  • Distance:
    • Farfield recommended: 0.5-1.5 meters with windowing (quasi-anechoic technique)
    • Avoid nearfield: Nearfield measurements (<20cm) capture reactive near-field effects (evanescent waves) that don’t propagate to listening position
    • Consistency critical: Use the same microphone position for all drivers to maintain correct relative phase and amplitude relationships

Why Avoid Nearfield for Multi-Way Systems?

Physical limitations:

  • At different distances, the reactive impedance field varies between drivers
  • Nearfield captures evanescent waves (reactive air-driver coupling) that decay exponentially and never reach the listener
  • These reactive effects create phase rotations and magnitude errors that don’t represent real acoustic radiation

Practical consequences:

  • Impossible to maintain consistent distance across drivers of different sizes (tweeter vs woofer require different nearfield distances)
  • Phase relationships corrupted: Crossover alignment becomes unreliable when drivers measured at different distances
  • Baffle effects missed: Nearfield ignores diffraction and baffle step that dominate the actual system response

Recommended approach:

  • Measure at 0.5-1m distance (same position for all drivers)
  • Use time windowing to eliminate room reflections (quasi-anechoic)
  • Captures correct far-field radiation including baffle interactions
  • Maintains phase coherence between drivers for accurate crossover design

Acoustic Environment

  • Minimize noise: Turn off HVAC, fans and noisy appliances during measurement
  • Reduce reflections: For anechoic-like measurements, gate reflections using time windowing
  • Room measurements: Accept reflections, use time windowing to exclude late reflections only
  • Outdoor measurements: Recommended to avoid room gain and obtain better results at low frequencies

Measurement Microphone

  • Type: Use calibrated measurement microphone (e.g., UMIK-1, Earthworks M23, Beyerdynamic MM-1)
  • Calibration: Load manufacturer calibration file before measurements
  • Quality: Consumer microphones lack flat frequency response and will give inaccurate results

Gain Staging

  1. Start with moderate input gain
  2. Run a test sweep
  3. Check peak level indicator
  4. Adjust gain to achieve -6 dB to -12 dB peaks
  5. Re-measure if clipping or too low

Sweep Duration

  • Full-range (20 Hz - 20 kHz): 5-7 seconds recommended
  • Limited bandwidth: Shorter sweeps acceptable (2-3 seconds)
  • Very low frequencies (< 20 Hz): Use longer sweeps (7-10 seconds)

Capture Rejection Messages

“Capture Rejected - Clipping Detected”

Cause: Input signal exceeded digital full-scale.

Solutions:

  • Reduce audio interface input gain
  • Lower driver volume
  • Move microphone farther from driver
  • Check gain staging in signal chain

“Capture Rejected - Signal Too Low”

Cause: Peak level below -25 dB threshold.

Solutions:

  • Increase audio interface input gain
  • Raise driver volume
  • Move microphone closer to driver
  • Verify microphone connection and phantom power
  • Check audio routing and device selection

Advanced Topics

Sweep Output Channel

In the IR Management window, you can select which output channel plays the sweep:

  • Purpose: Direct sweep to specific amplifier channel
  • Room Calibration: Select channel connected to main loudspeaker (excluding timing reference)
  • Multi-way systems: Measure each driver individually by routing to appropriate channel

Multiple Measurements

For averaging or multi-position captures in Room Calibration mode:

  1. Configure timing reference (Electric or Acoustic) in Audio Settings
  2. Capture first measurement (this becomes the timing reference)
  3. Capture subsequent measurements at different positions or conditions
  4. In Room Calibration mode, measurements are automatically aligned using GCC-PHAT

Measurement Averaging

Mac OS: Averaging works without timing reference (reliable system clock).

Windows: Averaging requires active timing reference (Electric or Acoustic mode) due to system scheduler jitter. Without timing reference, each measurement has high variable latency, making averaging unreliable.


Technical Details

Exponential sine sweep

LinFIR uses an exponential sine sweep rather than a linear sweep:

  • Frequency distribution: Equal energy per octave
  • Low-frequency emphasis: More time spent at low frequencies
  • Harmonic separation: Harmonics appear separated in time
  • Deconvolution: Inverse filter applied to extract impulse response

Deconvolution

After recording the sweep response LinFIR automatically:

  1. Compute the inverse sweep signal
  2. Convolve recorded response with inverse sweep
  3. Extract impulse response from convolution result
  4. Apply microphone calibration (if loaded)
  5. Validate quality (clipping and level check)

Quality Criteria

  • Clipping: Zero tolerance - any sample at ±1.0 rejects capture
  • Minimum level: -25 dB peak threshold ensures adequate SNR
  • These are conservative: Ensure high-quality measurements

Workflow Example

  1. Configure Audio: Set input/output devices, sample rate, buffer size
  2. Load Calibration: Import microphone calibration file (if available)
  3. Position Microphone: Place at measurement location
  4. Set Sweep Parameters: Duration = 5s, Amplitude = -6 dB, Full range (20 Hz - 22 kHz)
  5. Test Sweep: Run a test to check levels
  6. Adjust Gain: Aim for -6 dB to -12 dB peak levels
  7. Measure: Click 🎤 Measure button to record impulse response
  8. Confirm: Click Start Measurement in the confirmation dialog (or skip if disabled in settings)
  9. Verify: Check impulse response graph for quality
  10. Repeat: Capture additional measurements as needed

IR Management

The IR (Impulse Response) Management window provides comprehensive tools for obtaining, processing, and managing impulse responses for each driver or measurement position in your system.

IR Management Window IR Management Window

Accessing IR Management

Loudspeaker Design Mode:

  • To open: Driver → Manage IR
  • Purpose: Import, capture, and process driver impulse responses at multiple angles

Room Calibration Mode:

  • To open: Measurements → Manage IR
  • Purpose: Capture IR at a given in room position

Driver/Measurement Name

Manually enter a descriptive name for the impulse response.

  • Label: “Driver Name” (Loudspeaker Design) or “Measurement Name” (Room Calibration)
  • Purpose: Identify IRs in project and exports
  • Persistence: Names are saved with the project
  • Optional: Empty names default to “Driver X” or “Measurement X”
  • Best practice: Use descriptive names like “Woofer_Left”, “Tweeter_RefXYZ”, “Position_Center”

Off-Axis Measurements 🔒

Available in: Loudspeaker Design mode only
License required: Valid LinFIR license needed for off-axis measurements

Overview

Off-axis measurements enable directivity analysis by capturing impulse responses at different horizontal and vertical angles. These measurements are essential for understanding speaker radiation patterns and optimizing crossover design for consistent off-axis response.

Measurement Organization

Measurements are displayed in two columns:

  • Horizontal column: Measurements with vertical angle = 0°, varying horizontal angle

    • Example: -90°, -60°, -30°, 0°, +30°, +60°, +90°
  • Vertical column: Measurements with horizontal angle = 0°, varying vertical angle

    • Example: -60°, -40°, -20°, 0°, +20°, +40°, +60°

On-axis reference: The (0°, 0°) measurement appears in both columns.

Axis Selection

Before importing or capturing an off-axis measurement, select the measurement axis:

  • Horizontal button: Measurements along horizontal axis (left/right)
  • Vertical button: Measurements along vertical axis (up/down)

The selected axis determines whether the angle applies to horizontal or vertical position.

Measurement Angle

Field: “Measurement angle”
Range: -180° to +180°
Indicates: Angle for next import or capture operation

How it works:

  • If Horizontal axis selected: angle applies to horizontal position (vertical = 0°)
  • If Vertical axis selected: angle applies to vertical position (horizontal = 0°)
  • The field shows which axis is active: “(horizontal)” or “(vertical)”

Restrictions:

  • Disabled until on-axis (0°, 0°) measurement exists
  • Requires valid LinFIR license
  • Must import on-axis measurement first before adding off-axis angles

Per-Measurement Actions

Each measurement in the table has two action buttons:

Export Button (⬇)

Click to export this specific measurement:

  1. Opens export format dialog
  2. Choose WAV or TXT format
  3. Option to include distortion metadata
  4. File is saved with angle suffix (e.g., Driver1_H30.wav, Driver1_V-15.wav)

Delete Button (❌)

Remove a measurement from the driver:

  • Off-axis measurements: Can be deleted freely
  • On-axis (0°, 0°) measurement: Can only be deleted if all off-axis measurements are removed first
    • This restriction exists because the on-axis measurement serves as the reference for all filter calculations

Tooltip guidance:

  • Enabled: “Delete measurement”
  • Disabled: “Delete all off-axis measurements first”

Symmetry Tool

Button: ⚖ Symmetry
Location: Below each column
Purpose: Automatically duplicate measurements to opposite angles

How it works:

  • Horizontal Symmetry: If you have +30°, creates -30° by mirroring the measurement
  • Vertical Symmetry: If you have +20°, creates -20° by mirroring the measurement

Use case: Save measurement time by capturing one side and mirroring to the other side, assuming the speaker has symmetric radiation.

Workflow for Off-Axis Measurements

  1. Import or capture on-axis measurement (0°, 0°) first
  2. Select axis (Horizontal or Vertical)
  3. Set measurement angle (e.g., +30°)
  4. Import file or capture measurement
  5. Repeat for additional angles
  6. Use Symmetry tool to fill opposite angles (optional)
  7. Analyze directivity patterns in main application graphs

Import from File

Load impulse responses from external files.

Supported Formats

WAV Files

  • Channels: Mono or stereo (left channel used for stereo files)
  • Bit depth: 16-bit, 24-bit, or 32-bit PCM
  • Automatic resampling: File is resampled to match project sample rate
  • Truncation: Files are truncated to remove trailing noise

With distortion metadata:

  • If WAV contains custom ‘dist’ chunk (exported from LinFIR with “Include dist.” option)
  • Enables THD (Total Harmonic Distortion) computation

Without distortion metadata:

  • Standard WAV import
  • Only practical/cropped IR available
  • THD computation not available

TXT Files

Text files are automatically detected and can contain either:

1. Impulse Response Samples

  • One sample value per line or space/comma-separated
  • Supports optional metadata in comment lines (lines starting with #):
    • fs=<value>: Sample rate in Hz
    • dist=1: Indicates distortion metadata is present
    • ess_start_hz=<value>: Exponential sine sweep start frequency
    • ess_end_hz=<value>: Exponential sine sweep end frequency
    • ess_duration_s=<value>: Sweep duration in seconds
    • raw_length=<value>: Length of the practical IR (before distortion data)

With metadata (e.g., exported from LinFIR):

  • Sample rate is automatically detected
  • Distortion data preserved for THD analysis
  • Direct import without user intervention

Without metadata:

  • User prompted to enter sample rate
  • Imported as standard impulse response

2. FRD Format Data

  • Automatically detected if file contains FRD-formatted data (3 columns: frequency, magnitude, phase)
  • Processed identically to .frd files (see FRD Files section below)

FRD Files

Frequency response data files (commonly exported by REW, VituixCAD, or provided by manufacturers).

Format:

  • 3 columns per line: Frequency (Hz), Magnitude (dB), Phase (degrees)
  • Text-based, space or tab delimited
  • Can use either .frd extension or .txt extension

Processing:

  • Automatic interpolation to required frequency points using PCHIP (Piecewise Cubic Hermite Interpolating Polynomial)
  • Configurable magnitude extrapolation for DC and high-frequency regions
  • Phase handling with group delay compensation

Extrapolation Modes:

When importing FRD files, LinFIR opens the FRD to IR Converter window with the following extrapolation controls:

  • DC Extrapolation: Controls how magnitude is extended below the lowest measured frequency

    • Constant: Flat extrapolation (holds the lowest measured value)
    • Roll-off: Applies a 12 dB/octave high-pass roll-off for realistic loudspeaker behavior
    • Default: Roll-off
  • High Frequency Extrapolation: Controls how magnitude is extended above the highest measured frequency toward Nyquist

    • Constant: Flat extrapolation (holds the highest measured value)
    • Roll-off: Applies a 12 dB/octave low-pass roll-off, automatically compensates for upward slopes
    • Default: Constant

Benefits of Roll-off mode:

  • More realistic impulse responses from incomplete FRD data
  • DC roll-off mimics natural loudspeaker low-frequency limitations
  • HF roll-off prevents artifacts from measurements that don’t extend to Nyquist
  • Adaptive: compensates for incorrect slope trends in measured data

Important notes:

  • FRD files are sparse (often logarithmically spaced frequency points)
  • Requires complex interpolation, potentially introducing artifacts
  • Generally do not contain the time of flight required to properly time align drivers
  • Recommendation: Prefer importing impulse responses (WAV) whenever possible

Impulse Response Timing Requirements

Peak delay limit: LinFIR rejects impulse responses where the main peak is located more than 200 ms after the start of the file.

Why this limit exists:

LinFIR performs extensive signal processing operations—FFT transformations, convolutions, resampling, and real-time filter preview—that must remain responsive. These operations scale with impulse response length, and excessive zero padding before the actual signal significantly impacts performance without adding useful information.

Physical context:

A 200 ms delay corresponds to approximately 68 meters of acoustic travel distance. In practical loudspeaker measurement and room calibration scenarios, such excessive delays indicate that no timing reference method was used during capture (loopback trigger, electrical reference, or pre-alignment in the measurement software).

Impact on workflow:

Without proper timing reference, relative time alignment between drivers becomes unreliable, as the arbitrary delays vary unpredictably between measurements. This compromises crossover phase coherence and summation accuracy—core functions of LinFIR.

Best practice:

When capturing impulse responses, use measurement software that provides:

  • Loopback triggering (audio interface output → input reference)
  • Electrical reference triggering (synchronized start)
  • Pre-alignment features that position the IR peak near the beginning of the recording

These methods ensure minimal file length while preserving the precise time-of-flight information needed for accurate driver alignment and filter design.

If your measurement contains a valid signal buried in initial silence, pre-process the file to remove leading zeros before importing into LinFIR.

Import Workflow

  1. Click “📁 Import” button
  2. Select WAV, TXT or FRD file
  3. File is automatically detected and processed:
    • WAV: Resampled to project sample rate, metadata extracted
    • TXT (impulse samples): Either auto-imported (with metadata) or user prompted for sample rate
    • TXT/FRD (frequency data): Opens FRD to IR Converter window
  4. IR appears in impulse response graph
  5. Manually enter IR name in text field
  6. Apply windowing if necessary (see Time Windowing section)

Special case for FRD files: When importing .frd or FRD-formatted .txt files, the FRD to IR Converter window opens automatically. See the dedicated section below for details.

⚠️ Display Mode Check: If the imported impulse response does not appear in the graphs, verify that Drivers/Measurements display mode is selected in the graph toolbar (not FIR, IIR, or FIR+IIR modes which only show filter responses). The graph title and legend clearly indicate which mode is active.


FRD to IR Converter

When importing FRD files, LinFIR opens a dedicated conversion window with advanced tools for interpolation, visualization, and quality assessment.

FRD to IR Converter Window FRD to IR Converter Window

Overview

The FRD to IR Converter transforms sparse frequency-domain data into time-domain impulse responses using sophisticated interpolation and extrapolation techniques. It provides real-time visualization and quality metrics to help you assess the conversion quality.

Conversion Parameters

Sample Rate

Options: 44.1 kHz, 48 kHz, 88.2 kHz, 96 kHz, 176.4 kHz, 192 kHz
Default: 96 kHz

Target sampling frequency for the resulting impulse response.

Considerations:

  • Higher sample rates provide better frequency resolution
  • Must match or exceed your project’s sample rate
  • FRD data is interpolated to fill all frequency bins from DC up to Nyquist

Delay Compensation

Range: 0.0 to 100.0 ms
Default: 5.0 ms

Time offset applied to the impulse response to allow for pre-ringing visualization and processing.

Purpose:

  • Provides time buffer before the main impulse
  • Essential when FRD data contains non-minimum phase characteristics
  • Allows visualization of pre-ringing artifacts

Warning indicator: If pre-ringing duration exceeds the delay setting, a warning appears suggesting either:

  • Increase delay to accommodate pre-ringing
  • Enable Minimum Phase transformation

Minimum Phase Transformation

Default: Disabled

Applies Hilbert transform to convert the impulse response to minimum phase, eliminating all pre-ringing.

When to use:

  • FRD data shows significant pre-ringing (> 5% energy before peak)
  • Phase data is corrupted, smoothed, or contains wrapping errors
  • You need a causal, physically realizable impulse response
  • Time-domain alignment is critical

Effects:

  • Removes all energy before the main peak
  • Preserves magnitude response
  • Changes phase response to minimum phase equivalent
  • Results in a causal system (no pre-ringing)

Note: Pre-ringing in FRD-derived impulses is often an artifact of measurement or file creation, not a physical characteristic of the device.

DC Extrapolation

Modes: Constant, Roll-off
Default: Roll-off

Controls how magnitude is extended below the lowest measured frequency toward DC (0 Hz).

Constant mode:

  • Flat extrapolation using the lowest measured value
  • Use when FRD data already reaches very low frequencies

Roll-off mode (recommended):

  • Applies 12 dB/octave high-pass characteristic
  • Mimics natural loudspeaker low-frequency roll-off
  • More physically realistic for incomplete low-frequency data

High Frequency Extrapolation

Modes: Constant, Roll-off
Default: Constant

Controls how magnitude is extended above the highest measured frequency toward Nyquist.

Constant mode (recommended):

  • Flat extrapolation using the highest measured value
  • Maintains adequate signal level to Nyquist
  • Minimizes noise amplification

Roll-off mode:

  • Applies 12 dB/octave low-pass characteristic
  • Automatically compensates for upward slope trends
  • Use when FRD data shows unrealistic high-frequency behavior

Display Parameters

These parameters control visualization only and do not affect the conversion.

IR Start / Stop Time

Range: 0.0 ms to impulse duration
Purpose: Zoom into specific time region of the impulse response graph

Useful for examining:

  • Pre-ringing characteristics
  • Main peak detail

Frequency Min / Max

Range: 1 Hz to 48000 Hz
Purpose: Set frequency range for magnitude and phase graphs

Allows focusing on:

  • Specific frequency bands of interest
  • Problem areas in the response
  • Comparison between original and interpolated data

Wrap Phase

Default: Disabled

Toggles between wrapped (-180° to +180°) and unwrapped phase display.

Wrapped:

  • Phase limited to -180° to +180° range
  • Shows discontinuities at ±180° boundaries
  • Familiar format for some users

Unwrapped:

  • Continuous phase (can exceed ±180°)
  • Shows true phase accumulation
  • Better for assessing group delay trends

Remove Delay Phase

Default: Disabled

Removes the linear phase component corresponding to the delay setting.

When enabled:

  • Subtracts linear phase = -360° × f × delay
  • Reveals underlying phase structure
  • Useful for comparing final phase response with the original one

Data Quality Assessment

The converter displays comprehensive quality metrics to help you evaluate the FRD data.

Coverage Metric

Format: “X / Y frequency points (Z% coverage)”

  • X: Number of frequency points in FRD file (within 0 Hz to Nyquist)
  • Y: Expected number of points for complete FFT coverage
  • Z: Coverage percentage = (X / Y) × 100

Quality indicators:

  • Good (≥ 50%): Green - Sufficient data density
  • ⚠️ Moderate (20-50%): Yellow - Acceptable but sparse
  • Low (< 20%): Red - Very sparse, heavy interpolation required

FFT bin calculation: Based on sample rate and FFT size (4× next power of 2)

Info Button - Detailed Diagnostics

Click the ℹ Info button to open the Data Quality Information window with detailed analysis.

Missing DC (0 Hz):

  • Impact: Low-frequency extrapolation required
  • Consequence: Uncertainty in bass response below lowest measured frequency
  • Solution: Use Roll-off extrapolation for DC

Missing Nyquist Data:

  • Impact: High-frequency extrapolation required
  • Consequence: Uncertainty in high-frequency response
  • Recommended: FRD should extend to at least Nyquist frequency

Sparse Frequency Data:

  • Threshold: < 50% coverage
  • Impact: Heavy interpolation between measured points
  • Risk: Artifacts from PCHIP interpolation of widely-spaced points
  • Note: Shows exact percentage of missing data points

Pre-ringing Detection:

Analyzed automatically after conversion. Three severity levels:

  • Minor (0.1% - 0.5% energy before peak):

    • Blue indicator
    • May indicate slight phase smoothing or measurement artifacts
    • Usually acceptable for most applications
  • Moderate (0.5% - 1.0% energy before peak):

    • Yellow/Orange warning
    • Phase data likely smoothed or contains wrapping errors
    • Consider minimum phase transformation
  • Significant (≥ 1.0% energy before peak):

    • Red warning
    • Severe phase corruption or non-physical characteristics
    • Strongly recommended: Enable Minimum Phase transformation
    • Will affect transient response and phase correction accuracy

Pre-ring duration: Time span from first significant energy to main peak

Physical interpretation: Real loudspeakers cannot produce energy before the stimulus arrives. Pre-ringing in FRD files indicates:

  • Phase data smoothing in measurement software
  • Phase wrapping/unwrapping errors
  • File export artifacts
  • Non-minimum phase processing applied to data

Impact Warnings

The Data Quality Information window provides context on how issues affect the conversion:

Missing Data Effects:

  • Artifacts in reconstructed impulse response
  • Estimated information through interpolation/extrapolation
  • Final impulse may not fully represent original system

Best Practices for FRD Files:

  • Include DC (0 Hz) measurement point
  • Extend data to at least Nyquist frequency
  • Aim for > 50% frequency coverage
  • Prefer linear frequency spacing over logarithmic
  • Avoid phase smoothing in export settings

Time-Domain Preference:

The converter emphasizes: When possible, import impulse responses (WAV files) instead of FRD.

Advantages of time-domain data:

  • No interpolation artifacts
  • Preserves time-of-flight information (with proper timing reference)
  • Essential for proper driver alignment in crossover design
  • Natural representation of system behavior

FRD limitations for crossover design:

  • Often lacks time-of-flight data
  • Driver motors may not be coplanar
  • Diaphragm geometry affects acoustic center
  • Horn loading adds group delay
  • Relative delays between drivers are essential

Visualization Graphs

The converter displays three synchronized graphs:

1. FRD Data (Original + Interpolated):

  • Left: Magnitude response
  • Right: Phase response
  • Red curve: Original FRD measurements
  • Dashed blue curve: PCHIP interpolated curve

2. Impulse Response:

  • Reconstructed time-domain impulse
  • Zoom using IR Start/Stop controls
  • Shows pre-ringing and overall IR structure

3. Reconstructed Frequency Response:

  • Left: Magnitude computed from impulse via FFT
  • Right: Phase computed from impulse via FFT
  • Validation: Should closely match interpolated FRD (with Remove Delay Phase button enabled)
  • Differences indicate reconstruction issues

Workflow

  1. Import FRD file - Converter window opens automatically
  2. Review quality metrics - Check coverage and warnings
  3. Adjust extrapolation - Set DC and HF modes as needed
  4. Set sample rate - Match or exceed project sample rate
  5. Configure delay - Ensure adequate pre-ringing buffer
  6. Enable minimum phase - If pre-ringing > 1% or phase corrupted
  7. Inspect graphs - Verify interpolation and reconstruction quality
  8. Click “Use This Impulse Response” - Apply to selected measurement angle

The converted impulse is automatically stored in the driver’s measurement at the specified horizontal/vertical angle.


Time Windowing

Isolate the direct sound from an impulse response and exclude reflections or noise.

IR Windowing and Delay Compensation IR Windowing and Delay Compensation

Parameters

Start Time

Beginning of the time window in milliseconds.

  • Purpose: Remove pre-ringing or early noise
  • Typical: 0.0 to 5.0 ms before main peak
  • Effect: Sets the beginning of the extracted portion

Stop Time

End of the time window in milliseconds.

  • Purpose: Exclude late reflections or room decay
  • Typical: 5.0 to 100.0 ms after main peak
  • Effect: Sets the end of the extracted portion

Duration Display

Wndow duration (Stop Time - Start Time).

Windowing Purpose

  • Anechoic approximation: Simulate anechoic conditions from room measurements
  • Reflection gating: Remove floor, ceiling, and wall reflections
  • Crossover and correction design: Essential for accurate filter design using measured data
  • Clean response: Isolate direct driver response

Window Function

LinFIR uses a Tukey window (tapered cosine/raised cosine) for smooth fade-in and fade-out transitions:

  • Taper duration: 0.25 ms
  • Function: \(w(t) = 0.5 \times (1 + \cos(\frac{2\pi t}{\alpha}))\) where \(t\) is the normalized position (0 to 1) within the taper region and \(\alpha = 0.25\) is the taper fraction
  • Characteristics:
    • Smooth cosine-shaped fade-in at window start
    • Rectangular (flat = 1.0) in the middle
    • Smooth cosine-shaped fade-out at window stop
  • Purpose: Avoid spectral artifacts from sharp discontinuities

The Tukey window provides excellent time localization while preventing high-frequency ringing caused by abrupt truncation.

Preview

The impulse response graph shows the windowed result in real-time as you adjust start and stop times. The window boundaries are visually indicated.


Adaptive Window

Advanced frequency-dependent windowing that preserves low-frequency response while gating high-frequency reflections.

How It Works

When enabled, LinFIR applies different window lengths for different frequency bands:

  1. Signal splitting: Divides into 10 frequency bands (20 Hz to 15 kHz, logarithmically spaced)
  2. Band filtering: Each band filtered with Kaiser-windowed FIR filters
  3. Adaptive windowing:
    • Lower frequencies: Longer windows (extra time = 1000/frequency_Hz milliseconds)
    • Higher frequencies: Standard window boundaries
  4. Recombination: All bands summed with smooth transitions preserving phase coherence

Benefits

  • Preserves bass response: Low frequencies need more time to settle
  • Avoids bass roll-off: Short windows naturally attenuate bass
  • Frequency-aware gating: Different decay times for different frequencies

When to Use

Use Adaptive Window when:

  • Gating reflections but need to preserve bass
  • Using short measurement windows where bass would be compromised
  • Simple windowing causes unnatural bass attenuation

Don’t use Adaptive Window when:

  • Working with anechoic or quasi-anechoic measurements (simple window is cleaner)
  • You have sufficient window length for all frequencies

Enabling

Check the “Adaptive Window” checkbox in the IR Windowing section.


Delay Compensation

Shift the impulse response earlier in time without truncating data.

How It Works

  • Non-destructive: IR data remains intact in memory
  • Display offset: Delay applied as metadata for display and calculations
  • Purpose: Bring acoustic peak closer to time zero to flatten the phase

Auto Detect Delay

Click “Auto Detect Delay” to automatically detect and apply optimal delay compensation across all drivers:

Behavior:

  1. Detects the peak position for each driver (based on on-axis measurements)
  2. Finds the minimum detected delay across all drivers
  3. Applies this minimum delay to all drivers simultaneously

Advantages:

  • Preserves temporal alignment: All drivers maintain their relative timing relationships
  • Removes common delay: Eliminates the shared propagation delay from all measurements
  • Prevents errors: Ensures consistent delay compensation across all drivers automatically

Detection Method:

  • Locates the position of the main peak in the impulse response
  • Uses on-axis measurement (0°, 0°) as reference for each driver
  • Aligns all driver peaks precisely at time zero

Manual Adjustment

Manually enter delay value in milliseconds to fine-tune alignment for individual drivers.

⚠️ Apply the same delay compensation to all drivers: When designing crossovers you should apply the same delay compensation to all the drivers in order to keep the time coherence. Use different compensation delays only to compensate for microphone position variations accross measurements.


Measurement Notes

Section: Collapsible header (default closed)
Purpose: Document measurement conditions and hardware setup

Measurement Notes Measurement Notes

Overview

The Measurement Notes field provides a space to record important information about your measurement setup, hardware configuration, environmental conditions, and any other relevant details.

Features

  • Multi-line text editor: Supports up to 1000 characters
  • Auto-save: Notes are saved with the project
  • Hint text: Helpful placeholder text suggests what information to include
  • Character counter: Live display of character count (e.g., “127/1000 characters”)

What to Document

Hardware configuration:

  • Microphone model and serial number
  • Audio interface model and settings
  • Amplifier configuration
  • Cable connections and routing

Measurement conditions:

  • Date and time of measurement
  • Room conditions (temperature, humidity if relevant)
  • Microphone position and distance
  • Driver orientation and mounting

Reference information:

  • Calibration file version used
  • Sample rate and sweep settings
  • Any unusual conditions or observations
  • Version of measurements for tracking

Example Notes

Microphone: UMIK-1 (S/N: 123456) with cal file v2.3
Interface: Focusrite Scarlett 2i2 (48kHz, 512 buffer)
Distance: 1m on-axis, driver mounted in baffle
Room: Semi-anechoic (windows gated at 10ms)
Date: 2025-12-14
Notes: First measurement after driver break-in period

Best Practices

  • Be specific: Include model numbers and serial numbers when relevant
  • Date your measurements: Track when measurements were taken
  • Note calibration: Record which calibration file was used
  • Document changes: If re-measuring, note what changed
  • Reference conditions: Record anything that might affect comparisons

Exporting Impulse Responses

Impulse responses can be exported in WAV or TXT format directly from the measurement table.

Export Process

For each measurement (horizontal and vertical angles):

  1. Click the ⬇ (Export) button next to the measurement angle
  2. Export dialog appears with format options
  3. Choose export format and options
  4. File is saved with automatic angle suffix

File naming:

  • On-axis (0°, 0°): DriverName.wav or DriverName.txt
  • Horizontal: DriverName_H30.wav (for +30° horizontal)
  • Vertical: DriverName_V-15.wav (for -15° vertical)

Export Format Options

When you click the export button, a dialog presents two format options:

WAV Format

File format:

  • Channels: Mono
  • Bit depth: 32-bit PCM float
  • Sample rate: Project sample rate

Include Distortion Metadata option:

When checked:

  • Exports full deconvolved IR plus custom ‘dist’ metadata chunk
  • File name automatically gets _dist.wav suffix
  • Enables THD computation when re-imported into LinFIR
  • Contains sweep parameters: start frequency, end frequency, duration

When unchecked:

  • Exports only the active (cropped/windowed) working IR
  • Standard WAV file without metadata
  • Cannot be used for THD computation upon re-import

TXT Format

File format:

  • One coefficient per line
  • Scientific notation
  • Intended for external tools (e.g., Hypex Filter Design)

Include Distortion option:

When unchecked (default):

  • Exports cropped/windowed IR

When checked:

  • Exports full IR instead of cropped version
  • TXT export button is disabled (metadata cannot be stored in TXT format)

THD Availability

Total Harmonic Distortion (THD) graphs are only available when:

  • IR was captured directly via LinFIR’s built-in sweep, or
  • IR was imported from WAV with ‘dist’ metadata chunk (exported with “Include dist.” option in LinFIR)

Plain WAV files without ‘dist’ chunk or TXT files cannot produce THD curves.


Best Practices

For Captures

  • Use proper gain staging to avoid clipping
  • Monitor levels during sweep - aim for -6 dB to -12 dB peak
  • Save captures with “Include dist.” for future THD analysis

For Windowing

  • Use anechoic or quasi-anechoic measurements when possible
  • Apply windowing before designing correction filters
  • Check impulse response graphs to verify proper window placement
  • Use Adaptive Window cautiously - verify bass response is realistic

For File Management

  • Use descriptive IR names for organization
  • Export with distortion metadata if you need THD analysis later
  • Keep original unprocessed captures as backups
  • Document measurement conditions (position, distance, etc.)

Quick Reference

ActionResult
Import WAVLoad IR from WAV file (with or without ‘dist’ metadata)
Import FRDConvert frequency response data to impulse response
Capture SweepBuilt-in measurement with automatic THD support
Time WindowingExtract portion of IR, exclude reflections
Adaptive WindowFrequency-dependent windowing for bass preservation
Delay CompensationShift IR in time (non-destructive)
Export WAVSave IR to WAV (with optional distortion metadata)
Export TXTExport coefficients to text file

Reference Timing for Sweep Measurements

Accurate timing is critical for consistent impulse response measurements, especially when capturing multiple measurements for averaging or multi-position analysis. LinFIR provides three timing reference modes to accommodate different hardware configurations and platform requirements.

Why Timing Reference Matters

Audio playback and recording systems introduce latency from:

  • Digital-to-analog conversion (output)
  • Analog-to-digital conversion (input)
  • Buffer processing delays
  • Operating system scheduler variability

Without a stable timing reference, each measurement may have slightly different latency, making:

  • Driver alignment unreliable
  • Directivity analysis inaccurate (time-of-flight variations)

Timing Reference Modes

None

No timing reference - relies solely on system scheduler timestamps.

How it works:

  • Uses operating system audio clock
  • Timestamps based on buffer callback timing
  • No additional hardware or connections required

When to use:

  • Mac OS systems (low scheduler jitter, typically < 0.01 ms)
  • Single-shot measurements without averaging
  • Simple setups where high precision isn’t critical

Limitations:

  • Windows: Not recommended due to significant scheduler jitter (1-150 ms)
  • IR arrival time may vary between captures

Mac OS: Reliable and accurate for most applications when using the same device as input and output. Windows: Avoid for professional work - use Electric or Acoustic mode instead.


Electric (Loopback)

Uses a physical cable connection between output and input to provide a stable timing reference.

How it works:

  • Connect line output to line input with a cable
  • Loopback signal captures exact OS and electrical latency
  • Combined electrical and conversion latency measured
  • Provides sample-accurate timing reference

Setup:

  1. Connect output channel to spare input channel with audio cable
  2. Select “Electric” timing reference mode in Audio Settings
  3. Ensure loopback channel is not the measurement input channel
  4. Run sweep - loopback captures timing automatically

Advantages:

  • Most accurate timing reference
  • Platform-independent reliability
  • Compensates for interface-specific latency
  • Essential for measurement averaging on Windows
  • Eliminates scheduler jitter completely

When to use:

  • Windows systems (strongly recommended)
  • Designing crossovers
  • Professional applications requiring highest accuracy
  • Different input/output devices (aggregate devices)

Limitations:

  • Requires spare input channel for loopback
  • Requires physical cable connection
  • May not be available on simple USB audio interfaces

Acoustic

Uses another driver (reference driver) as a timing microphone.

How it works:

  • Reference driver captures sweep output acoustically
  • Provides stable timing reference based on acoustic arrival
  • Measures relative timing between reference and measured driver
  • Does not capture true absolute acoustic + electrical travel time

Setup:

  1. Select a reference driver (must reproduce high frequencies > 5 kHz)
  2. Position reference driver microphone to capture sweep clearly
  3. Select “Acoustic” timing reference mode in Audio Settings
  4. Reference driver captures timing on each sweep

Advantages:

  • No loopback cable required
  • Works when electrical loopback unavailable
  • Good alternative for Windows users without spare input channels
  • Suitable for multi-driver directivity measurements

When to use:

  • Loopback hardware not available
  • Windows systems (recommended alternative to None)

Limitations:

  • Only measures relative timing (not absolute acoustic delay)
  • Reference driver must reproduce high frequencies cleanly
  • Acoustic path must be clear and consistent
  • Less accurate than Electric mode

Important: Reference driver should be full-range or at least capable of reproducing 5-10 kHz cleanly for reliable timing detection.


Timing Offset (Preferences)

Adjustable time offset to shift impulse position.

  • Range: Typically ±100 ms
  • Primary use: Acoustic mode when reference driver is farther than measured driver
  • Purpose: Compensate for acoustic propagation delay differences

Example:

  • Reference driver is 50 cm from its microphone
  • Measured driver is 100 cm from its microphone
  • Acoustic delay difference ≈ 1.5 ms (50 cm / 343 m/s)
  • Apply negative offset of ~1.5 ms to align impulse peaks

Fine-tuning:

  1. Run test measurement
  2. Check impulse response time alignment
  3. Adjust offset in small increments (1-2 ms)
  4. Re-measure to verify alignment

Platform Requirements

Windows

  • Averaging: Requires active timing reference (Electric or Acoustic)
  • Scheduler jitter: Significant (1-150 ms variable latency)
  • Recommendation: Use Electric mode whenever possible, Acoustic as second choice
  • Single measurements: Work with “None” mode but may have timing variation

Without timing reference on Windows:

  • Each measurement has unpredictable latency
  • Directivity analysis compromised
  • Time and phase alinment between drivers will lead to wrong results

Mac OS

  • Scheduler jitter: Minimal (< 0.01 ms typical)
  • Recommendation: Timing reference optional but still beneficial for best accuracy
  • Multi-interface: More stable than Windows even without reference

Choosing the Right Mode

SituationRecommended Mode
Windows + single shotsAcoustic or Electric (None acceptable)
Mac OS + single shotsNone acceptable, Electric for best accuracy
Different input/output devicesElectric strongly recommended
Directivity measurementsElectric or Acoustic
Crossover designElectric or Acoustic
No spare input channelAcoustic (Windows) or None (Mac OS)

Configuration Workflow

  1. Assess requirements:

    • Single measurement or averaging?
    • Mac OS or Windows?
    • Spare input channel available?
  2. Select mode:

    • Windows averaging → Electric or Acoustic
    • Mac OS → None acceptable, Electric for best results
    • No loopback → Acoustic (if reference driver available)
  3. Setup hardware (if Electric):

    • Connect output to spare input channel
    • Verify loopback signal path
  4. Setup reference driver (if Acoustic):

    • Select driver with good high-frequency response
    • Position reference microphone to capture sweep clearly
  5. Configure in Audio Settings:

    • Select timing reference mode
    • Adjust timing offset if needed (Acoustic mode)
  6. Test:

    • Run test measurement
    • Verify timing consistency
    • Adjust offset if required

Troubleshooting

Inconsistent Measurements

Symptom: Each measurement has different arrival time
Cause: No timing reference active
Solution: Enable Electric or Acoustic mode

Reference Signal Not Detected

Symptom: Error message about missing reference
Cause: Loopback not connected or reference driver not capturing sweep
Solution:

  • Electric: Verify cable connection and input channel selection
  • Acoustic: Ensure reference driver can reproduce sweep frequencies

Timing Offset Not Working

Symptom: Impulse still misaligned after offset adjustment
Cause: Incorrect offset direction or magnitude
Solution:

  • Try opposite sign (positive ↔ negative)
  • Increase offset magnitude
  • Verify reference driver is capturing sweep correctly

Best Practices

  • Windows users: Always use Electric or Acoustic mode for professional work
  • Loopback preferred: Most accurate, eliminates all timing variables
  • Acoustic alternative: Good fallback when loopback unavailable
  • Test before session: Verify timing consistency with test measurements
  • Document settings: Record timing mode and offset in project notes
  • Consistent hardware: Use same interface for all measurements in a session

Global Settings

Global settings affect the entire LinFIR application and are accessible via Edit → Settings or the keyboard shortcut Cmd+, (macOS) / Ctrl+, (Windows).

The Settings window is organized into three tabs:

  • General: Application preferences, defaults, and appearance
  • Audio Settings: Audio device configuration and measurement setup
  • Graphs: Display options and graph configuration

This page covers the General and Graphs tabs. For Audio Settings, see Audio Configuration.


General Settings Tab

Appearance

Customize the visual appearance of the LinFIR interface.

UI Color Scheme

Choose between two color themes for LinFIR’s interface elements:

  • Red (default): Custom red accent colors for headers, titles, and active buttons
  • Blue: Standard egui theme with blue accents

What changes:

  • Section headers (Parameters, Drivers, Global Filters)
  • Graph titles (Frequency Responses, Impulse Responses, etc.)
  • Active button colors and selection highlights
  • Accent colors throughout the interface

Application: Changes apply immediately without requiring restart.

Theme (Light/Dark Mode)

Switch between light mode and dark mode using the system theme preference buttons.

  • Light mode: Bright background, dark text
  • Dark mode: Dark background, light text
  • Follow system: Automatically matches your operating system theme preference

Filter Processing

Settings that affect how filters are computed and validated.

Clipping Detection

Default: Enabled

When enabled, LinFIR analyzes filter chains to detect potential clipping and suggests gain adjustments.

How it works:

  • Generates a normalized 32-tone test signal (amplitude = 1.0) covering 20 Hz to 20 kHz
  • Applies all active filters to the test signal
  • Warns when filter output exceeds 1.1 (≈0.8 dB above 0 dBFS)
  • Suggests gain reduction to bring peak below 0.95 (-0.44 dBFS)

Important clarifications:

⚠️ Measurement levels are not tested - Clipping warnings are purely about filter processing, not your imported measurements. The test signal is synthetic and independent of measurement amplitude.

⚠️ Phase processing can cause clipping even with flat magnitude responses - Filters with visually reasonable frequency responses can produce temporal peaks exceeding 0 dBFS. This is especially common with:

  • Phase correction filters combined with other filters (without crossovers)
  • All-pass filters that only modify phase
  • Multiple FIR filters with different causality settings

Why this happens: Phase distortion (or correction) shifts frequency components in time, causing them to align constructively at certain moments. Classic example: a square wave with magnitude 1.0 can exceed 1.0 after phase processing, even though the Fourier magnitude spectrum remains unchanged.

Why disable:

  • May improve performance on slower systems
  • Removes safety warnings if you’re confident in your gain staging

⚠️ Warning: Disabling removes safety checks. Always test with your actual audio content when clipping detection is disabled.

Auto Causal Alignment

Default: Enabled

Automatically optimizes FIR impulse positioning when using multiple FIR filters with causality, based on logarithmic energy distribution analysis.

How it works:

  1. Computes logarithmic energy for each sample: log(x² + ε) where ε = 10⁻¹²
  2. Shifts log values to positive range while preserving relative distribution
  3. Calculates the log-energy ratio before and after the impulse peak
  4. Positions the peak at ratio × n_taps within the FIR window
    • Example: 30% log-energy before peak → peak positioned at 30% of FIR taps
    • Example: 50% log-energy before peak → peak centered at 50% of FIR taps

Why logarithmic energy:

  • Gives more weight to weak signal components (pre-ringing, post-ringing) relative to the dominant peak
  • Compresses dynamic range to better detect energy asymmetry in the impulse response
  • More robust than simple amplitude threshold methods with complex filter combinations

Activation conditions:

  • At least 2 FIR filters are active (correction, low-pass, high-pass, or phase filters)
  • At least one filter has non-zero causality (> 0.0)

Why it’s useful:

  • Prevents truncation of both pre-ringing and post-ringing artifacts
  • Adapts positioning to actual signal energy distribution
  • Handles asymmetric impulse responses from causal filter combinations
  • Maximizes useful signal capture in the final cropped FIR window

When to disable:

  • Manual control over impulse positioning is preferred using custom FIR Compensation Delay adjustments
  • ⚠️ Only disable if you understand signal processing and impulse alignment implications - incorrect manual alignment can cause truncation artifacts or loss of filter effectiveness

Default Values for New Projects

Configure default settings that apply when creating new projects. These do not affect existing projects.

Sample Rate

Options: 44.1 kHz, 48 kHz, 88.2 kHz, 93.75 kHz, 96 kHz, 176.4 kHz, 192 kHz
Default: 48 kHz

Default sampling frequency for new projects.

  • 44.1 kHz: Compact DSP platforms with limited processing power
  • 48 kHz: Professional audio standard, most DSP platforms
  • 88.2 kHz: High-resolution audio (2× CD rate, relatively uncommon DSP sampling frequency)
  • 93.75 kHz: Hypex DSP platforms (FA123, FA253, FA502, etc.)
  • 96 kHz: High-resolution audio
  • 176.4/192 kHz: Ultra-high resolution - only use when DSP platform specifically requires it (higher CPU load, larger filter sizes)

FIR length (taps)

Range: 32 to 65536 taps
Default: 512 taps

Default number of taps for individual driver FIR filters (low-pass, high-pass, and correction filters).

  • 512-2048 taps: Sufficient for most crossover and correction applications
  • 4096 taps: Typical maximum needed for standard loudspeaker design
  • 8192-16384 taps: Specialized use for subwoofer phase and magnitude correction in very low frequencies
  • >16384 taps: Rarely needed - primarily for extreme low-frequency correction or research purposes

Trade-offs:

  • More taps = better frequency resolution and steeper slopes
  • More taps = higher latency (taps/2 samples for linear-phase filters)
  • More taps = larger file sizes and more DSP processing required

Global FIR Taps

Range: 32 to 65536 taps
Default: 512 taps

Default number of taps for the global FIR correction filter (applied to the summed system response).

Same considerations as FIR length (taps) apply.

Curve Smoothing

Options: None, 1/48 octave, 1/24 octave, 1/12 octave, 1/6 octave, 1/3 octave
Default: None

Default smoothing applied to frequency response curves in plots.

  • No smoothing: Shows raw response with all detail
  • 1/48 to 1/24 octave: Subtle smoothing, reveals trends while keeping detail
  • 1/12 octave: Good balance between detail and readability
  • 1/6 to 1/3 octave: Heavy smoothing, shows overall trends only

Graph Display Mode

Options: FIR, IIR, FIR+IIR, Drivers/Measurements
Default: FIR

Default graph display mode for new projects.

  • FIR: Shows FIR filter responses only
  • IIR: Shows IIR filter responses only
  • FIR+IIR: Shows combined FIR and IIR responses
  • Drivers/Measurements: Shows complete processed driver/measurement responses

Keyboard shortcuts: Press F (Filters mode) or D (Drivers mode) to switch quickly.

Phase Display

Options: Unwrapped, Wrapped
Default: Wrapped

Default phase display mode for new projects.

  • Wrapped: Phase values constrained to ±180°, with discontinuities at boundaries
  • Unwrapped: Continuous phase values extending beyond ±180°

Note: Group delay is always computed from unwrapped phase; this setting only affects the phase graph display.

Keyboard shortcut: Press U to toggle unwrap/wrap mode.

Time-Centered Phase

Options: Enabled, Disabled
Default: Disabled

Removes the linear phase component (constant group delay) from phase responses to flatten phase around 0°.

How it works:

  • Loudspeaker Design: Removes linear delay of Sum curve from all driver responses (or driver’s own delay for single driver)
  • Room Calibration: Removes linear phase component of each individual measurement independently (no shared reference)
  • Filters Mode: Removes linear phase component of each individual filter

Use cases:

  • Loudspeaker Design: Identify phase alignment issues between drivers relative to system response
  • Room Calibration: Compare phase behavior across room positions without timing offsets

Keyboard shortcut: Press C to toggle time-centered phase.


Default Sweep Parameters

Configure default settings for the built-in sweep measurement system. These apply to new measurement captures.

Sweep Duration

Range: 1.0 to 10 seconds
Default: 5 seconds

Default length of exponential sine sweep for impulse response measurements.

  • Shorter (1-3s): Faster measurements, lower frequency resolution
  • Longer (5-10s): Better low-frequency resolution, improved signal-to-noise ratio

Recommendation: 5-7 seconds for full-range measurements.

Sweep Level

Range: -40 to 0 dBFS
Default: -6 dBFS

Default output level for sweep signals.

Adjust this to match your amplifier’s input sensitivity and desired acoustic level. Lower values provide headroom for systems with high gain.

Start Frequency

Range: 0.1 to 1000 Hz
Default: 0.1 Hz

Default lower frequency limit of the sweep.

  • 0.1 Hz: Captures near-DC response (full bandwidth)
  • 20 Hz: Typical for full-range measurements
  • Higher values: For focused high-frequency measurements (tweeters)

End Frequency

Range: 1 kHz to 192 kHz
Default: Nyquist frequency (sample rate / 2)

Default upper frequency limit of the sweep.

  • Nyquist (auto): Full available bandwidth
  • 20 kHz: Complete audible spectrum
  • Lower values: For focused low-frequency measurements (subwoofers)

Note: End frequency is automatically clamped to the Nyquist frequency.


Reset Application Settings

⚠️ Warning: This action cannot be undone!

Completely reset all LinFIR settings to factory defaults.

What gets reset:

  • All application settings and preferences
  • Application cache and UI state
  • Default values for new projects
  • Audio device selections
  • Graph display preferences

What is NOT reset:

  • Existing project files (your work is safe)

Process:

  1. Save your current project before resetting
  2. Click “🔄 Reset Application Settings” button
  3. All settings restored to factory defaults

When to use:

  • Troubleshooting configuration issues
  • Starting fresh with default settings
  • Clearing corrupted preferences
  • Removing experimental settings after testing

Graphs Settings Tab

Configure display options and graph behavior.

Display

Plot Resolution

Options: 16k points, 32k points, 64k points
Default: 32k points (balanced)

FFT resolution for frequency response computation.

  • 16k points (16384): Faster computation, lower frequency resolution
  • 32k points (32768): Balanced performance and resolution
  • 64k points (65536): Maximum frequency resolution, slower computation

Impact:

  • Higher resolution provides finer low frequency detail in magnitude, phase, and group delay plots
  • Affects computation time for filter responses and driver measurements
  • Does not affect the actual filter quality, only the analysis resolution

Group Delay & Phase Truncation

Optionally truncate group delay and phase curves to the active frequency region using magnitude thresholds.

Enable Truncation

Default: Enabled

When checked: Group delay and phase curves are shown only where the corresponding magnitude exceeds a threshold below the maximum.

When unchecked: Full-range phase and group delay displayed regardless of magnitude.

Purpose:

  • Avoid displaying phase/group delay in stop-band regions
  • Focus on pass-band characteristics
  • Reduce visual clutter from irrelevant frequency ranges

Truncation Thresholds (dB below maximum)

Independent thresholds for different contexts:

ContextGroup DelayPhaseTHD
Drivers-20 dB-20 dB-20 dB
IIR Filters-20 dB-20 dB
FIR Filters-20 dB-20 dB
FIR+IIR-20 dB-20 dB

How thresholds work:

  • Values are expressed as dB below the maximum magnitude in the reference curve
  • Example: -20 dB means “show phase/GD only where magnitude > (max - 20 dB)”
  • Adjustable range: -120 dB to -20 dB

Context matching:

  • The reference magnitude matches the context
  • Example: FIR curves use FIR magnitude as reference
  • Drivers use driver magnitude as reference

THD Truncation:

  • Only available for Drivers context
  • Shows Total Harmonic Distortion only in active magnitude regions

Magnitude Plot Bounds

Configure default Y-axis bounds for magnitude plots.

Drivers Range (dB)

Range: 20 to 200 dB
Default: 60 dB

Y-axis range for speaker magnitude plots.

  • Calculation: From (max_response - range) to (max_response + 5 dB)
  • Smaller values (20-40 dB): Zoomed view, emphasizes small variations
  • Moderate values (60-80 dB): Good balance for most designs
  • Larger values (100-200 dB): Wide view, shows full range

Filters Lower Bound (dB)

Range: -200 to 0 dB
Default: -100 dB

Lower bound of Y-axis for filter magnitude plots (IIR, FIR, FIR+IIR).

  • Higher values (-40 dB): Focuses on pass-band details
  • Lower values (-100 to -200 dB): Shows deep stop-band attenuation

Impulse/Step Response Display

Adaptive display automatically detects and shows only the relevant portion of impulse and step responses.

Enable Adaptive Display

Default: Enabled

When checked: Automatically detects signal boundaries based on amplitude threshold.

  • Detection threshold: 1/1000th of peak amplitude
  • Automatic margins: Adds configurable time before and after detected signal

When unchecked: Always shows the complete impulse response (full tap length).

Use case: Focuses view on active signal portion, especially useful for long impulse responses with significant zero-padding.

Margin Before (ms)

Range: 0 to 50 ms
Default: 5 ms

Time added before detected signal start.

Purpose: Ensures pre-ringing or early arrivals are visible in the plot.

Margin After (ms)

Range: 0 to 100 ms
Default: 10 ms

Time added after detected signal end.

Purpose: Captures decay tail and late reflections.

Sum Focus

Default: Disabled

When enabled in multi-driver plots:

  • All curves (individual drivers and sum) use the summed IR time boundaries
  • Focuses on the main energy region of the system response

When disabled (default):

  • Uses the union of all individual curve boundaries
  • Shows the full extent of all driver responses

Use case: Quickly identify timing alignment issues across speakers by focusing on the system sum.


Settings Summary Table

SettingDefaultPurpose
Appearance
UI Color SchemeRedInterface accent colors
ThemeFollow SystemLight/Dark mode
Filter Processing
Clipping DetectionEnabledSafety warnings for filter output levels
Auto Causal AlignmentEnabledOptimize IR positioning with causal filters
Default Values
Sample Rate48 kHzDefault for new projects
Speaker FIR Taps512Per-driver FIR filter length
Global FIR Taps512Global correction filter length
Curve Smoothing1/12 octaveFrequency response smoothing
Graph Display ModeDrivers/MeasurementsInitial display mode
Phase DisplayWrappedPhase graph mode
Time-Centered PhaseDisabledLinear phase removal
Sweep Parameters
Sweep Duration2 sMeasurement sweep length
Sweep Level-6 dBFSOutput level
Start Frequency0.1 HzLower frequency limit
End FrequencyNyquistUpper frequency limit
Graphs
Plot Resolution64k pointsFrequency point count
GD/Phase TruncationEnabledTruncate by magnitude threshold
Truncation Thresholds-20 dBThreshold below max
Drivers Range60 dBY-axis range for drivers
Filters Lower Bound-100 dBY-axis lower limit for filters
Adaptive IR DisplayEnabledAuto-detect IR boundaries
Margin Before5 msPre-signal margin
Margin After10 msPost-signal margin
Sum FocusDisabledUse sum boundaries for all curves

Performance Considerations

Real-Time Filter Processing Architecture

LinFIR differs fundamentally from traditional FIR filter design software in how it processes and displays results.

Real-time (“online”) filter generation:

  • Filters are generated and applied to driver impulse responses in real time based on UI interactions
  • The complete signal processing chain is computed immediately as you adjust parameters
  • You see the true response of the entire filter chain instantly, including all windowing artifacts and actual behavior

Why this matters:

  • Immediate feedback: No “generate” or “apply” button required - changes are visible instantly
  • Transparency: Shows exactly what the filters can and cannot do, with all artifacts visible
  • Accuracy: No approximation or preview mode - what you see is what you get

Contrast with traditional software:

  • Most FIR design tools require you to validate parameters before showing the true response
  • They often show theoretical or idealized responses that don’t reflect actual implementation artifacts
  • LinFIR prioritizes showing real-world behavior over computational convenience

Filter Application Methods

FIR filters:

  • Applied via fast convolution (multiplication in Fourier domain)
  • Highly efficient for typical filter lengths
  • Computational cost scales with filter length and number of measurements

IIR filters:

  • Applied via recursive difference equations (time-domain processing)
  • Extremely efficient regardless of filter complexity
  • Minimal performance impact even with many cascaded sections

Performance Impact Factors

Filter length:

  • Filters up to 4096 taps: Negligible performance impact on modern CPUs
  • Filters 4096-8192 taps: May cause slight delays on slower systems
  • Filters >8192 taps: Can noticeably slow down the application, especially during interactive adjustments

Off-axis measurements:

  • Each off-axis measurement requires the full filter chain to be recomputed
  • Projects with many off-axis angles and long filters may experience longer update times
  • LinFIR prioritizes UI responsiveness using background processing (see below)

Background Processing for Responsiveness

To maintain smooth UI interaction even with complex projects, LinFIR uses processing prioritization:

Priority processing (synchronous, immediate):

  • On-axis measurement (0°, 0°): Always computed first in the main thread
  • Currently displayed angle: Computed immediately for instant visual feedback
  • Filter parameters: Updated in real-time as you adjust controls

Background processing (asynchronous, non-blocking):

  • Remaining off-axis measurements: Computed in a background thread after priority angles
  • Directivity index: Calculated asynchronously when all measurements are ready
  • System sum calculations: Processed in parallel when multiple drivers are active

User experience:

  • Main graph updates are always immediate - you see changes to the selected angle instantly
  • UI remains fully responsive even during heavy background computations
  • You can continue adjusting parameters while background calculations complete

Optimization Recommendations

For slower systems or very long filters (>8192 taps):

  1. Reduce plot resolution: Settings → Graphs → Plot Resolution

    • Default: 64k points (maximum quality)
    • Recommended for performance: 16k or 32k points
    • Performance improvement with minimal visual quality loss
  2. Disable clipping detection: Settings → General → Filter Processing

    • Eliminates test signal processing on every update
    • Only disable if you’re confident in your gain staging
  3. Limit off-axis measurements:

    • Use reasonable angle increments (10 or 15°)

Performance is always optimal for:

  • Projects with standard filter lengths (≤4096 taps)
  • IIR-only filtering (always fast regardless of complexity)
  • Single on-axis measurements
  • Modern multi-core processors (2020 or newer)

Best Practices

Performance Optimization

  • Slower systems: Reduce plot resolution to 16k or 32k points
  • Complex projects: Consider disabling clipping detection if filters are well-understood

Filter Design

  • Auto Causal Alignment: Keep enabled unless you need precise manual control over IR positioning
  • Clipping Detection: Keep enabled during design, test actual content before deploying

Graph Display

  • Truncation: Enable for cleaner phase/GD plots focused on active frequency regions
  • Sum Focus: Enable when analyzing multi-driver timing alignment

Measurement Setup

  • Sweep Duration: Use 5-7 seconds for full-range, 2-3 seconds for limited bandwidth
  • Sweep Level: Adjust based on amplifier sensitivity (-12 to -6 dBFS typical)

Driver Processing

Each driver in LinFIR can be individually processed with a comprehensive signal chain combining FIR crossovers, FIR correction filters, IIR equalization, polarity inversion, and time/gain adjustments.

The processing chain for each driver follows this order:

Raw IR → Windowing → FIR Crossover (HP+LP) → FIR Correction → IIR Filters → Gain/Delay/Polarity → Output

Driver Management

Adding and Removing Drivers

Add Driver:

  • Maximum: 10 drivers per project
  • Click ➕ Add Driver button in the Drivers toolbar
  • New driver initialized with default settings

Remove Driver:

  • Click 🗑️ Remove button in the driver’s collapsing section

Driver Organization:

  • Drivers are organized in collapsible sections in the left toolbar
  • Each section shows the driver name (or “Driver 1”, “Driver 2”, etc. if unnamed)
  • Driver names are automatically set when importing impulse responses

Driver Controls

Enable/Disable and Solo

Enable Toggle:

  • Button to enable/disable individual drivers
  • Disabled drivers are excluded from calculations and the summed response
  • Useful for A/B testing or isolating specific drivers

Solo Button:

  • Instantly disables all other drivers and enables only the selected driver
  • Quick way to review individual drivers in isolation

All Button:

  • Re-enables all drivers simultaneously
  • Convenient after using Solo mode

Impulse Response Management

Loading Impulse Responses

Click Manage IR to open the impulse response management window for:

  • Importing pre-recorded impulse responses
  • Capturing new measurements via audio interface
  • Configuring IR windowing parameters
  • Managing off-axis measurements for directivity analysis

See IR Management for detailed documentation.

IR Status Indicator:

  • Gray “No IR loaded”: Driver has no impulse response
  • Green “✅ IR loaded”: Valid impulse response loaded

⚠️ Note: A loaded impulse response is required for filter design and correction. Without an IR, only theoretical filter responses can be displayed.


Target DSP Settings

DSP Settings DSP Settings

The Target DSP Settings section configures fundamental parameters that determine filter design constraints and export characteristics. These settings directly impact frequency resolution, latency, and compatibility with your target DSP platform.

⚠️ Note: You can change these settings at any time to match different DSP characteristics, but doing so will affect the precision, effectiveness, delays, and slopes of any FIR filters you have already set.

Sample Rate

Options: 44.1 kHz, 48 kHz, 88.2 kHz, 93.75 kHz, 96 kHz, 176.4 kHz, 192 kHz
Current project: Fixed at project creation

The sample rate is set when creating a new project and cannot be changed afterward. It determines:

  • Nyquist frequency: Maximum representable frequency (sample rate / 2)
  • Filter frequency resolution: Higher rates provide finer resolution
  • Latency: For a given tap count, higher sample rates have lower latency in milliseconds
  • DSP compatibility: Must match your target DSP platform’s operating sample rate

Common choices:

  • 44.1 kHz: Compact DSP platforms with limited processing power
  • 48 kHz: Professional audio standard, most DSP platforms
  • 88.2 kHz: High-resolution audio (2× CD rate, relatively uncommon for DSP)
  • 93.75 kHz: Hypex DSP platforms (FA123, FA253, FA502, etc.)
  • 96 kHz: High-resolution audio, some professional DSP platforms
  • 176.4/192 kHz: Ultra-high resolution - only when DSP platform specifically requires it

Enable per-driver tap lengths

Default: Disabled (global tap length applies to all drivers)

When disabled (default):

  • Single Filter length (taps) control in Target DSP Settings applies to all drivers
  • Single Export padding control in Target DSP Settings applies to all drivers
  • Simpler configuration for uniform systems
  • All drivers use the same FIR filter length

When enabled:

  • Filter length (taps) and Export padding controls move from Target DSP Settings to individual driver sections
  • Each driver gets its own controls in its collapsible section
  • Allows optimization: fewer taps for tweeters, more for woofers/subwoofers
  • Useful for minimizing DSP load while maintaining quality where needed

Per-Driver Tap Lengths Enabled Per-Driver Tap Lengths Enabled

Example use case: Use 2048 taps for subwoofer (needs low-frequency resolution), 512 taps for tweeter (high frequencies need less resolution).

⚠️ Note: Linear phase FIR filters and phase-correction FIR filters introduce noticeable delays that depend on the number of taps. Different tap lengths between drivers will likely introduce time misalignments, which you can correct using the Time Delay parameter in the Visual Controls section.

Filter Length (Taps)

Range: 32 to 65536 taps
Default: 512 taps
Location:

  • Global mode (per-driver tap lengths disabled): In Target DSP Settings section
  • Per-driver mode (per-driver tap lengths enabled): In each driver’s collapsible section

Controls the length of all FIR filters for this driver (crossover and correction filters).

Frequency Resolution:

  • Resolution (Hz) = Sample Rate / Tap Count
  • Example at 48 kHz: 512 taps = 93.75 Hz resolution, 4096 taps = 11.72 Hz resolution
  • Lower frequencies need more taps for precise control

Latency (Linear-Phase):

  • Latency = (Taps / 2) / Sample Rate
  • Example at 48 kHz: 512 taps = 5.33 ms, 4096 taps = 42.67 ms
  • Can be reduced using Causality control at the cost of phase linearity

Practical guidelines:

  • 256-512 taps: Tweeters, minimal latency applications
  • 512-2048 taps: Most crossover and correction applications
  • 2048-4096 taps: Typical maximum for full-range loudspeaker designs
  • 4096-8192 taps: Subwoofer correction, room correction
  • 8192-16384 taps: Specialized low-frequency correction below 20 Hz
  • >16384 taps: Rarely needed (extreme cases, research purposes)

Trade-offs:

  • ✅ More taps = better frequency resolution, steeper filter slopes, more precise correction
  • ❌ More taps = higher latency (for linear-phase), increased DSP load, larger export files

Export Padding

Range: 0 to 65536 taps
Default: 0
Location:

  • Global mode (per-driver tap lengths disabled): In Target DSP Settings section
  • Per-driver mode (per-driver tap lengths enabled): In each driver’s collapsible section

Adds zero-padding only to exported files, without affecting internal processing or design.

Purpose:

  • Some DSP platforms require specific filter lengths (e.g., powers of 2: 512, 1024, 2048, 4096)
  • Padding allows meeting DSP requirements without changing internal design
  • Does not affect latency, delay, or any graph displays

How it works:

  • Internal design: Uses configured tap count
  • Export: Appends zeros to reach (Taps + Padding) length
  • Frequency response remains identical (zero-padding doesn’t alter frequency content)

Example scenario:

  • Design with 3000 taps, DSP requires power-of-2 → Set padding to 1096 → Exports 4096 taps

When not needed: If your DSP accepts arbitrary filter lengths, leave padding at 0.


FIR Crossover Filters

FIR Low-Pass Filter

Enable: Toggle FIR LP button
Configure: Click Configure button (only available when enabled)

Applies a linear-phase low-pass filter to limit the driver’s high-frequency response.

FIR Low-Pass Configuration FIR Low-Pass Configuration

Parameters:

Filter Type

Choose the crossover filter design:

  • Brickwall: Ideal brickwall (Sinc) filter using Kaiser window

    • Sharpest possible slope
    • Controlled transition width via Kaiser β parameter
  • Linkwitz-Riley: Linkwitz-Riley aligned response

    • -6 dB at crossover frequency (sums to 0 dB when paired with matching HP)
    • Constant power summing when combined with complementary HP filter
    • Order: 2, 4, 6, 8, or 10 (even orders only)
  • Butterworth: Classic analog-style Butterworth response

    • Maximally flat magnitude in passband
    • Order: 1 to 10
  • Bessel: Bessel/Thomson response

    • Originally optimized for linear phase response and minimal group delay variation
    • Gentler roll-off than Butterworth
    • Order: 1 to 10

Cutoff Frequency

Range: 1 Hz to Nyquist frequency
Step: 1 Hz

The -6 dB point for brickwall filters, or the characteristic frequency for Butterworth/Linkwitz-Riley filters.

Typical values:

  • Woofer-Midrange: 300-800 Hz
  • Midrange-Tweeter: 2-4 kHz

Kaiser β

Range: 0.0 to 50.0
Default: 8.0

Controls the Kaiser window applied to the FIR filter impulse response. This parameter adjusts the trade-off between transition width and stopband ripple:

For Brickwall filters:

  • Lower values (3-5): Narrower transition BUT higher stopband ripple (higher sidelobe levels)
  • Moderate values (6-10): Balanced transition width and stopband attenuation
  • Higher values (12-20): Wider transition BUT lower stopband ripple (better attenuation)

For Butterworth, Linkwitz-Riley and Bessel filters:

  • Controls FIR windowing to suppress ringing and ripple in the stopband
  • Lower values (3-5): Sharper response BUT higher ripple/ringing in stopband
  • Moderate values (6-10): Good balance between sharpness and ripple suppression
  • Higher values (12-20): Gentler response BUT maximum ripple suppression

Common choices:

  • β = 5: Narrow transition with noticeable ripple (not necesarrily audible as the complementary driver will mask it)
  • β = 8-9: Standard crossover design, good compromise
  • β = 12-15: Wide transition with excellent stopband attenuation

Order (Butterworth/Linkwitz-Riley/Bessel only)

Butterworth/Bessel Range: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Linkwitz-Riley Range: 2, 4, 6, 8, 10 (even only)

Higher order = steeper slope (more dB/octave attenuation).

  • 2nd order: 12 dB/octave (gentle slope)
  • 4th order: 24 dB/octave (most common for LR designs)
  • 6th order: 36 dB/octave
  • 8th order: 48 dB/octave (steep slope)

Causality

Range: 0.0 (linear-phase) to 1.0 (minimum-phase)
Default: 0.0 (linear-phase)

Interpolates between linear-phase and minimum-phase behavior for the FIR crossover filter.

Purpose: Limits the delay introduced by the FIR filter while maintaining steeper slopes than IIR filters, at the cost of phase distortion.

Linear-Phase (0.0):

  • Symmetric pre- and post-ringing
  • Constant group delay across all frequencies
  • No phase distortion
  • Highest latency (taps/2 samples)
  • Best for high-fidelity applications

Minimum-Phase (1.0):

  • No pre-ringing (all energy is causal)
  • Variable group delay
  • Phase follows magnitude via Hilbert transform
  • Minimal latency
  • Best for low-latency applications

Intermediate values:

  • Blend between linear and minimum phase
  • Reduced pre-ringing compared to linear-phase
  • Some phase distortion compared to linear-phase
  • Lower latency than full linear-phase

Typical values:

  • 0.0: High-fidelity systems, studio monitors, reference designs
  • 0.5: Balanced compromise
  • 1.0: Low-latency systems, live sound, PA applications

Trade-off: Increasing causality reduces latency but introduces phase distortion. For multi-driver systems, matching causality settings across all drivers maintains phase coherence.


FIR High-Pass Filter

Enable: Toggle FIR HP checkbox
Configure: Click Configure button (only available when enabled)

Applies a linear-phase high-pass filter to limit the driver’s low-frequency response.

Parameters: Identical to FIR Low-Pass (Type, Cutoff, Kaiser β, Order, Causality)

Linkwitz-Riley and Brickwall Crossover Design: When using complementary LR filters (e.g., woofer LP at 500 Hz + midrange HP at 500 Hz, both 4th order), the combined magnitude response is flat at the crossover point.


FIR Correction Filter

Enable: Toggle FIR Corr button
Configure: Click Configure button (only available when enabled)

Applies frequency-domain magnitude and/or phase correction using the loaded impulse response.

FIR Correction Configuration FIR Correction Configuration

The correction filter window has two main sections: Magnitude and Phase.

Magnitude Correction

Enable Magnitude Correction

Toggle to enable/disable magnitude response correction independently from phase.

Calculation Point

Choose where correction is calculated in the processing chain:

  • pre-IIR: Correction computed from raw IR before IIR filters

    • Use when IIR filters are for fine-tuning only
    • Simpler, doesn’t account for IIR response
  • post-IIR: Correction computed after IIR filter application

    • Accounts for IIR filter effects in the correction calculation
    • Use when IIR filters significantly alter the response
    • More accurate for complex filter chains

Target Curve

Click Configure to open the target curve configuration window.

Purpose: Define the desired magnitude response for this driver.

See Target Curves for detailed configuration.

Frequency Range

Start Frequency:

  • Range: 1 Hz to Nyquist
  • Default: 20 Hz
  • Lower limit for magnitude correction

End Frequency:

  • Range: 1 Hz to Nyquist
  • Default: Nyquist
  • Upper limit for magnitude correction

Purpose: Restrict correction to a specific frequency range, avoiding correction where measurements are unreliable or correction is undesirable.

Important: Magnitude correction applies a smooth taper (transition zone) at the frequency range boundaries to prevent discontinuities:

  • Taper width: Quarter-octave (1/4 octave) above and below the correction range
  • Taper function: Raised cosine (smooth fade-in/fade-out)
  • Below Start Frequency: Correction weight fades from 0% at Start / 2^(1/4) to 100% at Start
  • Above End Frequency: Correction weight fades from 100% at End to 0% at End × 2^(1/4)
  • Example: For Start = 200 Hz, the taper begins at 168 Hz. For End = 10 kHz, the taper extends to 11.9 kHz
  • Purpose: Ensures smooth transitions without abrupt magnitude steps or phase artifacts

Critical Understanding: Correction Source Signal

The magnitude correction filter is computed from the driver’s impulse response without FIR low-pass or high-pass filters applied (those are applied later in the signal chain). The correction sees:

  • IIR filters (if “post-IIR” calculation mode is enabled)
  • FIR LP/HP crossovers (not applied yet)

Practical Implications:

1. With IIR Crossovers (post-IIR mode):

  • The correction attempts to flatten the IIR crossover rolloff
  • ⚠️ This removes your crossover slope, which is usually undesirable
  • Solution: Limit the frequency range to roughly your driver’s final passband
  • Example: For a tweeter with IIR HP at 2 kHz, set correction range to 2.5 kHz - 20 kHz

2. With pre-IIR mode or FIR crossovers:

  • The correction sees the driver’s raw natural rolloff
  • Risk: Amplifying rolloff increases noise and distortion outside the intended band
  • Sometimes helpful: Can improve summation in the crossover transition region
  • Solution: Set frequency range to where summation matters, don’t extend further
  • Example: For a midrange crossing at 500 Hz and 3 kHz, limit to 400 Hz - 4 kHz

Best Practice: Configure the frequency range to match your driver’s intended operating band considering your crossover strategy, not just where the measurement looks good.

Resolution

Options: 1/48 oct, 1/24 oct, 1/12 oct, 1/6 oct, 1/3 oct
Default: 1/12 octave

Fractional-octave smoothing applied to the measured response before computing the correction filter. This determines the resolution of features that will be corrected.

Purpose: Avoid correcting measurement artifacts (reflections, diffraction ripples, noise) that are not inherent to the speaker’s response.

  • 1/48 oct to 1/24 oct: Minimal smoothing - risks correcting artifacts and creating excessive filter complexity
  • 1/12 oct: Recommended balance - corrects real speaker behavior while ignoring fine ripples
  • 1/6 to 1/3 oct: Heavy smoothing - corrects only broad trends

Key principle: The correction filter resolution should match the reliability of your measurement, not its raw resolution. Narrow features (<1/12 oct) are often artifacts, not real acoustic properties worth correcting.

Recommendation: Use 1/12 octave for typical speaker correction, 1/6 octave for room measurements or when measurement quality is uncertain.

Max. Attenuation (dB)

Range: 0 to 30 dB
Default: 10 dB

Maximum attenuation applied by the magnitude correction filter.

How it works: The correction filter works by “cutting from the top” - it attenuates peaks in the measured response to bring them down toward the target curve. This parameter limits how much attenuation is applied.

Purpose:

  • Prevents excessive notching of narrow peaks (which may be measurement artifacts)
  • Keeps the correction filter smooth and stable
  • Avoids creating deep notches that could be audible as resonances

Typical values:

  • 5-8 dB: Conservative correction for well-behaved drivers
  • 10 dB: Standard value for most applications
  • 12-15 dB: More aggressive correction (check impulse response for artifacts)
  • >15 dB: Rarely needed, may indicate measurement issues

Important: The correction filter primarily attenuates rather than boosts. Use Correction Gain (below) to compensate for the overall level reduction.

Correction Gain (dB)

Range: -20 to +20 dB
Default: 4 dB

Gain applied within the correction frequency range to compensate for the attenuation introduced by the magnitude correction filter.

Purpose:

  • Restores overall level after attenuation-based correction
  • Allows fine-tuning the driver’s output level
  • Maintains consistent loudness across the corrected frequency band

Typical values:

  • 0-4 dB: Minimal compensation (gentle correction)
  • 4-6 dB: Standard compensation for moderate correction
  • 6-10 dB: High compensation (use with caution)

⚠️ Warning: Excessive correction gain can cause clipping in the internal DSP signal chain or damage your drivers. Keep gain reasonable (< 6 dB recommended) to maintain headroom. If LinFIR’s clipping detection is enabled (see Global Settings), you’ll receive warnings about potential clipping.

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 amplify ripple from crossover filters (LP/HP) if active
  • Moderate values (6-10): Good balance between precision and ripple suppression
  • Higher values (12-20): Smoother correction, reduced ripple amplification, but less precise

When to adjust:

  • If you see excessive ripple in the stopband after applying correction with active crossover filters, increase Kaiser β
  • If correction seems too gentle or imprecise, decrease Kaiser β

Recommendation: Start with default 8.0, increase to 12-15 if ripple is problematic with crossover filters active.

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

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 crossover filters (HP/LP) and 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

Same as magnitude: pre-IIR or post-IIR calculation mode.

pre-IIR: Phase correction computed from raw IR before IIR filters
post-IIR: Phase correction computed after IIR filter application

Resolution (Phase)

Options: 1/48 oct, 1/24 oct, 1/12 oct, 1/6 oct, 1/3 oct
Default: 1/12 octave

Fractional-octave smoothing applied to the measured phase response before computing the correction filter.

Recommendation: Use heavier smoothing (1/6 to 1/3 octave) for phase correction to avoid chasing measurement noise and room reflections.

Intensity

Range: 0% to 100%
Default: 100%

Controls the amplitude/strength of the phase correction.

Purpose:

  • Allows partial phase correction for smoother transitions
  • Reduces phase correction aggressiveness if full correction creates artifacts
  • Useful for blending between corrected and uncorrected phase

Typical values:

  • 100%: Full phase correction (default)
  • 50-80%: Partial correction for gentler results
  • 0%: No phase correction (disabled)

Phase Offset

Range: -180° to +180°
Default:

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:

  • : 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 magnitude oscillations when crossover filters (LP/HP) are active
  • Moderate values (6-10): Good balance between precision and magnitude artifacts
  • Higher values (12-20): Reduced ripple amplification BUT may introduce magnitude artifacts elsewhere in the spectrum

When to adjust:

  • If you see unexpected magnitude ripple after applying phase correction with active crossover filters, increase Kaiser β
  • If phase correction seems imprecise, decrease Kaiser β (but watch for magnitude artifacts)

Recommendation: Start with default 1.0, increase to 12-15 if magnitude oscillations appear with crossover filters active.

Frequency Range (Phase)

Start Frequency:

  • Range: 0 Hz to Nyquist
  • Default: 0 Hz

End Frequency:

  • Range: 0 Hz to Nyquist
  • Default: Nyquist

Limits the frequency range for phase correction.

Purpose: Phase correction often requires a narrower range than magnitude correction, focusing on the driver’s primary operating band.

Why limit the range?

Large phase deviations (especially at low frequencies) can require very long filters to correct properly. When phase deviation is too large for the available filter length (tap count), significant filter energy falls near or outside the tap window. Truncating this energy creates magnitude ripples and artifacts.

Practical use:

  • Restrict phase correction to frequencies where deviation is moderate and correctable within your tap budget
  • Exclude extreme low frequencies if phase deviation causes visible magnitude artifacts
  • Focus correction on the driver’s primary operating band (e.g., 200 Hz - 10 kHz for a midrange)

FIR Correction Best Practices

  1. Start conservative:

    • Begin with 1/6 or 1/3 octave smoothing
    • Limit maximum gain to 6-12 dB
  2. Narrow frequency range:

    • Only correct the driver’s intended operating band
    • Don’t correct below woofer resonance or above tweeter range
    • Avoid correcting crossover stopband region
  3. Magnitude before phase:

    • Get magnitude response flat first
    • Then add phase correction if needed
    • Phase correction is most effective with flat magnitude
  4. Check impulse response:

    • Excessive pre-ringing indicates too aggressive correction
    • Increase smoothing or reduce max gain if pre-ringing is severe
  5. Combine with IIR:

    • Use FIR correction for broad trends
    • Use IIR filters for narrow notches and fine adjustments

IIR Filtering

Enable: Toggle IIR Filters checkbox
Configure: Click Configure button (only available when enabled)

Apply cascaded biquad IIR filters for parametric equalization and precise frequency shaping.

IIR Filters Configuration IIR Filters Configuration

IIR Filter Tabs

The IIR window has two tabs:

Manual Tab

Design custom IIR filter chains with up to 50 filters.

Add Filter: Click ➕ Add Filter button
Remove Filter: Click button next to filter

Available Filter Types:

  • Peak/Notch: Parametric EQ (boost/cut at specific frequency)
  • Low Shelf: Boost/cut below shelf frequency
  • High Shelf: Boost/cut above shelf frequency
  • Low-Pass: Frequency-selective attenuation (high frequencies)
  • High-Pass: Frequency-selective attenuation (low frequencies)
  • All-Pass: Phase adjustment without magnitude change

Filter Parameters:

Frequency:

  • Center frequency for Peak/Notch
  • Cutoff frequency for LP/HP/Shelves
  • Corner frequency for All-Pass

Gain (dB):

  • Boost (+) or cut (-) amount
  • Only for Peak/Notch and Shelving filters
  • Range: -40 to +40 dB

Q Factor:

  • Filter bandwidth/sharpness
  • Higher Q = narrower bandwidth
  • Typical range: 0.5 to 20
  • Low Q (0.5-2): Wide, gentle curves
  • Medium Q (2-5): Standard parametric EQ
  • High Q (10-20): Narrow notches for resonance control

Order (LP/HP only):

  • Filter slope steepness
  • Range: 1 to 10 (depending on filter type)
  • Each order adds 6 dB/octave slope

Pass Type:

  • Low-Pass, High-Pass: Frequency-selective filtering
  • Peak/Notch: Standard parametric EQ

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”

Use Cases:

  • Lock protective filters (high-pass, low-pass) to preserve them when clearing other filters
  • Preserve manually tuned filters when experimenting with different EQ approaches
  • Protect critical filters (driver protection, subsonic filters) from accidental deletion

Auto Tab

Automatically generated equalization with manual control.

Adding Filters:

  • Click ➕ Add Filter to manually add filters in Auto EQ tab
  • Add protective filters (high-pass, low-pass, notches) before running Auto EQ
  • Lock them with 🔒 icon to preserve during Auto EQ generation

Manual Editing:

  • All filters in Auto EQ tab are editable (frequency, gain, Q)
  • Adjust auto-generated filters directly without cloning
  • Lock important filters to prevent removal during regeneration

Generate Auto EQ:

  • Click Generate to automatically create corrective filters
  • Auto EQ respects locked filters (integrates HP/LP into target curve)
  • Unlocked filters are replaced with new auto-generated corrections

Copy to Manual:

  • Click Clone from Auto EQ to copy the entire filter set to Manual tab
  • Useful for preserving a working Auto EQ configuration while experimenting in Manual

Auto EQ Parameters

When you click Generate in the Auto EQ tab, the optimizer uses the following parameters to create corrective filters:

Gain Offset:

  • Range: -20 to +20 dB
  • Default: 0 dB
  • Purpose: Adjusts the overall target level before EQ optimization
  • Use case: Compensate for overall system level shifts without changing filter gains

Gain Min / Gain Max:

  • Range: -20 to +20 dB
  • Default: -6 to +6 dB
  • Purpose: Limits the boost/cut range for each individual filter
  • Use case: Prevent excessive corrections that could cause clipping or sound unnatural

EQ Boost Cap:

  • Range: 0 to +20 dB
  • Default: 6 dB
  • Purpose: Soft-clips the correction target to prevent filter stacking at the same frequency
  • Use case: Set lower values (e.g., 4 dB) for more conservative corrections

Q Min / Q Max:

  • Range: 0.1 to 20.0
  • Default: 0.3 to 8.0
  • Purpose: Controls the bandwidth/sharpness of generated filters
  • Use case: Lower Q = wider corrections, higher Q = narrow notches for resonances

Max Filters:

  • Range: 1 to 30
  • Default: 12
  • Purpose: Maximum number of filters to generate (including shelves if enabled)
  • Use case: More filters = more precise correction, but more phase impact

Freq Min / Freq Max:

  • Range: 10 to 22,000 Hz
  • Default: 20 to 20,000 Hz
  • Purpose: Defines the frequency range for filter placement and correction
  • Important: Auto EQ applies a quarter-octave taper (1/4 octave) above and below these frequency limits to ensure smooth transitions without discontinuities in the correction
  • How the taper works:
    • Below Freq Min: Correction weight gradually reduces from 100% at Freq Min to 0% at Freq Min / 2^(1/4) (quarter-octave below)
    • Above Freq Max: Correction weight gradually reduces from 100% at Freq Max to 0% at Freq Max * 2^(1/4) (quarter-octave above)
    • Outside taper zones: No correction applied (weight = 0%)
  • Use case: Focus correction on the driver’s operating band, exclude problematic regions (e.g., below resonance, room modes, or above useful bandwidth)

Low Shelf / High Shelf:

  • Toggle: Enable/disable shelf filters
  • Purpose: Allow AutoEQ to include shelving filters for broad tonal adjustments
  • Use case: Enable for better overall tonal balance, disable for peaking-only corrections

Resolution:

  • Options: 1/48, 1/24, 1/12, 1/6, 1/3 octave
  • Default: 1/12 octave
  • Purpose: Smoothing applied to the current response before optimization
  • Use case: Higher smoothing (1/3 oct) = broader corrections, lower smoothing (1/48 oct) = more detailed corrections

IIR Filter Applications

Parametric EQ (Peak/Notch):

  • Boost/cut specific frequencies
  • Correct narrow resonances or notches
  • Fine-tune response after FIR correction

Shelving Filters:

  • Broad treble/bass adjustments
  • Tilt EQ for overall tonal balance
  • Baffle step compensation
  • Psychoacoustic tuning

Notch Filters:

  • Suppress driver resonances

Low-Pass/High-Pass:

  • Additional crossover filtering (complements FIR)
  • Subsonic/ultrasonic filtering

All-Pass:

  • Phase correction without affecting magnitude
  • Time alignment adjustments
  • Advanced multi-driver phase matching

IIR Best Practices

  1. Use sparingly:

    • Fewer filters = cleaner phase response
    • Each biquad adds phase rotation
    • Prefer FIR correction for broad magnitude shaping
  2. Narrow adjustments:

    • IIR excels at narrow peaks/notches
    • Use Q > 5 for resonances
    • Use Q < 2 for broad tonal adjustments
  3. Check phase impact:

    • View phase plot when adding IIR filters
    • High-Q filters create significant phase rotation
    • Consider if phase impact is acceptable
  4. Combine with FIR:

    • FIR correction for broad trends (1/3 to 1/6 oct smoothing)
    • IIR filters for narrow resonances and fine details
    • Best of both worlds

Driver Adjustments

Polarity Inversion

Toggle: Polarity button

Inverts the driver’s signal (180° phase shift across all frequencies).

Use cases:

  • Correct out-of-phase drivers
  • Optimize multi-driver summation (especially for dipole/bipole designs)
  • Fix inverted wiring
  • Align asymmetric crossovers

How to check:

  • Observe step response: positive step should have initial positive rise
  • Check summed magnitude: in-phase drivers sum coherently (+6 dB), out-of-phase drivers cancel

Gain Adjustment

Range: -40 to +40 dB
Step: 0.1 dB
Default: 0 dB

Adjusts the driver’s output level.

Use cases:

  • Compensate for driver sensitivity differences
  • Set target SPL for each driver
  • Balance multi-driver systems
  • Fine-tune summed response

Time Delay

Range: 0.0 to 100.0 ms
Step: equivalent to 1 sample (depends on target sampling frequency) Default: 0.0 ms

Adds pure time delay to the driver’s output.

Use cases:

  • Align drivers physically offset from each other
  • Compensate for acoustic center differences
  • Time-align multi-way systems for coherent summation
  • Correct for DSP processing delays

Calculation:

  • Distance (m) to delay (ms): delay = distance / 0.343 m/ms
  • Example: 10 cm offset = 0.291 ms delay

Delay Step Size:

  • Automatically adjusted based on sample rate
  • Higher sample rates allow finer delay precision
  • Use fine adjustments for critical time alignment

FIR Compensation Delay

Range: 0.0 to 100.0 ms
Step: equivalent to 1 sample (depends on target sampling frequency) Default: 0.0 ms

Additional delay applied only to the FIR filter chain, not the entire signal.

Purpose:

  • Manual control over FIR filter impulse positioning
  • Fine-tune FIR filter alignment when Auto Causal Alignment is disabled
  • Shift FIR maximum to optimal crop window position

Use case: When combining multiple causal FIR filters, the impulse maximum may shift. FIR Compensation Delay allows manually repositioning the combined FIR response to avoid truncation.

Recommendation: Use Auto Causal Alignment unless you need precise manual control.


Processing Chain Summary

The complete driver processing chain:

  1. Raw Impulse Response

    • Loaded via IR Management window
    • Windowed with configurable start/stop times
  2. FIR Crossover Filters

    • High-pass filter (if enabled)
    • Low-pass filter (if enabled)
    • Applied in time domain
  3. FIR Correction Filter

    • Magnitude correction (if enabled)
    • Phase correction (if enabled)
    • Applied in time domain
  4. Combined FIR Filters

    • All FIR filters convolved into single impulse response
    • Cropped to configured tap length
    • Causality interpolation applied
  5. IIR Filtering

    • Cascaded biquad sections
    • Applied in time domain (as SOS transfer function)
  6. Driver Adjustments

    • Polarity inversion (if enabled)
    • Gain adjustment
    • Time delay
  7. Final Output

    • Processed driver response
    • Summed with other drivers for system response

Workflow Recommendations

Starting a New Driver

  1. Load impulse response via Manage IR
  2. Configure windowing to isolate direct sound
  3. Set filter length (512-4096 taps for most designs)
  4. Add FIR crossover (LP/HP) if needed
  5. Apply FIR correction (start conservative: 1/6 oct smoothing, 12 dB max gain)
  6. Check summed response, adjust gain/delay for coherent summation
  7. Add IIR filters for fine-tuning (narrow resonances, shelves)
  8. Optimize causality if latency is critical
  9. Export filters for DSP deployment

Multi-Way Design

  1. Load all driver IRs (woofer, midrange, tweeter)
  2. Set crossover frequencies based on driver capabilities
  3. Apply complementary crossovers (e.g., LR4 at matching frequencies)
  4. Check phase alignment and IR (step) summation in phase and IR (step) plots
  5. Adjust time delays to align acoustic centers
  6. Check summed magnitude for flat on-axis response
  7. Fine-tune with IIR for final voicing
  8. Verify step response for correct polarity and alignment

Keyboard Shortcuts

  • Cmd+W / Ctrl+W: Close configuration windows (LP, HP, Correction, IIR)
  • F: Switch to Filters display mode
  • D: Switch to Drivers display mode
  • U: Toggle wrapped/unwrapped phase
  • C: Toggle time-centered phase

See Keyboard Shortcuts for complete reference.


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).

Global FIR Correction Window Global FIR Correction Window

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/2 samples 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/2 samples
  • 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-IIR or post-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-IIR to correct the final room + speaker response. For loudspeaker design, use pre-IIR to 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 octave or 1/3 octave to avoid over-correcting room modes (which vary with position)
  • Loudspeaker design: Use 1/12 octave or 1/24 octave for 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 Hz and f_max = 12,000 Hz to 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-IIR or post-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-IIR for magnitude (correct drivers) and post-IIR for 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:

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:

  • : 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 Hz and f_max = 10,000 Hz to 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:

  1. Switch to Auto EQ tab
  2. Add protective filters (e.g., -24 dB/oct HP at 60 Hz, room mode notches) using ➕ Add Filter
  3. Lock them using the 🔒 icon
  4. Configure target curve (Flat, Harman, Custom)
  5. Click “Generate” to run Auto EQ optimization
  6. Review and adjust: Edit any auto-generated filter directly (frequency, gain, Q)
  7. Lock refined filters: Lock manually adjusted filters to preserve them
  8. Iterate: Regenerate Auto EQ as many times as needed—locked filters stay in place
  9. 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

  1. Design individual driver filters (FIR crossovers, FIR corrections, IIR EQ)
  2. Verify summed system response (check for phase cancellations, comb filtering)
  3. Apply global FIR correction if needed:
    • Correct driver interaction issues (dips, peaks from crossover summing)
    • Match system to target curve (Flat, Harman)
  4. Add global IIR filters for final voicing (bass/treble tilt, room-specific adjustments)
  5. Export filters for DSP platform

Room Calibration Mode

  1. Measure room response at listening position
  2. 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
  3. Add global IIR filters for specific room modes (parametric notches)
  4. Re-measure and iterate if needed
  5. 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.


  • 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.

Target Curves

Target curves define the desired frequency response for FIR correction and Auto EQ optimization. LinFIR provides built-in curves (Flat, Harman) and supports fully customizable user-defined curves.

Target Curve Configuration Target Curve Configuration

Target curves are used by:

  • FIR Correction filters (per-driver and global)
  • Auto EQ (per-driver and global IIR optimization)

Each filter type has its own independent target curve configuration.


Accessing Target Curve Configuration

Target curve windows are accessed from configuration buttons in the corresponding filter windows:

Per-Driver:

  • FIR Correction: Driver → FIR Correction → Magnitude Correction section → Configure button
  • Auto EQ: Driver → IIR Filters → Auto EQ tab → Target Curve section → Configure button

Global:

  • Global FIR Correction: Global FIR → Magnitude Correction section → Configure button
  • Global Auto EQ: Global IIR → Auto EQ tab → Target Curve section → Configure button

Built-in Target Curves

Flat Curve

Description: 0 dB gain across all frequencies (20 Hz to 20 kHz)

Use Cases:

  • Anechoic measurements requiring no psychoacoustic compensation
  • Verification/troubleshooting (no tonal bias)
  • Starting point for custom curves

Initialization:

  • Click Flat button
  • Creates 2 control points: (20 Hz, 0 dB) and (20 kHz, 0 dB)

Harman Target Curve

Description: Psychoacoustically optimized frequency response based on Harman research

Curve Shape:

  • +6 dB at 20 Hz: Enhanced deep bass presence
  • +5 dB at 50 Hz: Bass warmth
  • 0 dB at 200 Hz: Neutral lower midrange
  • -0.5 dB at 1 kHz: Slight midrange dip (reference frequency)
  • -5 dB at 20 kHz: Treble roll-off (reduces harshness)

Use Cases:

  • In-room listening: Compensates for typical room gain and psychoacoustic preferences
  • Room calibration: Starting point for subjective tuning

Initialization:

  • Click Harman button
  • Creates 5 control points with Harman curve shape

Customization:

  • Adjust bass tilt by modifying low-frequency points
  • Adjust treble slope by changing high-frequency points
  • Add intermediate points for detailed shaping

⚠️ Critical: Max. Attenuation vs. Curve Amplitude

FIR correction filters work primarily by attenuation (cutting peaks). The Max Attenuation parameter must be large enough to accommodate the amplitude of the target curve within the configured frequency range.

Example (full Harman curve, 20 Hz - 20 kHz): The default Harman curve has an amplitude of 11 dB (from +6 dB at 20 Hz to -5 dB at 20 kHz). If you set Max Attenuation to only 6 dB, the FIR filter cannot apply the full curve—specifically, the treble roll-off (-5 dB at 20 kHz) will not be applied.

Example (limited range, 200 Hz - 20 kHz): If you set Frequency Range from 200 Hz to 20 kHz, the effective amplitude is only 5 dB (from 0 dB at 200 Hz to -5 dB at 20 kHz). In this case, Max Attenuation ≥ 5 dB is sufficient.

Rule: Set Max Attenuation ≥ curve amplitude within f_min to f_max.

  • Calculate amplitude: Find max and min gain within your configured frequency range
  • Harman (20 Hz - 20 kHz): Use Max Attenuation ≥ 11 dB (recommend 12-15 dB)
  • Harman (200 Hz - 20 kHz): Use Max Attenuation ≥ 5 dB (recommend 6-8 dB)
  • Custom curves: Calculate max - min within your f_min/f_max range

Applies to: FIR Correction filters (per-driver and global). Auto EQ uses IIR filters (can boost and cut freely).


Custom Target Curves

Create fully custom target curves with unlimited control points.

Control Points

Each control point defines a (frequency, gain) pair:

Frequency:

  • Range: 1 Hz to 21,000 Hz
  • Log-scale distribution recommended (e.g., 20, 50, 100, 200, 500, 1k, 2k, 5k, 10k, 20k Hz)
  • Drag value to adjust

Gain:

  • Range: -20 dB to +20 dB
  • Positive values = boost, negative = cut
  • Drag value to adjust

Minimum Points: 2 (required for interpolation)


Adding Points

  1. Click + Add Point button
  2. New point created at 1 kHz, 0 dB
  3. Adjust frequency and gain as needed

Removing Points

  1. Click button next to the control point
  2. Cannot remove if only 2 points remain (minimum requirement)

Curve Interpolation

LinFIR automatically interpolates between control points to create a smooth curve:

Interpolation Process:

  1. Generate 5,000 log-spaced frequencies across the full range
  2. Log interpolation between user control points onto these 5,000 frequencies
  3. Linear interpolation from 5,000 points to target frequencies (filter FFT bins)

Result: Smooth, natural curve without artifacts even with few control points

Preview: Real-time graph shows interpolated curve (blue line) and control points (red dots)


Target Curve Preview Graph

The right panel shows a real-time preview of the target curve.

Elements:

  • Blue line: Final interpolated target curve (used by correction algorithms)
  • Red dots: User-defined control points

Axes:

  • X-axis: Frequency (Hz, logarithmic scale)
  • Y-axis: Gain (dB, linear scale)

Auto-scaling: Y-axis automatically adjusts to fit data range


Workflow Recommendations

Creating a Custom Curve from Scratch

  1. Click Flat to start with a neutral baseline
  2. Add control points at key frequencies:
    • 20 Hz: Deep bass level
    • 50-100 Hz: Bass warmth
    • 200-500 Hz: Lower midrange body
    • 1 kHz: Reference point (usually 0 dB or slightly negative)
    • 2-5 kHz: Presence region
    • 10 kHz: Air/sparkle
    • 20 kHz: Extreme treble roll-off
  3. Adjust gains to shape desired response
  4. Preview in graph and test with measurements

Modifying Harman Curve

  1. Click Harman to load default curve
  2. Adjust existing points:
    • Reduce 20-50 Hz gains for less bass
    • Increase 20 kHz gain for more treble extension
    • Add points at 2-5 kHz for presence adjustment
  3. Use as starting point for room-specific tuning

Room Calibration Workflow

  1. Measure in-room response without any FIR or IIR EQ
  2. Start with Harman curve (accounts for typical room gain)
  3. Apply correction and re-measure
  4. Fine-tune target curve:
    • Reduce bass points if room has excessive low-frequency gain
    • Adjust treble roll-off based on room absorption
    • Add notches at problematic room modes (if using Auto EQ)
  5. Iterate until subjectively satisfying

Loudspeaker Design Workflow

  1. Use Flat curve for anechoic FIR correction (individual drivers)
  2. Measure on-axis response and apply correction
  3. Verify off-axis response maintains reasonable shape

Best Practices

Control Point Placement

  • Use logarithmic spacing: Match human auditory perception (e.g., 20, 50, 100, 200, 500 Hz…)
  • Avoid excessive points: 5-10 points typically sufficient for smooth curves
  • Anchor bass and treble: Always define endpoints (20 Hz, 20 kHz)
  • Reference at 1 kHz: Many conventions use 1 kHz as 0 dB reference

Curve Shape Considerations

  • Avoid steep transitions: Can cause ringing in FIR filters and excessive Q in Auto EQ
  • Match measurement reliability: Don’t define detailed curve below measurement noise floor
  • Account for driver capabilities: Don’t demand excessive bass from small drivers
  • Psychoacoustic balance: Consider Fletcher-Munson curves at typical listening levels

FIR Correction: Max Attenuation vs. Curve Amplitude

Critical requirement for FIR correction filters:

FIR correction works primarily by attenuation (cutting peaks in the frequency response). The Max Attenuation parameter limits how much the filter can cut.

Problem: If the target curve has a large amplitude (difference between highest and lowest points), and Max Attenuation is set too low, the filter cannot apply the full curve shape.

Solution: Set Max Attenuation ≥ curve amplitude within the configured frequency range

Calculating Curve Amplitude:

  1. Find the highest gain in your target curve within f_min to f_max (configured Frequency Range)
  2. Find the lowest gain in your target curve within f_min to f_max
  3. Amplitude = highest - lowest within that range

Examples:

Harman curve, full range (20 Hz - 20 kHz):

  • Highest: +6 dB at 20 Hz
  • Lowest: -5 dB at 20 kHz
  • Amplitude: 6 - (-5) = 11 dB
  • Required: Max Attenuation ≥ 11 dB (recommend 12-15 dB)

Harman curve, limited range (200 Hz - 20 kHz):

  • Highest: 0 dB at 200 Hz
  • Lowest: -5 dB at 20 kHz
  • Amplitude: 0 - (-5) = 5 dB
  • Required: Max Attenuation ≥ 5 dB (recommend 6-8 dB)

Flat curve (any range):

  • Amplitude: 0 dB (curve is flat)
  • Any Max Attenuation works

Custom +10 dB bass, -8 dB treble, full range:

  • Amplitude: 10 - (-8) = 18 dB
  • Required: Max Attenuation ≥ 18 dB (recommend 20 dB)

What happens if Max Attenuation is too low:

  • The filter clips the attenuation at the maximum value
  • Parts of the curve are not applied (typically treble roll-off is lost)
  • Result: Incomplete correction, unbalanced tonal response

Recommendation:

  • Calculate amplitude only within your configured f_min/f_max range
  • Add 1-3 dB margin above calculated amplitude
  • Monitor corrected frequency response to verify full curve is applied
  • If limiting frequency range (e.g., 200 Hz - 10 kHz), you may need much less Max Attenuation

💡 Tip: This only applies to FIR correction filters. Auto EQ uses IIR filters which can boost and cut freely, so this limitation does not apply.

Testing and Validation

  1. Preview before applying: Check interpolated curve makes sense
  2. Apply to measurement: Use with FIR correction or Auto EQ
  3. Measure result: Verify corrected response matches target
  4. Iterate: Refine target based on measurements and listening tests

Technical Details

Interpolation Algorithm

Step 1: Log-space interpolation

  • Creates 5,000 log-spaced frequencies from minimum to maximum input frequency
  • Uses logarithmic interpolation between user control points
  • Preserves smooth transitions in log-frequency domain

Step 2: Linear resampling

  • Resamples 5,000-point curve to target frequencies (FFT bins)
  • Linear interpolation ensures smooth curve on target grid
  • No artifacts or discontinuities

Result: High-quality curve suitable for both FIR convolution and IIR optimization

Frequency Range

  • Minimum: 1 Hz (typically clamp to 20 Hz in practice)
  • Maximum: 21,000 Hz (or Nyquist frequency, whichever is lower)
  • Interpolation: Extends user points across full range

Gain Limits

  • Range: -20 dB to +20 dB per control point
  • No hard limit on curve: Interpolation can produce values outside this range between points
  • Practical limit: Avoid extreme gains to prevent filter artifacts

Common Use Cases

Studio Monitoring

Target: Custom curve with gentle tilt (or modified Harman)

  • Modern practice uses in-room curves rather than flat anechoic response
  • Gentle treble roll-off (-1 to -3 dB at 20 kHz) reduces listening fatigue
  • Slight bass lift (+1 to +3 dB below 100 Hz) compensates for room interaction
  • Purely flat curves are rarely used in practice—can sound harsh and fatiguing
  • Start with Harman and adjust to taste for extended listening sessions

Home Theater

Target: Harman curve (or modified)

  • Preferred tonal balance for movies and music
  • Accounts for room gain
  • Adjust bass/treble tilt to taste

Hi-Fi Listening

Target: Custom curve based on Harman

  • Start with Harman, adjust to preference
  • Reduce bass if room is overly boomy
  • Adjust treble based on speaker and room brightness

Car Audio

Target: Custom curve (elevated bass and treble)

  • Compensate for road noise (boost bass and treble)
  • Account for small cabin gain
  • Highly subjective—tune by ear

Headphone Compensation

Target: Diffuse-field or Harman headphone curve

  • Compensate for headphone frequency response
  • Simulate speaker-like tonality


Summary

Target curves define the desired frequency response for correction algorithms:

  • Built-in curves: Flat (0 dB) and Harman (psychoacoustic optimized)
  • Custom curves: Unlimited control points with automatic interpolation
  • Independent configuration: Each FIR correction and Auto EQ has its own target
  • Real-time preview: Interactive graph shows interpolated curve

Workflow:

  1. Open target curve window from filter configuration (Configure button)
  2. Initialize from Flat or Harman, or create custom
  3. Add/edit control points (frequency, gain)
  4. Preview interpolated curve in real-time
  5. Apply correction and measure results
  6. Iterate based on measurements and listening tests

Use target curves to shape your system’s tonal balance, compensate for room effects, and achieve your desired sound signature.

Directivity Analysis 🔒

License Required: Directivity analysis features require a valid LinFIR license. All other LinFIR features remain free to use.

Directivity analysis tools characterize how your speaker system radiates sound in different directions. These tools predict off-axis behavior, visualize interference patterns between drivers, and help optimize crossover design for consistent directivity.


Overview

Directivity analysis provides:

  • Off-axis frequency response visualization at any measured angle
  • Directivity Index (DI) prediction across the frequency spectrum
  • Directivity sonograms (2D frequency vs. angle heatmaps)
  • Crossover optimization insights based on radiation patterns

Key Applications:

  • Identify directivity errors, beaming and dispersion characteristics
  • Optimize crossover design for consistent off-axis response
  • Assess room interaction based on directivity patterns
  • Visualize interference patterns between drivers

Polar Measurements

Measurement Requirements

To use directivity tools, you need impulse responses at multiple angles:

Horizontal Axis:

  • Measurements with vertical angle = 0°, varying horizontal angle
  • Example: -90°, -60°, -30°, 0°, +30°, +60°, +90°
  • More angles provide better accuracy (5° or 10° increments recommended)

Vertical Axis:

  • Measurements with horizontal angle = 0°, varying vertical angle
  • Example: -60°, -40°, -20°, 0°, +20°, +40°, +60°
  • Particularly important for speakers with vertical array configurations

On-axis Reference:

  • The (0°, 0°) measurement is the on-axis reference
  • Must be captured first before off-axis measurements
  • Appears in both horizontal and vertical columns in the IR Management window

⚠️ Critical: Time of Flight Must Be Preserved

DO NOT:

  • Apply windowing that removes the acoustic delay
  • Time-align measurements to the same start point
  • Remove the relative delay between drivers

WHY:

  • The relative delay between angles encodes interference patterns
  • This delay represents the acoustic path length to the microphone
  • Off-axis measurements have different path length ratios between drivers
  • These delays create the directivity patterns we analyze

What happens if you remove time-of-flight:

  • DI calculation assumes drivers are co-located (incorrect)
  • Predicted interference patterns don’t match reality
  • Off-axis nulls and peaks won’t appear
  • Directivity sonograms show incorrect lobing patterns

⚠️ Critical: Use Proper Timing Reference

Configure a timing reference method in Audio Settings before capturing polar measurements:

Electric (loopback) - RECOMMENDED:

  • Most reliable method
  • Connect output to input with a cable
  • Eliminates software scheduler variability
  • See Reference Timing for setup

Acoustic (chirp):

  • Uses another driver as timing reference microphone
  • Good for setups where loopback is impractical
  • Requires careful positioning

Avoid “None” timing mode:

  • Relies on system audio scheduler (unreliable on Windows)
  • Timing jitter corrupts phase relationships between drivers
  • Can produce incorrect directivity analysis

💡 Tip: Stable timing is essential for accurate phase relationships between drivers. See Reference Timing for detailed setup instructions.


Measurement Tips

General Guidelines:

  • Keep microphone-to-speaker distance constant for all angles
  • Rotate the speaker (not the microphone) when possible
  • Ensure consistent room conditions for all measurements
  • Use high SNR settings to capture clean off-axis data

Distance Recommendations:

  • Farfield measurements (>1 meter) work best
  • Distance should be at least 2-3× the largest driver spacing
  • Too close = nearfield effects, inaccurate directivity
  • Too far = room reflections dominate

Microphone Positioning:

  • Ensure microphone height matches speaker acoustic center
  • Keep microphone axis perpendicular to speaker front baffle
  • Avoid obstructions in the measurement path

Off-Axis Curve Visualization

View off-axis frequency responses directly in the main graph window.

Accessing Off-Axis Display

Location: Main graph toolbar (Drivers/Speakers display mode only)

Angle Selector Angle Selector

Axis Selection:

  • Toggle between h (horizontal) and v (vertical) axis buttons
  • Only available when viewing individual drivers or summed system
  • Not available in Room Calibration modes

Angle Dropdown:

  • Select from available measurement angles
  • Only angles with actual measurement data are shown
  • always represents the on-axis reference

Interpreting Off-Axis Curves

Compare off-axis to on-axis:

  • Smooth transitions across angles = good dispersion control
  • Large deviations at certain angles = beaming or nulls
  • Crossover region consistency = proper driver integration

What to look for:

  • Beaming: Response drops off rapidly at off-axis angles (high-frequency issue)
  • Comb filtering: Peaks and dips that vary with angle (driver interference)
  • Crossover lobing: Nulls or peaks appearing at specific off-axis angles near crossover frequency
  • Baffle diffraction: Ripples that change with angle at mid-to-high frequencies

Example Interpretation:

Good directivity:

  • Off-axis curves smoothly roll off at high frequencies
  • No sudden dips, peaks or steps through crossover region
  • Consistent shape across ±30° angles

Poor directivity:

  • Deep nulls appearing at ±20° near crossover frequency
  • Off-axis step in frequency response near a crossover frequency, indicating directivity mismatch between drivers
  • Dramatic level changes between neighboring angles
  • Comb filtering visible at mid frequencies

Directivity Index (DI) Prediction

The Directivity Index (DI) quantifies how directional your speaker is across the frequency spectrum.

What is DI?

Definition:

\[ \text{DI} = 10 \times \log_{10}(Q) \]

where \(Q\) is the directivity factor

\(Q\) is calculated by spherical integration:

\[ Q = \frac{4\pi}{\int_0^{2\pi} \int_0^{\pi} |H(\theta,\phi)|^2 \sin(\theta) , d\theta , d\phi} \]

Interpretation:

  • 0 dB = omnidirectional (radiates equally in all directions)
  • Higher values = more directional (sound focused forward)

Typical DI Values

0-3 dB: Wide dispersion

  • Subwoofers
  • Large woofers at low frequencies
  • Most speakers below 200 Hz

3-6 dB: Moderate directivity

  • Most drivers at mid frequencies
  • Typical 2-way speakers at 1-4 kHz

6-12 dB: Controlled directivity

  • Waveguides and horns
  • Well-designed constant directivity systems
  • Ideal for controlled room interaction

12+ dB: Very directional

  • Narrow dispersion (potential beaming issues)
  • Extreme horns
  • May sound disconnected from room in typical listening spaces

How DI Reflects Filtering

The DI curve shows:

  • Combined effect of driver placement and crossover filtering
  • Interference between drivers creates peaks/dips in the DI
  • Crossover slopes affect how quickly directivity changes
  • Time-of-flight differences encode driver spacing in the DI pattern

Example DI Behaviors:

Smooth DI transition:

  • Gradual increase from 3 dB at 500 Hz to 6 dB at 4 kHz
  • Indicates good driver integration through crossover

DI spike at crossover:

  • Peak to 8-10 dB at 2.5 kHz, then drops to 6 dB at 3 kHz
  • Indicates on-axis summing peak (lobing) at crossover frequency
  • Off-axis response likely has nulls

DI dip at crossover:

  • Dip to 0 dB at crossover frequency
  • Indicates on-axis null (destructive interference)
  • May sound better off-axis than on-axis

Using DI for Design

Target smooth DI transition:

  • Avoid sudden changes (>3 dB) in DI through crossover region
  • Gradual transitions indicate good driver integration

Avoid sudden DI changes:

  • Peaks = on-axis lobing (hot spot)
  • Dips = on-axis null (cancellation)
  • Both indicate poor crossover alignment

Consider desired room interaction:

  • Wider DI (3-6 dB) = more room sound (spacious, diffuse)
  • Narrower DI (6-12 dB) = less room sound (direct, focused)
  • Match DI to listening environment and preference

Match DI to listening environment:

  • Near-field (desktop, mixing): Moderate DI acceptable (3-8 dB)
  • Far-field (living room, theater): Wider DI preferred (3-6 dB) to engage room
  • Treated rooms: Higher DI acceptable (6-10 dB) due to controlled reflections

Directivity Sonograms

The Directivity Sonogram window displays 2D visualizations of how sound radiates across frequency and angle.

Directivity Sonogram Directivity Sonogram

Accessing Sonogram Window

Menu: View → Directivity Sonogram
Requires: Valid LinFIR license and polar measurements loaded


Window Layout

Two separate sonogram plots:

  • Horizontal directivity: Vertical angle = 0°, varying horizontal angle
  • Vertical directivity: Horizontal angle = 0°, varying vertical angle

Axes:

  • X-axis: Frequency (Hz, logarithmic scale)
  • Y-axis: Measurement angle (degrees)
  • Color: Normalized magnitude in dB (0 dB = global maximum)

Color Scale

Hot colors (red/yellow): Higher SPL (0 to -6 dB)

  • On-axis or near-axis energy
  • Focused radiation

Warm colors (orange): Moderate attenuation (-6 to -12 dB)

  • Moderate off-axis output
  • Typical dispersion

Cool colors (blue/purple): Significant attenuation (-12 to -30 dB)

  • Heavily attenuated off-axis
  • Beaming or nulls

Range clamped to -30 dB for clarity (adjustable in settings)


Interpreting Sonograms

Horizontal bands:

  • Similar spectral balance across angles
  • A band remaining coherent from about −60° to +60° indicates a well-designed driver with controlled directivity and no excessive beaming

Angular width and color spread:

  • Warm colors extending from −90° to +90° in the bass / low-midrange are normal (low frequencies are inherently near-omnidirectional)
  • Progressive narrowing at high frequencies is expected, but confinement to < −45° to +45° suggests excessive beaming

Symmetry around 0°:

  • Geometrical and acoustical symmetry
  • Proper driver placement and reliable measurements

Asymmetric patterns:

  • Potential baffle diffraction
  • Room reflections contaminating measurements
  • Driver offset or asymmetric waveguides (intentional in most 3 way monitor designs)

Interference patterns (diagonal/complex):

  • Driver interaction visible
  • Crossover region summing effects
  • Time-of-flight encoding driver spacing

What to Look For

Good Patterns:

Smooth color transitions:

  • Gradual change from hot (on-axis) to cool (off-axis)
  • Indicates controlled directivity

Symmetric patterns:

  • Equal radiation to left/right (horizontal) or up/down (vertical)
  • Indicates Symmetric design

Horizontal bands in crossover region:

  • Consistent radiation pattern through crossover
  • Good driver integration

Bad Patterns:

Narrow bright vertical regions:

  • Beaming (concentrated energy on-axis)
  • Excessive directivity at that frequency
  • Often caused by large drivers at high frequencies

Dark spots off-axis / Diagonal stripes:

  • Nulls or cancellations between drivers
  • Indicates poor crossover alignment or lobing
  • May be acceptable if smooth and symmetric
  • Often caused by driver spacing and time-of-flight
  • Crossover regions with insufficient acoustic slope, producing off-axis lobing

Crossover Design Insights

Compare on-axis and off-axis patterns:

  • Check for consistent summing across all angles
  • Look for lobing (bright spots appearing at off-axis angles)

Verify driver summing:

  • Crossover frequency should show smooth transition in sonogram
  • Moderate nulls or peaks appearing at specific angles

Adjust crossover if needed:

  • Lobing visible: Try different crossover slopes or frequency
  • Nulls visible: Check driver polarity and time alignment

Example Adjustments:

Problem: Bright and wide lobe at +30° near crossover frequency
Solution: Lower crossover frequency or increase slope to reduce overlap

Problem: Null at 0° (on-axis) at crossover frequency
Solution: Check driver polarity, adjust time delay, or change crossover type

Problem: Vertical bright bands alternating with dark bands
Solution: Driver spacing issue (comb filtering) - may require physical redesign


Why Time-of-Flight Matters

Physics of Multi-Driver Interference

When multiple drivers reproduce the same frequency range, their outputs combine in space. The phase relationship between drivers depends on:

  1. Physical separation between drivers (geometry)
  2. Acoustic path length differences to the measurement point
  3. Crossover filter phase shifts

How Time-of-Flight Encodes This

Each driver’s impulse arrives at a slightly different time:

  • This delay represents the acoustic path length to the microphone
  • At the on-axis position, path lengths may be similar
  • At off-axis positions, path length ratios change

Off-axis measurements capture geometry:

  • Driver A might be 1.0 meters away on-axis
  • Driver B might be 1.05 meters away on-axis (5 cm path difference)
  • At +30° off-axis, Driver A might be 0.95 m and Driver B might be 1.15 m (20 cm difference)
  • This changing path length ratio creates interference patterns

These delays create directivity:

  • At some frequencies, drivers sum constructively (in phase)
  • At other frequencies, drivers sum destructively (out of phase)
  • The frequency where this happens depends on the angle (because path lengths change with angle)
  • This is the fundamental physics of directivity

What Happens If You Remove TOF without keeping relative delays

Time-aligning removes geometric delay information:

  • All drivers appear to arrive at the same time
  • DI calculation assumes drivers are co-located (all at the same point in space)
  • This is physically incorrect for real speakers

Predicted interference patterns don’t match reality:

  • Off-axis nulls and peaks won’t appear
  • Directivity sonograms show incorrect lobing
  • DI curve does not reflect actual radiation pattern

Example:

With TOF preserved:

  • Tweeter and woofer are 15 cm apart vertically
  • At 2.3 kHz (wavelength ≈ 15 cm), expect null at certain off-axis angles
  • DI curve shows this correctly

With TOF removed (time-aligned):

  • Software thinks drivers are co-located
  • Predicts no null at 2.3 kHz
  • DI curve is smooth (incorrect)
  • Real speaker still has null at 2.3 kHz off-axis

Proper Workflow

1. Capture IR with full time-of-flight intact

  • Use proper timing reference (electric loopback or acoustic chirp)
  • Do not apply windowing that removes acoustic delay
  • Preserve the natural arrival time differences

2. Import into LinFIR preserving the delay

  • Keep the raw impulse peak positions as captured or remove the same amount of time across all measurements
  • Each angle will have slightly different delay values (this is correct)

3. Apply crossover filters

  • Crossovers add their own phase shifts
  • These combine with geometric delays

4. LinFIR predicts directivity

  • Calculation includes both geometry (TOF) and filtering (crossover phase)
  • Spherical integration over all measured angles
  • Result: realistic DI and sonograms

5. Sonogram shows realistic interference

  • Interference patterns reflect both driver spacing and crossover design
  • Allows optimization of crossover for desired directivity

Limitations and Best Practices

Measurement Density

More angle measurements = more accurate prediction

  • Minimum recommended: 7 angles per axis (±90° in 30° steps)
  • Good: 13 angles per axis (±90° in 15° steps)
  • Ideal: 19 angles per axis (±90° in 10° steps) or finer

Why density matters:

  • DI calculation uses spherical integration
  • Sparse measurements = poor integration accuracy
  • Fine measurements = more accurate directivity prediction

Room Reflections

Directivity analysis is most accurate in anechoic conditions

  • Room reflections distort off-axis measurements
  • Early reflections appear as interference in the sonogram
  • Can create false lobing patterns

Mitigation strategies:

  • Measure outdoors (less reflections)
  • Measure in large room with speaker away from walls
  • Use gating/windowing carefully:
    • Remove late reflections (>10 ms after main arrival)
    • Use Adaptive Window to preserve bass while gating reflections

Microphone Position

Keep measurement distance constant:

  • Same distance for all angles
  • Ensures consistent SPL normalization
  • Eliminates distance-related level variations

Farfield measurements (>1 meter) work best:

  • Avoids nearfield effects
  • Drivers behave as coherent sound sources
  • More accurate directivity prediction

Microphone height:

  • Should match speaker acoustic center
  • For 2-way speaker, typically between tweeter and woofer
  • Ensures symmetric vertical measurements

Computational Notes

DI calculation uses spherical integration:

  • Computationally intensive (integrates over all angles and frequencies)
  • May take a few seconds for dense polar data

Sonogram generation:

  • Creates high-resolution 2D images (frequency × angle)
  • Parallel processing used for speed
  • Results are cached to improve performance

Getting a License

To unlock Directivity Analysis tools:

  1. Visit the LinFIR website: https://linfir.demaudio.com
  2. Purchase a license key
  3. Enter your e-mail and key in LinFIR: Settings → License
  4. All directivity features will be enabled immediately

Your license supports:

  • Ongoing development
  • New features
  • Bug fixes and improvements


Summary

Directivity Analysis tools characterize how your speaker radiates sound in different directions:

Features:

  • Off-axis frequency response visualization at any angle
  • Directivity Index (DI) prediction across the spectrum
  • Directivity sonograms (2D frequency vs. angle heatmaps)

Requirements:

  • Valid LinFIR license
  • Polar measurements at multiple angles (horizontal and vertical)
  • Preserved time-of-flight
  • Proper timing reference (electric loopback or acoustic chirp)

Key Concepts:

  • Time-of-flight encodes driver geometry (must be preserved)
  • DI quantifies how directional the speaker is (0 dB = omni, higher = more directional)
  • Sonograms visualize radiation patterns (hot colors = on-axis energy, cool = off-axis attenuation)
  • Crossover optimization based on directivity for consistent off-axis response

Workflow:

  1. Configure timing reference (electric loopback recommended)
  2. Capture polar measurements for each drivers (preserve time-of-flight)
  3. Design crossovers and apply filters
  4. View off-axis curves, DI, and sonograms
  5. Optimize crossover for desired directivity pattern
  6. Iterate based on measurements

Use directivity analysis to understand and optimize your speaker’s radiation pattern for better room interaction and consistent sound across the listening area.

Export & Project Management

This section covers exporting filters, total impulse responses, and managing your LinFIR projects.


Filter Export

Overview

LinFIR allows you to export processed FIR filter coefficients for use in external DSP systems, hardware amplifiers, or room correction software. You can export:

  • Individual Driver FIR Filters: Per-driver crossover and correction filters (Loudspeaker Design mode only)
  • Global FIR Correction: System-wide magnitude and phase correction filters
  • Total Impulse Response: The complete processed system impulse at the listening position

Access: Menu > Export Filters

Export File Formats

LinFIR supports multiple export formats to ensure compatibility with various DSP platforms:

Binary Formats

  • FLOAT32LE (.bin): IEEE 754 32-bit little endian float
    • Standard format for CamillaDSP and MiniDSP
    • Raw binary data, no header
    • Each sample is 4 bytes
  • FLOAT64LE (.bin): IEEE 754 64-bit little endian float
    • Higher precision for demanding applications
    • Raw binary data, no header
    • Each sample is 8 bytes

Text Formats

  • CSV row (.csv): Comma-separated values in a single row
  • CSV column (.csv): One coefficient per line
  • Text decimal (.txt): Decimal format, one coefficient per line: 0.123456
  • Text scientific (.txt): Scientific notation format, one coefficient per line: 1.2345600000000000e-01

Audio Formats

  • WAV 16-bit (mono) (.wav): 16-bit integer PCM
    • Auto-normalized: Coefficients are automatically normalized to prevent clipping if max(abs(value)) > 1.0
    • Range: -32768 to 32767 (maps to -1.0 to 1.0)
    • Single channel audio file
  • WAV 24-bit (mono) (.wav): 24-bit integer PCM
    • Auto-normalized: Coefficients are automatically normalized to prevent clipping if max(abs(value)) > 1.0
    • Range: -8388608 to 8388607 (maps to -1.0 to 1.0)
    • Single channel audio file
  • WAV 32-bit float (mono) (.wav): 32-bit floating point
    • Raw coefficients: No normalization, values preserved as-is (can exceed ±1.0)
    • Same data as FLOAT32LE binary format, but with WAV header
    • Single channel audio file
  • WAV 16-bit (stereo) (.wav): 16-bit integer PCM stereo
    • Auto-normalized: Coefficients are automatically normalized to prevent clipping if max(abs(value)) > 1.0
    • Range: -32768 to 32767 (maps to -1.0 to 1.0)
    • Dual channel audio file with identical left/right channels (mono signal duplicated)
  • WAV 24-bit (stereo) (.wav): 24-bit integer PCM stereo
    • Auto-normalized: Coefficients are automatically normalized to prevent clipping if max(abs(value)) > 1.0
    • Range: -8388608 to 8388607 (maps to -1.0 to 1.0)
    • Dual channel audio file with identical left/right channels (mono signal duplicated)
  • WAV 32-bit float (stereo) (.wav): 32-bit floating point stereo
    • Raw coefficients: No normalization, values preserved as-is (can exceed ±1.0)
    • Dual channel audio file with identical left/right channels (mono signal duplicated)

Note on Normalization: FIR filter coefficients can have values outside the ±1.0 range. WAV PCM formats (16-bit, 24-bit) automatically normalize coefficients to fit their limited integer range while preserving the filter’s frequency response shape. WAV 32-bit float and binary formats (FLOAT32LE/FLOAT64LE) preserve raw coefficient values without normalization.

Note on Stereo Formats: Stereo WAV formats duplicate the mono FIR filter signal to both left and right channels. The actual filter data is identical in both channels.

Platform-Specific Formats

  • Text - Powersoft Armonia (.txt): Format for Powersoft amplifiers. Usually requires 48 kHz to be set as target sampling frequency.

FIR Export Process

When exporting FIR filters (Menu > Export Filters):

  1. Driver Selection: In Loudspeaker Design mode, LinFIR exports each enabled driver with active FIR filters (HP, LP, or correction)
    • Only enabled drivers are exported (drivers with the Enabled button toggled on in the Drivers toolbar)
    • Disabled drivers are automatically skipped during export
  2. Global Filter: If global FIR correction is enabled, it’s exported as a separate file
  3. Room Calibration Mode: Only global filters are exported (no per-driver files)
  4. File Naming: Each filter gets a descriptive name with complete parameter details by default

Filter Naming Convention

Exported filter names include all relevant parameters for complete traceability:

Driver FIR Example:

Tweeter_4096taps_96000Hz_HPLR4-2500Hz_CORR(MAG+PH_R30dB_G-2.5dB_MinPhase).wav

Components:

  • Tweeter: Driver name (from imported IR filename)
  • 4096taps: Filter length (including padding)
  • 96000Hz: Sample rate
  • HPLR4-2500Hz: High-pass Linkwitz-Riley 4th-order at 2500 Hz
    • Format: HP or LP + filter type abbreviation + order (if not brick-wall) + - + frequency
    • Types: Brick-wall (no order), BW (Butterworth), LR (Linkwitz-Riley), BE (Bessel)
  • CORR(...): Correction filter details (only if correction is enabled)
    • MAG+PH: Both magnitude and phase correction enabled
    • MAG or PH: Only one correction type enabled
    • R30dB: 30 dB correction range (magnitude only)
    • G-2.5dB: -2.5 dB post-gain (magnitude only, only if gain ≠ 0)
    • MinPhase: Minimum-phase causality (causality ≥ 0.99)
    • C75%: Mixed causality at 75% (causality 0.01-0.98)
    • No causality suffix = Linear-phase (causality = 0.0)

Global FIR Example:

GlobalFIR_8192taps_96000Hz_MAG_R40dB_C50%_200-18000Hz.wav

Components:

  • GlobalFIR: Global correction identifier
  • 8192taps: Filter length (including padding)
  • 96000Hz: Sample rate
  • MAG or PH or MAG+PH: Correction type enabled
  • R40dB: 40 dB correction range (magnitude only)
  • G+2.5dB: Post-gain in dB (only if gain ≠ 0)
  • MinPhase: Minimum-phase (causality ≥ 0.99)
  • C50%: Mixed causality at 50% (0.01-0.98)
  • No causality suffix = Linear-phase (causality = 0.0)
  • 200-18000Hz: Frequency range (only if f_min > 20 Hz or f_max < Nyquist - 100 Hz)

Padding and Filter Length

Exported filters include:

  • Base taps: The configured filter length (N taps)
  • Padding taps: Additional zero-padding if configured

Padding ensures compatibility with DSP systems that require a specific fixed tap count (e.g., Hypex amplifiers and DSPs require specific lengths).

Room Calibration Export Behavior

In Room Calibration mode:

  • Only global filters are exported (no per-driver FIR files)
  • The global FIR represents the averaged correction across all measurement positions
  • Individual driver controls are disabled in this mode
  • Export focuses on the overall room response correction

IIR Filter Export

Overview

LinFIR can export IIR filters (digital biquad coefficients) in four formats:

  • FQG Format (.txt): Text-based frequency/Q/gain lists
  • CamillaDSP Format (.yml): YAML configuration for CamillaDSP
  • Q-SYS Format (.csv): CSV biquad coefficients for Q-SYS IIR Custom Filter
  • MiniDSP Format (.txt): Compact biquad coefficients for MiniDSP devices

Note: Only IIR filters from enabled drivers are exported. Disabled drivers are automatically skipped.

IIR export is available for:

  • Global IIR filters (system-wide EQ and crossovers)
  • Per-driver IIR filters (individual driver EQ, in Loudspeaker Design mode)

Export Formats

FQG Format (Text)

Simple text format listing filter parameters:

# Global IIR Filters (FQG Format)
# Sample Rate: 96000 Hz
# Format: Type [Pass] Frequency [Order] [Q] [Gain]

Butterworth HP 80.0 4
Butterworth LP 20000.0 4
PEQ 1200.0 2.500 -3.50
LowShelf 200.0 0.707 2.00
HighShelf 10000.0 0.707 -1.50
Allpass2 3000.0 1.414
Allpass1 500.0

Format Details:

  • Butterworth/LR/Bessel: Type Pass Frequency Order
    • Pass: HP (high-pass) or LP (low-pass)
  • PEQ: PEQ Frequency Q Gain
  • Low/High Shelf: LowShelf/HighShelf Frequency Q Gain
  • Allpass2: Allpass2 Frequency Q (second-order)
  • Allpass1: Allpass1 Frequency (first-order)

CamillaDSP Format (YAML)

Full YAML configuration with native CamillaDSP filter types:

# Global IIR Filters (CamillaDSP Format)
# Sample Rate: 96000 Hz
filters:

  filter_1:
    type: BiquadCombo
    parameters:
      type: ButterworthHighpass
      freq: 80.0
      order: 4

  filter_2:
    type: Biquad
    parameters:
      type: Peaking
      freq: 1200.0
      gain: -3.50
      q: 2.500

  filter_3:
    type: Biquad
    parameters:
      type: Lowshelf
      freq: 200.0
      gain: 2.00
      q: 0.707

CamillaDSP Native Types:

  • ButterworthLowpass / ButterworthHighpass
  • LinkwitzRileyLowpass / LinkwitzRileyHighpass
  • Peaking (PEQ)
  • Lowshelf / Highshelf
  • Allpass (second-order)
  • AllpassFO (first-order)

Bessel Filters: CamillaDSP doesn’t natively support Bessel filters, so they’re exported as Free biquad sections with explicitly calculated coefficients:

  filter_1_1_bessel:
    type: Biquad
    parameters:
      type: Free
      b0: 0.9876543210123456
      b1: -1.9753086420246912
      b2: 0.9876543210123456
      a1: -1.9750000000000000
      a2: 0.9755086580370370

Q-SYS Format (CSV)

CSV format for Q-SYS IIR Custom Filter components. Each line represents one biquad section with coefficients in the order: b0, b1, b2, a0, a1, a2.

0.0040888760000000, 0.0081777519000000, 0.0040888760000000, 1.0000000000000000, -1.8954199260000000, 0.9117754299000000,
0.0040888760000000, 0.0081777519000000, 0.0040888760000000, 1.0000000000000000, -1.8954199260000000, 0.9117754299000000,
0.0033894348000000, 0.0067788696000000, 0.0033894348000000, 1.0000000000000000, -1.7990948390000000, 0.8126525782000000,

Format Specification:

  • One biquad section per line
  • Coefficients: b0, b1, b2, a0, a1, a2, (trailing comma optional)
  • Coefficient a0 must be non-zero (normalized to 1.0 by LinFIR)
  • 16 decimal places precision for maximum accuracy
  • Compatible with Q-SYS Designer IIR Custom Filter component

Usage in Q-SYS:

  1. Export filters from LinFIR in Q-SYS format
  2. In Q-SYS Designer, add an IIR Custom Filter component
  3. Set the component’s Section Count property to match the number of lines in your CSV file
  4. Close and reopen the component’s control panel
  5. Load the CSV file using the Coefficient File property

Important Notes:

  • Each filter in LinFIR may generate multiple biquad sections (see Biquad Count Reference below)
  • High-order filters (e.g., Butterworth 8th order) will create multiple CSV lines
  • Total biquad count = sum of all lines in the CSV file

MiniDSP Format (Text)

Compact text format with biquad coefficients for MiniDSP hardware processors. Each biquad section is labeled and coefficients are provided in normalized form.

biquad1,
b0=0.9876543210123456
b1=-1.9753086420246912
b2=0.9876543210123456
a1=-1.9750000000000000
a2=0.9755086580370370
biquad2,
b0=1.0123456789012345
b1=-2.0246913578024690
b2=1.0123456789012345
a1=-1.9980000000000000
a2=0.9960493580246914

Format Specification:

  • Each biquad section starts with biquadN, where N is the section number (1, 2, 3, …)
  • Coefficients are listed one per line in the order: b0, b1, b2, a1, a2
  • Note: a0 is omitted (assumed to be 1.0 after normalization)
  • Format: coefficient_name=value with no spaces around the = sign
  • 16 decimal places precision for maximum accuracy

Important Notes:

  • Each filter in LinFIR may generate multiple biquad sections (see Biquad Count Reference below)
  • MiniDSP devices have limited biquad slots
  • High-order filters will consume multiple biquad slots
  • Check your device’s specifications for maximum biquad count before exporting complex filter chains

Biquad Count Reference

Understanding biquad counts is essential when exporting to hardware with limited DSP resources (e.g., Hypex FA series amplifiers with a 15-biquad limit):

Filter TypeOrderBiquad Count
Butterworth/Bessel LP/HP11
Butterworth/Bessel LP/HP21
Butterworth/Bessel LP/HP32
Butterworth/Bessel LP/HP42
Butterworth/Bessel LP/HP53
Butterworth/Bessel LP/HP63
Butterworth/Bessel LP/HP74
Butterworth/Bessel LP/HP84
Butterworth/Bessel LP/HP95
Butterworth/Bessel LP/HP105
Linkwitz-Riley LP/HP2 (LR2)2
Linkwitz-Riley LP/HP4 (LR4)2
Linkwitz-Riley LP/HP8 (LR8)4
Linkwitz-Riley LP/HP10 (LR10)5
PEQ (Parametric EQ)-1
Low/High Shelf-1
Allpass2 (2nd-order)-1
Allpass1 (1st-order)-1

Linkwitz-Riley Formula: LR filters are implemented as cascaded Butterworth sections:

  • LR order = 2 × Butterworth order
  • LR2 = 2× Butterworth 1st-order = 2 biquads
  • LR4 = 2× Butterworth 2nd-order = 2 biquads
  • LR8 = 2× Butterworth 4th-order = 4 biquads

Butterworth/Bessel Formula: Biquad count = ⌈order / 2⌉ (ceiling of order divided by 2)

Export Process

  1. Open Menu > Export IIR Filters
  2. Select export format (FQG, CamillaDSP, Q-SYS, or MiniDSP)
  3. LinFIR identifies all enabled IIR filter chains:
    • Global IIR (if enabled)
    • Per-driver IIR (if enabled, Loudspeaker Design mode only)
  4. For each filter chain, specify output filename
  5. Files are generated with complete filter specifications

Room Calibration Mode: Only global IIR filters are exported (no per-driver files).


HFD Export (Hypex FA Series)

Overview

LinFIR can generate complete configuration files (.hfd) for Hypex FA series amplifiers:

  • FA251, FA501 (1-channel with DSP)
  • FA122, FA252, FA502 (2-channel with DSP)
  • FA123, FA253, FA503 (3-channel with DSP)

This integration enables direct deployment of your loudspeaker designs to Hypex amplifiers without manual coefficient transfer.

Supported Device Models

ModelChannelsMax FIR (Input)Max FIR (Output/ch)Max IIR (biquads/ch)
FA12224500 taps1500 taps15
FA12334500 taps1500 taps15
FA25114500 taps1500 taps15
FA25224500 taps1500 taps15
FA25334500 taps1500 taps15
FA50114500 taps1500 taps15
FA50224500 taps1500 taps15
FA50334500 taps1500 taps15

Requirements

Sample Rate: HFD export requires 93.75 kHz sample rate

  • FA series amplifiers operate at 93.75 kHz internally
  • If your LinFIR project uses a different sample rate, you must change it before HFD export
  • Set Sampling Frequency to 93.75 kHz in Target DSP Settings

Biquad Limit: Maximum 15 biquads per channel

  • LinFIR automatically counts biquads when exporting
  • Global IIR filters + driver IIR filters must not exceed 15 biquads per output channel
  • See Biquad Count Reference for calculation details

FIR Position: Choose between two FIR filter placement options:

  1. Input FIR (Global, 4500 taps maximum):

    • Single FIR filter applied to the input signal before channel routing
    • Suitable for global room correction or full-range equalization
    • More efficient for shared corrections across all channels
  2. Output FIR (Per-channel, 1500 taps maximum per channel):

    • Independent FIR filters for each output channel
    • Suitable for per-driver crossover and correction filters

Export Workflow

1. Configure HFD Settings

Open Menu > Export HFD to access the HFD export window:

HFD Export Window HFD Export Window

  • Device Model: Select your Hypex FA amplifier model
  • FIR Position: Choose Input (global) or Output (per-channel) FIR placement
  • Group-to-Driver Mapping: Map Hypex output groups to LinFIR drivers

2. Map Drivers to Output Groups

The mapping table allows you to assign LinFIR drivers to Hypex amplifier output channels:

HFD GroupLinFIR DriverNotes
Group 1Driver 1 (Tweeter)Output channel 1
Group 2Driver 2 (Mid)Output channel 2
Group 3Driver 3 (Woofer)Output channel 3

Mapping Validation:

  • LinFIR checks that all mappings are valid before export
  • Warnings appear if biquad count exceeds 15 for any channel
  • FIR length validation ensures compliance with Input (4500) or Output (1500) tap limits

3. Select Presets to Export

Hypex FA amplifiers support multiple configuration presets (typically 3). Choose which presets to include in the exported HFD file:

  • Preset 1: Main tuning
  • Preset 2: Alternate voicing
  • Preset 3: (Skip)

Uncheck presets you don’t want to modify in the existing configuration.

4. Patch Mode (Update Existing Configuration)

Patch Mode allows you to update an existing HFD configuration file instead of creating a new one from scratch:

  1. Enable Patch Mode
  2. Load Existing HFD: Select the current configuration file on your disk
  3. LinFIR will:
    • Auto-detect the FIR position (Input or Output)
    • Parse existing presets and group configurations
    • Lock FIR position to match the loaded file
  4. Update Selected Presets: Only the presets you’ve checked will be modified
  5. Other presets and settings remain unchanged

Use Cases for Patch Mode:

  • Update filter coefficients after design refinements
  • Safely modify one preset without affecting others
  • Create different presets (boosted bass, different voicing etc.)

5. Validation and Export

Before exporting, LinFIR performs comprehensive validation:

Biquad Count Check:

Tweeter has 18 biquads but HFD supports max 15 biquads per channel

Reduce IIR or Auto-EQ filter count for this driver.

FIR Length Check - Position Input:

Global FIR has 6000 taps but Input position supports max 4500 taps

Reduce global FIR length or switch to Output position.

FIR Length Check - Position Output:

Woofer has 2000 taps but Output position supports max 1500 taps per channel

Reduce driver tap count or switch to Input position.

Sample Rate Check:

HFD export requires 93.75 kHz sampling rate. Current: 96000 Hz

Change sample rate to 93.75 kHz in Settings.

If validation passes, click Export HFD and save the .hfd file.

6. Load Configuration to Amplifier

Use Hypex Filter Design (HFD) to upload the exported .hfd file to your FA series amplifier:

  1. Connect amplifier via USB
  2. Open HFD
  3. Load exported .hfd file
  4. Upload to Device

Total Impulse Response Export

Overview

Export the complete processed impulse response at the listening position (acoustic sum of all enabled drivers + global filters).

This is useful for:

  • External room correction systems (e.g., Audiolense, Acourate, etc.)
  • Validation and measurement (import into REW, Matlab, etc.)
  • Archival and comparison (document before/after tuning)

Export Options

Menu > Export Predicted Total IR (TXT/WAV)

WAV Export

  • Format: 32-bit float WAV (single channel)
  • Sample Rate: Choose target sample rate (can differ from project sample rate)
    • LinFIR will resample automatically if needed
    • Common rates: 44.1 kHz, 48 kHz, 96 kHz, 192 kHz

Example: Export at 48 kHz for compatibility with external room correction software, even if your project is at 96 kHz.

TXT Export

  • Format: Plain text, one sample per line (decimal)
  • Sample Rate: Choose target sample rate (with automatic resampling)
  • Use Cases: Import into Matlab, Python (numpy), or custom DSP tools

Resampling Behavior

If the target sample rate differs from your project sample rate:

  1. LinFIR uses high-quality resampling (sinc interpolation)
  2. The exported impulse maintains accurate time-domain characteristics
  3. No manual resampling required

Example Workflow:

  • LinFIR project at 96 kHz (high precision for design)
  • Export total impulse at 48 kHz (target hardware sample rate)
  • LinFIR handles resampling transparently

Project Management

Saving Projects

LinFIR projects are saved as .lnf files containing:

  • Driver configurations (impulse responses, filters, gain, delay, polarity)
  • Global FIR and IIR filter settings
  • Display preferences and graph states
  • Project mode (Loudspeaker Design or Room Calibration)
  • Measurement data (including off-axis measurements)

Save Shortcut: Cmd+S (macOS) / Ctrl+S (Windows/Linux)

Save Options

  1. Menu File/Save (or Cmd+S): Overwrites the current project file
  2. Menu File/Export/LinFIR Project: Creates a new project file with a specified name
  3. Auto-Save: Enabled by default
    • Automatically saves every 60 seconds if changes detected
    • Runs in background without blocking the UI

Loading Projects

Menu > File/Load Project

LinFIR supports:

  • New format (.lnf): Current project structure with full multi-angle measurement support
  • Legacy format: Older LinFIR project files (automatically migrated on load)

Legacy Migration: When loading an old project file:

  • LinFIR converts the structure to the new format
  • A notification confirms successful migration
  • Re-save the project to preserve the new format

Drag & Drop

Drag .lnf files directly onto the LinFIR window to open projects.

Unsaved Changes Protection:

  • If you have unsaved changes, LinFIR prompts:
    You have unsaved changes. Save before opening?
    [Save] [Don't Save] [Cancel]
    

Recent Projects

Access recently opened projects from Menu > Recent Projects:

  • Up to 20 recent projects listed
  • Click to open instantly
  • List persists across sessions

Troubleshooting

This guide covers common issues and their solutions when using LinFIR.


Sweep Measurement Issues

Capture Rejected - Clipping Detected

Error Message: Capture rejected: Clipping detected! Reduce input gain and try again.

Cause: The recorded signal exceeded 0 dBFS (digital full scale), causing clipping/distortion.

Solutions:

  1. Reduce input gain on your audio interface
  2. Lower driver volume or move microphone further away from the speaker
  3. Check gain staging throughout the signal chain:
    • Audio interface preamp gain
    • Mixer/console levels (if used)
    • Microphone sensitivity
  4. Verify microphone input isn’t overloading (check interface clip indicators)
  5. Use pad/attenuation if your microphone or interface has this option

Prevention: Start with low input gain and gradually increase while monitoring level meters during test sweeps.


Capture Rejected - Signal Too Low

Error Message: Capture rejected: Signal too low (-XX.X dB)! Increase input gain and try again.

Cause: The recorded signal is below -25 dBFS, resulting in poor signal-to-noise ratio.

Solutions:

  1. Increase input gain on your audio interface
  2. Raise driver volume or move microphone closer to the speaker
  3. Check microphone connection:
    • Ensure cable is properly connected
    • Verify phantom power is enabled (for condenser microphones)
    • Test microphone with other software to confirm it’s working
  4. Verify audio routing:
    • Confirm correct input channel is selected in Audio Settings
    • Check that no mute or pad switches are engaged
    • Ensure audio interface is set as the active input device

Target Level: Aim for peak levels between -12 dBFS and -6 dBFS for optimal signal-to-noise ratio.


Timing Reference Issues

Error Message: Timing reference not detected (correlation too low: -XX.X dB). Check channels and levels.

Cause: LinFIR cannot detect the timing reference signal (Acoustic or Loopback mode).

Solutions:

For Acoustic Timing Reference:

  1. Verify microphone positioning: Timing reference speaker must be within the microphone’s field
  2. Check timing reference level: Signal should be audible
  3. Increase output level of the timing reference channel
  4. Verify channel routing: Ensure timing reference is sent to the correct output

For Loopback Timing Reference:

  1. Verify physical loopback cable is properly connected
  2. Check loopback input channel selection in Audio Settings
  3. Ensure loopback signal isn’t attenuated (no pads, no gain reduction)
  4. Test loopback path independently (send signal and monitor input)

Error Message: Timing reference signal is CLIPPING (≥ 0 dBFS). Reduce timing reference output level or input gain to prevent distortion.

Solution: Reduce output level or input gain for the timing reference channel until clipping stops.


No Audio During Sweep

Symptoms: Sweep doesn’t play, or plays but no sound is heard.

Solutions:

  1. Verify device selection in Audio Settings tab:
    • Output device is correct
    • Input device is correct
    • Channels are properly mapped
  2. Check hardware connections:
    • Audio interface is powered on
    • Speakers/amplifiers are connected and powered
    • Cables are properly seated
  3. System audio settings:
    • Ensure audio interface is not muted in system settings
    • Check exclusive mode settings (Windows)
    • Verify sample rate compatibility
  4. Try different buffer sizes:
    • Start with 512 or 1024 samples
    • Increase if experiencing dropouts
  5. Test with another application to confirm audio interface is functioning

Windows Specific: Disable exclusive mode for the audio device in Windows Sound Settings if LinFIR cannot access it.


Poor Quality Measurements

Symptoms: Noisy frequency response, irregular impulse response, inconsistent results.

Solutions:

  1. Use longer sweep duration:
    • Minimum 5 seconds for small rooms
    • 10+ seconds for large rooms or outdoor measurements
    • Longer sweeps improve signal-to-noise ratio
  2. Minimize background noise:
    • Turn off HVAC systems during measurement
    • Close windows and doors
    • Avoid traffic noise or other environmental sounds
    • Choose quiet times of day
  3. Ensure stable microphone positioning:
    • Use a sturdy microphone stand
    • Avoid vibrations from speakers at high SPL
    • Mark microphone position for repeatability
  4. Check for electrical interference:
    • Use balanced cables (XLR) where possible
    • Avoid running audio cables parallel to power cables
    • Check for ground loops (hum at 50/60 Hz and harmonics)
    • Use isolated/clean power for sensitive equipment
  5. Use multiple averages:
    • 3-5 averages reduce random noise
    • More averages improve consistency at the cost of time
  6. Verify measurement environment:
    • Avoid highly reflective surfaces near microphone
    • Ensure speaker is properly positioned
    • Check for loose objects that might rattle

Unstable Audio Scheduling (Windows)

Error Message: Recording rejected: unstable Windows audio scheduling.

Cause: Windows audio subsystem experienced excessive timing jitter during capture.

Solutions:

  1. Close other applications using audio or consuming CPU
  2. Increase buffer size in Audio Settings (try 1024 or 2048 samples)
  3. Disable audio enhancements in Windows Sound Settings
  4. Update audio interface drivers to latest version
  5. Use ASIO drivers if available for your interface (more stable than WASAPI)
  6. Disable background services:
    • Windows Update
    • Antivirus real-time scanning
    • Other system services during measurement
  7. Check power settings: Set to “High Performance” mode

IR Management Issues

File Import Problems

Symptoms: Cannot import WAV or TXT files, or imported data appears incorrect.

Solutions:

WAV Files:

  1. Verify file format: Only WAV files are supported (16/24/32-bit PCM or float)
  2. Check file integrity: Ensure file isn’t corrupted or truncated
    • Try opening in another audio application
    • Re-export from source if needed
  3. Sample rate must be reasonable: 44.1 kHz to 192 kHz
  4. Stereo files: LinFIR uses left channel only (mono conversion)
  5. Check file permissions: Ensure LinFIR has read access to the file

TXT (IR) Files:

  1. Format must be simple: One sample per line, decimal values
  2. Sample rate prompt: LinFIR will ask for sample rate (not stored in TXT)
  3. Check for non-numeric characters: Remove headers, comments, or invalid data
  4. Use proper decimal separator: Period (.) not comma (,)

FRD (.frd or .txt) Files (REW format):

  1. Two-column format: Frequency (Hz) and Magnitude (dB)
  2. Tab or space delimited
  3. Check frequency range: Should cover at least 20 Hz to 20 kHz
  4. Phase column: Optional third column for phase (degrees)

Windowing Not Working

Symptoms: IR windowing doesn’t change the impulse response, or produces unexpected results.

Solutions:

  1. Verify time values:
    • Stop Time must be > Start Time
    • Times must be within IR duration
    • Window times are in milliseconds, not samples
  2. Preview impulse response to verify window placement:
    • Open Driver IR window
    • Check impulse response plot
    • Adjust Start/Stop times visually
  3. Common windowing scenarios:
    • Early reflections removal: Set Stop Time before first strong reflection
    • Noise truncation: Set Stop Time when IR decays into noise floor
    • Leading silence removal: Set Start Time just before main impulse peak

IR Names Not Showing

Symptoms: Imported or measured impulse responses don’t have names, or show default names.

Explanation: LinFIR does not automatically set IR names based on filenames or measurements.

Solutions:

  1. Manually enter IR name:
    • Open Driver IR window
    • Type name in “IR Name” field
    • Press Enter or click outside field to confirm
  2. Import and measurement operations:
    • WAV import: No automatic naming
    • Sweep measurement: No automatic naming
    • FRD import: No automatic naming
  3. Save project to persist custom names:
    • Use Cmd+S / Ctrl+S to save
    • IR names are stored in project file

Best Practice: Name impulses immediately after import/measurement to avoid confusion later.


Audio Settings Issues

Device Not Listed

Symptoms: Expected audio interface doesn’t appear in device dropdown menus.

Solutions:

  1. Click “Refresh Devices” to rescan audio hardware
  2. Check audio interface:
    • Ensure interface is powered on
    • Verify USB/Thunderbolt connection is secure
    • Try different USB port or cable
  3. Verify drivers are installed:
    • Mac OS: Core Audio drivers (usually automatic)
    • Windows: ASIO or manufacturer-specific drivers
  4. Close other applications using the audio interface:
    • DAWs (Pro Tools, Logic, Ableton, etc.)
    • Media players
    • Communication apps (Zoom, Microsoft Teams, etc.)
  5. Try different sample rates or buffer sizes in LinFIR settings
  6. Restart LinFIR after connecting/disconnecting devices
  7. System permissions (Mac OS):
    • Go to System Settings > Privacy & Security > Microphone
    • Ensure LinFIR has microphone access

Configuration Invalid

Error: Audio configuration shows as invalid or cannot be applied.

Causes and Solutions:

  1. Device disconnected:

    • Selected input/output device is no longer available
    • Click “Refresh Devices” and reselect devices
  2. Channel count exceeds device capabilities:

    • Verify device has enough input/output channels
    • Check channel mapping (e.g., selecting channel 8 on a 2-channel interface)
  3. Sample rate not supported:

    • Audio interface may not support selected sample rate
    • Try common rates: 48 kHz, 96 kHz, 44.1 kHz
    • Check interface specifications
  4. Buffer size incompatible:

    • Some devices have minimum/maximum buffer size limits
    • Try 512 or 1024 samples as a safe default
  5. Exclusive mode conflicts (Windows):

    • Another application may have exclusive control
    • Disable exclusive mode in Windows Sound Settings
    • Close competing applications

Recovery Steps:

  1. Click “Refresh Devices”
  2. Select “Default” input and output devices
  3. Choose a common sample rate (48 kHz)
  4. Set buffer size to 1024 samples

Filter Processing Issues

FIR Correction Not Applying

Symptoms: Enabling FIR correction doesn’t change frequency response.

Solutions:

  1. Check correction is enabled:
    • Magnitude and/or Phase correction must be toggled ON
    • Verify correction range (Max. Attenuation) is non-zero (e.g., 10 dB)
    • Check frequency range covers desired bandwidth
  2. Verify target curve:
    • Check that your reference points are defined correctly
    • Reference shouldn’t be identical to measurement (no correction needed)
  3. Check causality setting:
    • Linear phase (causality = 0): Maximum pre-ringing
    • Minimum phase (causality = 1): No pre-ringing, phase distortion
    • Mixed causality (0 < causality < 1): Balanced trade-off
  4. Increase filter length if correction is insufficient:
    • Longer FIR = better correction accuracy
    • Try doubling N taps (e.g., 2048 → 4096)
  5. View FIR filter response in Filters mode (F key):
    • Switch to display mode “FIR Filters”
    • Verify correction filter shape matches expectation
  6. Check FIR time alignment:
    • Verify that the FIR coefficients are properly centered within the available taps
    • Try changing FIR Offset Delay value to recenter FIR’s energy
    • Enable Auto Causal Alignment in Settings and let LinFIR handle this process for you

Cannot See IIR Filter Effects

Symptoms: IIR filters are defined but don’t affect the frequency response.

Causes and Solutions:

  1. IIR toggle is disabled:

    • Click the “IIR Filters” toggle in the driver toolbar to enable it
    • Both Manual IIR and Auto-EQ tabs share this same master toggle
  2. Wrong tab is active:

    • LinFIR has two separate IIR filter tabs: Manual and Auto-EQ
    • Only the active tab’s filters are applied
    • Click the tab you want to use to make it active
    • You can have filters in both tabs, but only one tab is active at a time
  3. No filters are enabled:

    • In the active tab, verify that individual filters have their “Enabled” toggle ON
    • Disabled filters are ignored even if the tab is active
  4. Switching between Manual and Auto-EQ:

    • Manual IIR tab: Manually configured filters (HP, LP, PEQ, shelves, etc.)
    • Auto-EQ tab: Auto-generated or manually tweaked parametric EQ filters
    • Use “Clone from Auto EQ” button to copy Auto-EQ filters to Manual tab
    • Both tabs can coexist with different filter sets, but only one is active

Auto-EQ Not Matching Target

Symptoms: Auto-EQ result doesn’t match target curve well.

Solutions:

  1. Increase max filters allowed:
    • More filters = better target matching
    • Try 8-12 filters for complex targets
  2. Check frequency range:
    • Auto-EQ only operates within specified f_min to f_max
    • Reduce range if needed (e.g., 80 Hz to 16 kHz)
  3. Verify target curve is reasonable:
    • Avoid extreme target shapes requiring >20 dB boost
    • Use smooth target curves for better results
  4. Check smoothing:
    • Over-smoothed measurements may prevent accurate matching
    • Try 1/12 or 1/24 octave smoothing
  5. Run Auto-EQ again:
    • Click “Run Auto EQ” to recompute
    • Different starting conditions may produce better results

HFD Export Issues

Sample Rate Error

Error: HFD export requires 93.75 kHz sampling rate. Current: 96000 Hz

Solution: Hypex FA series amplifiers operate at 93.75 kHz internally.

Steps:

  1. Go to Target DSP Settings in the left column of the main window
  2. Change Sampling Frequency to 93.75 kHz
  3. Retry HFD export

Note: Changing sample rate will trigger re-processing of all filters.


Biquad Limit Exceeded

Error: Tweeter has 18 biquads but HFD supports max 15 biquads per channel

Cause: The sum of global IIR + driver IIR exceeds 15 biquads per output channel.

Solutions:

  1. Reduce IIR filter count:
    • Remove unnecessary PEQ filters
    • Combine shelves into broader adjustments
    • Use fewer global IIR filters
  2. Reduce Auto-EQ filter count:
    • Lower “Max Filters” setting in Auto-EQ
    • Simplify target curve to require fewer filters
  3. Move filters to FIR domain:
    • FIR crossovers instead of IIR (if tap budget allows)
    • FIR correction instead of many PEQ filters
  4. Check biquad count for each filter type (see table in Export documentation)

Example:

  • Driver IIR: LR4 HP, LR4 LP, 12× PEQ
  • Total: 16 biquads ❌ Exceeds limit

Solution: Reduce PEQs to 11 filters → Total: 15 biquads ✅


FIR Length Exceeded

Error:

  • Global FIR has 6000 taps but Input position supports max 4500 taps
  • Woofer has 2000 taps but Output position supports max 1500 taps per channel

Cause: FIR filter length exceeds Hypex hardware limits.

Solutions:

For Input FIR (Global, 4500 taps max):

  • Reduce Global FIR N taps in Global FIR Correction settings

For Output FIR (Per-channel, 1500 taps max):

  • Reduce Driver N taps in driver settings

Decision Guide:

  • Input FIR: Best for global room correction shared across all channels
  • Output FIR: Best for per-driver crossovers and correction

Performance Issues

Slow Processing / UI Lag

Symptoms: LinFIR feels sluggish, filters take long to compute, UI updates are delayed.

Solutions:

  1. Reduce filter complexity:
    • Lower FIR tap count (e.g., 4096 → 2048)
    • Fewer IIR filters
    • Disable unused filters
  2. Reduce graph resolution:
    • Settings > Graphs > Plot Resolution
    • Lower resolution = faster rendering
  3. Disable unnecessary graphs:
    • Hide graphs you’re not using (M, P, G, I, T, K keys)
    • Fewer visible graphs = less computation
  4. Close detached graph windows when not needed
  5. Check system resources:
    • Close other CPU-intensive applications
    • Ensure sufficient RAM available
  6. Reduce angle step in polar measurements:
    • Try 10° or 15° steps instead of 5°

High Memory Usage

Symptoms: LinFIR consumes excessive RAM, system becomes slow.

Causes:

  1. Many drivers with long IRs: Each driver stores full impulse responses
  2. Many polar measurements: Full impulse responses are also stored for each measurement angle
  3. High-resolution graphs: More points = more memory

Solutions:

  1. Reduce IR length re-import externally generated IRs with proper windowing and truncation
  2. Use lower sample rates if 192 kHz is not needed
  3. Reduce N taps for FIR filters
  4. Reduce graph resolution Settings > Graphs > Plot Resolution

Project File Issues

Cannot Load Project

Error: Failed to load project or similar error when opening .lnf file.

Solutions:

  1. Check file integrity:
    • Verify file size is reasonable (not 0 bytes)
  2. Legacy format migration:
    • Older LinFIR versions may use incompatible format
    • LinFIR attempts automatic migration, but may fail
    • Try opening in latest LinFIR version
  3. Corrupted project:
    • If file was saved during a crash, it may be incomplete
    • Restore from a backup
  4. File permissions:
    • Ensure LinFIR has read access to the file
    • Try copying file to a different location

Prevention: Enable auto-save to save every 60 seconds.


Auto-Save Not Working

Symptoms: Projects don’t auto-save, or auto-save notifications don’t appear.

Verification:

  1. Auto-save is enabled by default
  2. Auto-save runs every 60 seconds in the background
  3. Auto-save only works if project has a saved path (use Cmd+S first time)

Troubleshooting:

  1. Save project manually first (Cmd+S) to establish a file path
  2. Check for errors: Look for error notifications in top-right corner
  3. Verify file permissions: Ensure LinFIR can write to project directory
  4. Check disk space: Ensure sufficient free space on drive

Note: Auto-save interval cannot be configured (fixed at 60 seconds).


License & Activation Issues

Directivity Features Locked

Symptoms: Cannot access directivity sonogram (R key doesn’t work), directivity features grayed out.

Cause: Directivity analysis requires a valid license.

Solutions:

  1. Verify license status: Settings > License tab
  2. Activate license: Enter license key if you have one
  3. Check license expiration: Licenses may have time limits (trial)
  4. Mode requirement: Directivity is only available in Loudspeaker Design mode (not Room Calibration)
  5. Check internet connectivity: First activation (or deactivation) requires internet connectivity

Note: Free version includes all core loudspeaker design features but excludes advanced directivity analysis.


Getting Help

Bug Reports

LinFIR includes a built-in bug report feature to help diagnose issues:

Bug Report Window Bug Report Window

To Submit a Bug Report:

  1. Go to Help > Report a Bug
  2. Describe the issue clearly:
    • What you were doing when the problem occurred
    • What you expected to happen
    • What actually happened
  3. Include steps to reproduce (if possible)
  4. Click “Submit”

Privacy:

  • No personal information is transmitted
  • No project data is included
  • Only relevant log information and system details are sent

What to Include:

  • Clear description of the bug or unexpected behavior
  • Exact steps to reproduce the issue
  • Expected vs. actual outcome
  • System information: OS version, audio interface model (if relevant)
  • Error messages (if any appear)

Community & Support

Additional Resources:

  • User Manual: Press H to open embedded documentation
  • Release Notes: Check for known issues and recent fixes
  • Email Support: Contact developer for persistent issues

Before Reporting:

  1. Check this troubleshooting guide
  2. Verify you’re using the latest LinFIR version
  3. Test with a fresh project to isolate the issue
  4. Try restarting LinFIR and your audio interface

Acoustic Advisory

This section provides important guidance on the physical limitations of DSP-based room correction and loudspeaker design.


The Limits of DSP Correction

Understanding Physical Nulls

Deep cancellations (nulls) from room modes or driver boundary interference (SBIR - Speaker Boundary Interference Response) are physical destructive interference patterns and generally cannot be “fixed” by boosting with FIR correction or IIR PEQ.

Why Nulls Cannot Be Corrected:

  1. Destructive Interference: Nulls occur when direct sound and reflected sound arrive out of phase, canceling each other
  2. Spatial Dependency: The cancellation exists at specific locations but not everywhere in the room
  3. Energy Conservation: You cannot add energy where none exists due to phase cancellation
  4. Headroom Waste: Boosting into nulls consumes massive headroom without improving the actual acoustic situation

Example: A 20 dB null at 80 Hz cannot be filled by adding 20 dB boost at 80 Hz. The boost will:

  • Waste amplifier power
  • Increase distortion
  • Worsen the response at other listening positions
  • Create excessive excursion demands on drivers

EQ Best Practices

What EQ Can Fix

Effective Uses of EQ:

  • Broad, minimum-phase peaks: Driver resonances, baffle diffraction effects
  • Overall target shaping: House curve, tilt, broad spectral balance
  • Crossover integration: Blending drivers at crossover region
  • Driver mismatch correction: Sensitivity differences between drivers

Example: A 5 dB broad peak at 3 kHz from a tweeter resonance is an ideal candidate for PEQ correction.

What EQ Cannot Fix

Ineffective Uses of EQ:

  • Deep, narrow nulls (> 6-8 dB depth): Room modes, SBIR, comb filtering
  • Path length cancellation: Nulls from multiple drivers or reflections
  • Non-minimum-phase dips: Cannot be corrected without introducing pre-ringing
  • Spatial nulls: Cancellations that vary significantly with listener position

Example: A 15 dB null at 50 Hz from a room mode should be addressed with:

  • Subwoofer repositioning
  • Multiple subwoofers (spatial averaging)
  • Bass traps and acoustic treatment
  • Listener position adjustment

Not with: A 15 dB PEQ boost at 50 Hz


Boost Guidelines

Conservative Boost Limits

General Recommendations:

  • Avoid large boost into deep nulls: Limit boost to ~6-8 dB maximum
  • Focus on peaks, not nulls: Cutting peaks is acoustically sound, boosting nulls is not
  • Relatively broad adjustments: Wide Q filters (0.5-6.0) for gentle shaping
  • Preserve headroom: Every dB of boost reduces available headroom

Why 6-8 dB Limit?:

  • Beyond this level, you’re likely boosting into a physical null
  • Distortion increases exponentially with excursion (especially at low frequencies)
  • Power requirements increase by 2× per 3 dB boost
  • Thermal compression reduces actual output gain

Boost vs. Cut Philosophy

Prefer Cutting over Boosting:

  • Cut peaks: Removes excess energy without headroom penalty
  • Boost sparingly: Only for broad, gentle shaping
  • Net gain reduction: Apply global gain to compensate for cuts

Example Workflow:

  1. Identify a broad peak at 2 kHz (+4 dB)
  2. Cut with PEQ: -4 dB at 2 kHz, Q = 1.0

Room Correction Strategies

Spatial Averaging (Multiple Mic Positions)

Why Multiple Positions Matter:

  • Room modes and nulls vary significantly with position
  • Single-point measurements can be misleading
  • Averaging reduces emphasis on position-specific anomalies
  • Produces more robust correction that works across a larger listening area

Recommended Approach:

  1. Measure at 3-5 positions within the listening area
  2. Use Room Calibration mode in LinFIR to average responses
  3. Apply correction based on averaged response
  4. Focus on fixing common peaks across all positions
  5. Ignore position-specific nulls (cannot be fixed for all positions)

Physical Solutions First

Order of Priority:

  1. Speaker and Listener Placement:

    • Wall distance: Keep speakers 5 cm to 1 m from rear wall
      • Avoid placing directly against walls (especially with rear-ported designs)
      • Don’t exceed ~1 m distance to prevent comb filtering issues in bass/low-midrange
      • Closer placement (<50 cm) shifts SBIR null higher in frequency (less problematic with speaker directivity)
      • Farther placement (50-100 cm) shifts SBIR null lower in frequency (more problematic for bass)
    • Adjust listening position to avoid room mode nulls
    • Use the “rule of thirds” as a base for room placement
    • Experiment with toe-in and speaker spacing
  2. Bass Management:

    • Multiple subwoofers for spatial averaging
    • Distributed Bass Array (DBA) for modal smoothing
    • Subwoofer crawl technique to find optimal placement
    • Phase and time alignment between subs and mains
  3. Acoustic Treatment:

    • Bass traps in corners for low-frequency modal control
    • Absorption at first reflection points
    • Diffusion on rear wall for controlled reflections
  4. DSP Correction (Last Step):

    • Correct broad, minimum-phase peaks
    • Apply target curve shaping
    • Light smoothing of overall response
    • Do not aggressively boost nulls

Frequency Region Strategies

Below Room Transition (Schroeder Frequency)

Characteristics:

  • Strong modal behavior (room modes dominate)
  • Deep nulls and sharp peaks
  • Response varies dramatically with position
  • Typically 80-200 Hz depending on room size

Recommended Approach:

  • Repositioning and treatment are most effective
  • Use multiple subwoofers for spatial averaging
  • Apply bass traps to control modal ringing
  • Light EQ for broad peaks only (avoid boosting nulls)
  • Expect imperfect results (physics limits DSP)

Why EQ Struggles:

  • Nulls are spatial (different at every position)
  • Boosting nulls creates problems at other positions
  • Time-domain ringing (long decay times) cannot be fixed with EQ

Above Room Transition Frequency

Characteristics:

  • Direct sound dominates
  • Room modes are no longer the primary issue
  • Speaker-room interaction remains important (perceived sound = direct + reflections)
  • Two design philosophies emerge:
    • Wide directivity: Uses room reflections for spaciousness (requires good crossover design)
    • Controlled directivity: Limits room interaction for consistency across spaces
  • Typically 200-300 Hz and above

Recommended Approach:

  • Gate/window measurements to emphasize direct sound
  • Focus on crossover design and driver integration
  • EQ for target curve shaping and driver correction
  • Time-align drivers for proper summation

Measurement Technique:

  • Use impulse response windowing to exclude reflections
  • Set window to capture direct sound only (e.g., 5-10 ms after arrival)
  • This removes room influence and focuses on loudspeaker design

Speaker Boundary Interference Response (SBIR)

What is SBIR?

SBIR occurs when direct sound from a speaker combines with its reflection from a nearby boundary (floor, wall, ceiling).

Characteristics:

  • Deep null at \(f_{null} = \frac{c}{4d}\) where \(c\) = speed of sound (343 m/s), \(d\) = distance to boundary
  • Example: Speaker 1 meter from wall → null at ~86 Hz
  • Cannot be fixed with EQ (phase cancellation)

Solutions:

  1. Move speaker closer to boundary: Drecreases \(d\), shifts null to higher frequency (less problematic with speaker directivity)
  2. Subwoofer integration: Crossover below SBIR null frequency
  3. Accept and avoid: Don’t boost the null, work around it

Why EQ Doesn’t Work:

  • Null is caused by phase cancellation (180° out of phase)
  • Adding energy (boost) cannot fix phase relationship
  • Boosting wastes headroom and creates distortion

LinFIR Design Intent

Primary Use Case: Loudspeaker Design

LinFIR is optimized for:

  • Driver and crossover design using anechoic or quasi-anechoic data
  • Windowed measurements to isolate direct sound
  • Crossover filter design (HP, LP, correction)
  • Driver integration and phase alignment
  • Target curve shaping

Best Results With:

  • Outdoor measurements (no room reflections)
  • Anechoic chamber measurements
  • Gated far-field measurements (remove reflections)

Secondary Use Case: Room Correction

LinFIR can be used for room correction with realistic expectations:

Appropriate:

  • Broad spectral balancing (house curve, tilt)
  • Correction of broad peaks from room modes
  • Light smoothing of overall response
  • Spatial averaging across multiple measurement positions

Inappropriate:

  • Aggressive boosting of deep nulls
  • Single-point correction without spatial averaging
  • Expecting perfect flat response in a typical room
  • Relying solely on DSP instead of acoustic treatment

Realistic Expectations:

  • DSP has fundamental limits
  • Room acoustics require multi-faceted approach (placement + treatment + modest EQ)
  • Perfect correction is impossible in modal region
  • Best results come from combining all techniques

Common Mistakes to Avoid

1. Boosting Nulls Aggressively

Mistake: Applying 15 dB boost to fill a room mode null at 80 Hz.

Why It’s Wrong:

  • Null is caused by destructive interference (cannot add energy where none exists)
  • Boost increases distortion and thermal compression
  • Worsens response at other listening positions
  • Wastes amplifier headroom

Correct Approach:

  • Reposition subwoofer or listening position
  • Add second subwoofer for spatial averaging
  • Use bass traps to dampen modal ringing
  • Accept a small null (better than aggressive boost)

2. Single-Point Measurement for Room Correction

Mistake: Measuring at one position and correcting for that spot only.

Why It’s Wrong:

  • Room response varies dramatically with position (especially below 200 Hz)
  • Correction optimized for one spot often worsens others
  • Modal nulls and peaks are position-dependent

Correct Approach:

  • Measure at 3-5 positions within listening area
  • Use Room Calibration mode for spatial averaging
  • Correct only features common across all positions
  • Ignore position-specific nulls

3. Ignoring Physical Solutions

Mistake: Relying only on DSP to fix all acoustic problems.

Why It’s Wrong:

  • Physical placement and treatment are more effective for many issues
  • DSP cannot fix phase cancellation, time-domain ringing, or spatial nulls
  • Some problems have no DSP solution

Correct Approach:

  1. Optimize speaker and listener placement first
  2. Add acoustic treatment (bass traps, absorption, diffusion)
  3. Use multiple subwoofers if needed
  4. Apply DSP as final polish (not primary solution)

4. Over-Damping the Room

Mistake: Covering all walls with absorption to eliminate reflections.

Why It’s Wrong:

  • Rooms need some reflections for spaciousness and envelopment
  • Over-damping creates a “dead” sound
  • Low frequencies are unaffected (absorption ineffective below 200 Hz without massive thickness)

Correct Approach:

  • Treat first reflection points only
  • Use bass traps in corners for low-frequency control
  • Add diffusion (not just absorption) for controlled reflections
  • Preserve room liveliness (some reflections are good)

5. Excessive FIR Correction Gain

Mistake: Applying FIR correction with 15 dB boost at low frequencies to “flatten” response.

Why It’s Wrong:

  • FIR correction amplifies everything, including distortion and noise
  • Massive boost wastes headroom
  • Likely boosting into nulls that cannot be fixed
  • Thermal compression reduces actual gain achieved

Correct Approach:

  • Limit FIR correction to reasonable ranges (±6-8 dB)
  • Focus on correcting broad peaks (cutting, not boosting)

Summary: Best Practices

DO:

✅ Focus EQ on broad, minimum-phase peaks
✅ Use spatial averaging (multiple mic positions) for room correction
✅ Combine placement, treatment, and modest DSP
✅ Window measurements above transition frequency to isolate direct sound
✅ Limit boost to ~6-8 dB maximum
✅ Prefer cutting peaks over boosting nulls
✅ Use LinFIR for driver and crossover design (primary use case)

DON’T:

❌ Boost deep, narrow nulls (> 6-8 dB)
❌ Rely solely on DSP for room correction
❌ Expect perfect flat response in modal region
❌ Apply single-point correction without spatial averaging
❌ Ignore physical solutions (placement, treatment)
❌ Over-damp the room (preserve some reflections)
❌ Boost nulls caused by SBIR or room modes


Physical Acoustics Primer

Speed of Sound

\(c = 343 \text{ m/s}\) (at 20°C, sea level)

Wavelength Formula: \(\lambda = \frac{c}{f}\)

Examples:

  • 20 Hz → 17.15 m wavelength
  • 100 Hz → 3.43 m wavelength
  • 1 kHz → 0.343 m (34.3 cm)
  • 10 kHz → 0.034 m (3.4 cm)

Implications:

  • Low frequencies have long wavelengths → difficult to control with treatment
  • High frequencies have short wavelengths → easy to absorb, control

Room Modes

Axial Mode Formula (between parallel walls):

\[f_n = \frac{nc}{2L}\]

where \(n\) = 1, 2, 3… (mode number), \(L\) = room dimension

Example (5m room length):

  • 1st mode: \(f_1 = \frac{343}{2 \times 5} = 34.3 \text{ Hz}\)
  • 2nd mode: \(f_2 = \frac{2 \times 343}{2 \times 5} = 68.6 \text{ Hz}\)
  • 3rd mode: \(f_3 = \frac{3 \times 343}{2 \times 5} = 102.9 \text{ Hz}\)

Modal Density: Number of modes per Hz increases with frequency. At high frequencies, modes overlap (modal smoothing).

Schroeder Frequency (Room Transition)

Approximate Formula:

\[f_s \approx 2000 \sqrt{\frac{RT_{60}}{V}}\]

where \(RT_{60}\) = reverberation time (seconds), \(V\) = room volume (m³)

Typical Living Room (50 m³, RT60 = 0.4s):

\[f_s \approx 2000 \sqrt{\frac{0.4}{50}} \approx 179 \text{ Hz}\]

Below \(f_s\): Modal behavior dominates (discrete modes, deep nulls/peaks)
Above \(f_s\): Statistical behavior (modal overlap, smoother response)