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

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