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

Graphs Settings

Graphs Settings Tab 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

Steep Crossover Smoothing

Options: Enabled, Disabled
Default: Enabled

Reduces smoothing near crossover frequencies to reveal steep filter slopes in magnitude plots.

How it works:

The strength of the smoothing reduction is proportional to the filter’s effective acoustic slope:

Filter order / typeSlopeSmoothing reduction
1st-order Butterworth6 dB/octNone
LR2 / 2nd-order Butterworth12 dB/octNone
3rd-order Butterworth18 dB/oct~25 %
LR4 / 4th-order Butterworth24 dB/oct~50 %
5th-order Butterworth30 dB/oct~75 %
LR6 / 6th-order Butterworth36 dB/oct100 % (down to 1/96 oct at Fc)
LR8 / higher order≥ 48 dB/oct100 %
Brickwall FIR100 %

The transition is progressive: smoothing is gradually reduced within ±0.5 octave around the crossover frequency, reaching the minimum at Fc itself.

When enabled:

  • Steep crossovers (LR6 / 36 dB/oct and above) receive full reduction — smoothing drops to 1/96 octave at Fc
  • Common crossovers (LR4 / 24 dB/oct) receive an intermediate reduction of ~67 %
  • Shallow crossovers (LR2 / 12 dB/oct and below) are left unchanged — the filter slope is gentle enough to be visible without smoothing reduction
  • Brickwall FIR always use full reduction (safe default)
  • Only affects magnitude display curves — does not modify phase, group delay, or filter generation

When disabled:

  • Uniform smoothing is applied across the entire frequency range
  • Provides consistency with external measurement tools that use constant smoothing

Note: External measurements with uniform smoothing will show gentler crossover slopes compared to LinFIR’s steep-crossover mode. This is expected — the adaptive reduction reveals the true filter response near crossovers.


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.

Focus on Summed Response

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.


Response Overlays

Show Listening Window Curve

Default: Enabled
Requires: A valid LinFIR license

Displays the Listening Window curve in the frequency graph when in Drivers/Measurements mode and off-axis measurements are available. The curve appears in the graph legend as “LW”.

The Listening Window is the spatial average of responses within ±30° horizontal and ±10° vertical. See System Processing for details.

Note: This option is disabled when no valid license is present. The toggle is grayed out and the curve is not displayed.

Show Raw Response When Filter Windows Are Open

Default: Enabled
Requires: A valid LinFIR license

When enabled, a dashed overlay of the unfiltered (pre-filter) driver response is drawn on the frequency, phase, and group delay graphs whenever a filter window is open for that driver.

Which windows trigger the overlay:

  • Per-driver: LP, HP, correction FIR, or IIR filter window
  • Global: Global FIR correction or Global IIR filter window (shows the unfiltered sum/average)

What is shown:

  • The response before any FIR or IIR filter is applied to that driver — the raw impulse response processed only through gain and windowing
  • The overlay is colored to match the driver’s curve color, drawn as a thin dashed line
  • For the global sum, the overlay is drawn in white (dark mode) or black (light mode)

Use case: Immediately see how much correction a filter is applying, without disabling filters. Useful for validating crossover slopes, EQ depth, and phase shaping against the unprocessed baseline.

Note: This option is disabled when no valid license is present. The toggle is grayed out and the overlay is not displayed.


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
Show Manual FIR Delay CompensationDisabled⚙️ Advanced: Show manual FIR delay fields
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
Remove time of flight rotationsDisabledLinear phase removal
Graphs
Plot Resolution64k pointsFrequency point count
Steep Crossover SmoothingEnabledReduce smoothing near steep crossover frequencies
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
Focus on Summed ResponseDisabledUse sum boundaries for all curves
Response Overlays
Show Listening Window CurveEnabledDisplay Listening Window (“LW”) in Drivers mode (requires license)
Show Raw Response When Filter Windows Are OpenEnabledDashed pre-filter overlay on magnitude/phase/GD graphs (requires license)

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
  • Show Manual FIR Delay Compensation: Keep disabled unless you are experienced in signal processing and need manual FIR alignment control
  • 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
  • Focus on Summed Response: 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)