Graphs Settings

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 / type | Slope | Smoothing reduction |
|---|---|---|
| 1st-order Butterworth | 6 dB/oct | None |
| LR2 / 2nd-order Butterworth | 12 dB/oct | None |
| 3rd-order Butterworth | 18 dB/oct | ~25 % |
| LR4 / 4th-order Butterworth | 24 dB/oct | ~50 % |
| 5th-order Butterworth | 30 dB/oct | ~75 % |
| LR6 / 6th-order Butterworth | 36 dB/oct | 100 % (down to 1/96 oct at Fc) |
| LR8 / higher order | ≥ 48 dB/oct | 100 % |
| Brickwall FIR | — | 100 % |
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:
| Context | Group Delay | Phase | THD |
|---|---|---|---|
| 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
| Setting | Default | Purpose |
|---|---|---|
| Appearance | ||
| UI Color Scheme | Red | Interface accent colors |
| Theme | Follow System | Light/Dark mode |
| Filter Processing | ||
| Clipping Detection | Enabled | Safety warnings for filter output levels |
| Auto Causal Alignment | Enabled | Optimize IR positioning with causal filters |
| Show Manual FIR Delay Compensation | Disabled | ⚙️ Advanced: Show manual FIR delay fields |
| Default Values | ||
| Sample Rate | 48 kHz | Default for new projects |
| Speaker FIR Taps | 512 | Per-driver FIR filter length |
| Global FIR Taps | 512 | Global correction filter length |
| Curve Smoothing | 1/12 octave | Frequency response smoothing |
| Graph Display Mode | Drivers/Measurements | Initial display mode |
| Phase Display | Wrapped | Phase graph mode |
| Remove time of flight rotations | Disabled | Linear phase removal |
| Graphs | ||
| Plot Resolution | 64k points | Frequency point count |
| Steep Crossover Smoothing | Enabled | Reduce smoothing near steep crossover frequencies |
| GD/Phase Truncation | Enabled | Truncate by magnitude threshold |
| Truncation Thresholds | -20 dB | Threshold below max |
| Drivers Range | 60 dB | Y-axis range for drivers |
| Filters Lower Bound | -100 dB | Y-axis lower limit for filters |
| Adaptive IR Display | Enabled | Auto-detect IR boundaries |
| Margin Before | 5 ms | Pre-signal margin |
| Margin After | 10 ms | Post-signal margin |
| Focus on Summed Response | Disabled | Use sum boundaries for all curves |
| Response Overlays | ||
| Show Listening Window Curve | Enabled | Display Listening Window (“LW”) in Drivers mode (requires license) |
| Show Raw Response When Filter Windows Are Open | Enabled | Dashed 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):
-
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
-
Disable clipping detection: Settings → General → Filter Processing
- Eliminates test signal processing on every update
- Only disable if you’re confident in your gain staging
-
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)