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
Important: Driver Adjustments Are Not Exported
⚠️ Critical Note: Filter exports (FIR and IIR) do NOT include Driver Adjustments (gain, time delay, and polarity inversion).
What’s Exported:
- FIR filter coefficients (crossovers + correction)
- IIR filter coefficients (parametric EQ, shelving, etc.)
What’s NOT Exported:
- 🔊 Gain adjustment (-40 to +40 dB)
- ⏱️ Time delay (0 to 100 ms)
- 🔄 Polarity inversion (180° phase flip)
Why?
These parameters are intentionally excluded for both technical and practical reasons.
Gain Embedding a gain offset directly into FIR coefficients (scaling all taps) seems harmless, but can silently cause internal clipping in some DSP architectures — particularly fixed-point or integer pipelines where the headroom available after the FIR stage is limited. DSP platforms provide dedicated gain controls for precisely this reason: they operate at the right stage in the signal chain and respect the hardware’s dynamic range constraints.
Time delay
Baking a time delay into a FIR filter is a costly misuse of resources. It works by translating the filter impulse response within its tap window: the filter is shifted right by N samples, zeros are prepended on the left, and the same number of meaningful taps are truncated on the right. This has two consequences:
- Filter truncation introduces artefacts — the discarded taps carry real filter information (typically the ringing or low-frequency content of the impulse). Losing them degrades the filter’s frequency and phase response.
- Convolving zeros is wasteful — a DSP has to compute multiplications on those leading zeros at every sample, consuming CPU cycles or DSP MAC operations to produce nothing. By contrast, every DSP platform offers dedicated delay lines (circular buffers, integer sample delay blocks) that implement delay at essentially zero computational cost. They are the right tool for the job.
Polarity inversion A simple sign flip on all coefficients works mathematically, but like gain, it is directly available as a single-bit inversion in every DSP, with no processing overhead.
In short: each of these adjustments has a dedicated, efficient, and precise implementation in your DSP. Keeping them separate from the FIR data gives you full control and avoids hard-to-debug artefacts.
What You Must Do: After exporting filters, you must manually configure these parameters in your target DSP:
- Set each driver’s output gain/level
- Configure time delay/alignment for each channel
- Enable polarity inversion where needed
Exception:
- Hypex HFD Export (→ see HFD Export, available in Loudspeaker Design mode, no license required): Gain, delay, and polarity are automatically included in the
.hfdconfiguration file
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):
- 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
- Global Filter: If global FIR correction is enabled, it’s exported as a separate file
- Room Calibration Mode: Only global filters are exported (no per-driver files)
- 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 rateHPLR4-2500Hz: High-pass Linkwitz-Riley 4th-order at 2500 Hz- Format:
HPorLP+ filter type abbreviation + order (if not brick-wall) +-+ frequency - Types: Brick-wall (no order),
BW(Butterworth),LR(Linkwitz-Riley),BE(Bessel)
- Format:
CORR(...): Correction filter details (only if correction is enabled)MAG+PH: Both magnitude and phase correction enabledMAGorPH: Only one correction type enabledR30dB: 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 identifier8192taps: Filter length (including padding)96000Hz: Sample rateMAGorPHorMAG+PH: Correction type enabledR40dB: 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) orLP(low-pass)
- 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/ButterworthHighpassLinkwitzRileyLowpass/LinkwitzRileyHighpassPeaking(PEQ)Lowshelf/HighshelfAllpass(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
a0must 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:
- Export filters from LinFIR in Q-SYS format
- In Q-SYS Designer, add an IIR Custom Filter component
- Set the component’s Section Count property to match the number of lines in your CSV file
- Close and reopen the component’s control panel
- 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:
a0is omitted (assumed to be 1.0 after normalization) a1anda2use miniDSP’s sign convention (y = b0·x0 + b1·x1 + b2·x2 + a1·y1 + a2·y2): they are the negated standard denominator coefficients- Format:
coefficient_name=valuewith 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 Type | Order | Biquad Count |
|---|---|---|
| Butterworth/Bessel LP/HP | 1 | 1 |
| Butterworth/Bessel LP/HP | 2 | 1 |
| Butterworth/Bessel LP/HP | 3 | 2 |
| Butterworth/Bessel LP/HP | 4 | 2 |
| Butterworth/Bessel LP/HP | 5 | 3 |
| Butterworth/Bessel LP/HP | 6 | 3 |
| Butterworth/Bessel LP/HP | 7 | 4 |
| Butterworth/Bessel LP/HP | 8 | 4 |
| Butterworth/Bessel LP/HP | 9 | 5 |
| Butterworth/Bessel LP/HP | 10 | 5 |
| Linkwitz-Riley LP/HP | 2 (LR2) | 2 |
| Linkwitz-Riley LP/HP | 4 (LR4) | 2 |
| Linkwitz-Riley LP/HP | 8 (LR8) | 4 |
| Linkwitz-Riley LP/HP | 10 (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
- Open Menu > Export IIR Filters
- Select export format (FQG, CamillaDSP, Q-SYS, or MiniDSP)
- LinFIR identifies all enabled IIR filter chains:
- Global IIR (if enabled)
- Per-driver IIR (if enabled, Loudspeaker Design mode only)
- For each filter chain, specify output filename
- Files are generated with complete filter specifications
Room Calibration Mode: Only global IIR filters are exported (no per-driver files).
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:
- LinFIR uses high-quality resampling (sinc interpolation)
- The exported impulse maintains accurate time-domain characteristics
- 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 As Shortcut: Cmd+E (macOS) / Ctrl+E (Windows/Linux)
Save Options
- Menu File/Save (or Cmd+S): Overwrites the current project file (prompts for a location if the project has never been saved)
- Menu File/Save as… (or Cmd+E): Saves the project to a new file with a name and location you choose. LinFIR then keeps working on the new file - later saves and auto-saves go to it, and the original file is left as it was
- 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
Related Documentation
- Driver Processing - FIR crossovers and correction filters
- System Processing - Global FIR and IIR filters
- Keyboard Shortcuts - Complete shortcut reference
- HFD Export - Direct export to Hypex FA series amplifiers, no license required