The Loudspeaker Processor Interchange Format (LPIF)
(Info for Manufacturers & OEMs)
This specification describes the LPIF (JSON) format for transferring loudspeaker EQ settings from filter design tools, (like Eclipse Audio “FIR Designer” and Rational Acoustics’ “Smaart® Data Modeler“) to DSP amplifier and processor control programs. The format can be passed as a file or over a network.
A number of brands are already using LPIF for FIR filter transfer, IIR filter transfer and full preset transfer (including gain, polarity, delay IIR & FIR filters for input channels and all output channels, and optionally with with different sample rates).
Implementation of a branded IIR filter mode in Eclipse Audio software is a prerequisite for enabling accurate LPIF export and DTP implementations from our tools to a specific processor brand.
For more details on how to support LPIF import in your control software or hardware, contact us.
LPIF Specification
NOTE: Specific range limits for each parameter may be different for different amplifiers, processors and control programs. Where ranges are supplied by the manufacturer, FIR Designer can apply validation checks and alert the user before exporting the JSON file or transmitting the JSON data.
The format:
- Caters to both single channel processing chains and multi-way processing for multi-way loudspeakers
- Handles processing where crossovers and/or EQ maybe be split both pre and post limiter
- Provides for different sample rates in different parts of the processing
- Provides for both parameterized EQ and raw filter coefficients
The JSON structures and examples in this document show the layout present inside JSON text files. JSON code libraries automatically handle de-formatting of binary or text files.
Processing Block
A processing block consists of data for IIR filters, FIR filters, delay, gain and polarity and running at a common sample rate. Not all data need be present. For example, a processing block could consist of only IIR, or only IIR and FIR filter coefficients.
Figure 1: Processing Block
The order of processing – e.g. IIR, then FIR, then Delay… – is not implied nor specified, and the receiver that loads the JSON data may choose to process audio in any order.
Note: JSON code libraries usually don’t maintain the write-order when creating JSON documents and typically use alphabetical order when displaying JSON data.
“type” and “channel”
The “type” enumerated field denotes the location of the Processing Block in a Loudspeaker Preset. Valid types are “eq”, “input”, “output-a” and “output-b”.
As will be shown later,
- a system EQ preset consists of an array of Processing Blocks, all with type “eq”.
- a loudspeaker preset consists of an array of Processing Blocks of types “input”, “output-a” and “output-b”.
The “channel” number is the input or output channel index in a loudspeaker Preset. If only one channel is resent, this field can be omitted. This number starts at 1.
For system EQ presets, at least one of either “channel” or “channel-name” needs to be present so the receiving software can load the processing block EQ settings to the appropriate system channel or group.
IIR Filters
An IIR filter can be specified parametrically (type, frequency, gain, Q or bandwidth), as raw coefficients (b0, b1, b2, a0, a1 & a2) calculated for the indicated sample-rate, or both. Since different processors often have slightly different interpretations of Q or bandwidth, raw coefficients are preferred for specifying the IIR filtering. Where both are included, the receiver can choose to use either.
An array of IIR filters represents the IIR processing within a Processing Block. Each IIR filter can also include biquads.
Alternatively, the IIR processing can simply consist of a “biquads” array, without any IIR filter type specifications. The JSON array structure ensures the biquad order is maintained.
The “platform” string is optional and can be used for a processor-specific or brand-specific label or code. Since different platforms have different interpretations of parameters like Q or BW, the “platform” code can help maintain accurate, platform specific interpretation ofthese parameters. FIR Designer will set this according to the FIR Designer IIR filter mode. Examples include “biamp”, “blazeaudio”, “bss”, “general”, “lake”, “lakemesa”, “linearesearch”, “marani”, “pascalaudio”, “powersoft”, “qscqsys”, “ramaudio”, “rmsacoustics” and “symetrix”.
“type” enumeration
Types | Required Fields |
---|---|
“parametric” | “frequency”, “gain”, “q” or “bandwidth” |
“band-pass” | “frequency”, “q” or “bandwidth” |
“band-stop” | “frequency”, “q” or “bandwidth” |
“notch” | “frequency”, “q” or “bandwidth” |
“lowpass-butterworth” | “frequency”, “order” |
“highpass-butterworth” | “frequency”, “order” |
“lowpass-bessel” | “frequency”, “order” |
“highpass-bessel” | “frequency”, “order” |
“lowpass-bessel-m3db” | “frequency”, “order” |
“highpass-bessel-m3db” | “frequency”, “order” |
“lowpass-lr” | “frequency”, “order” (order must be even numbered) |
“highpass-lr” | “frequency”, “order” (order must be even numbered) |
“lowpass-chebyshev1” | “frequency”, “order”, “ripple” |
“highpass-chebyshev1” | “frequency”, “order”, “ripple” |
“lowpass-chebyshev2” | “frequency”, “order”, “stop” |
“highpass-chebyshev2” | “frequency”, “order”, “stop” |
“lowpass-elliptic” | “frequency”, “order”, “ripple”, “stop” |
“highpass-elliptic” | “frequency”, “order”, “ripple”, “stop” |
“lowpass-variable-q” | “frequency”, “bandwidth” or “q” |
“highpass-variable-q” | “frequency”, “bandwidth” or “q” |
“lowpass-ntnc” | “frequency”, “order”, “lobe-height” |
“highpass-ntnc” | “frequency”, “order”, “lobe-height” |
“lowpass-ntm-36” | “frequency” |
“highpass-ntm-36” | “frequency” |
“lowpass-ntm-52” | “frequency” |
“highpass-ntm-52” | “frequency” |
“lowpass-hardman” | “frequency”, “order” |
“highpass-hardman” | “frequency”, “order” |
“lowpass-nxf” | “frequency”, “order”, “lobe-height” |
“highpass-nxf” | “frequency”, “order”, “lobe-height” |
“low-shelf” | “frequency”, “gain”, “q” or “bandwidth” or “slope” |
“high-shelf” | “frequency”, “gain”, “q” or “bandwidth” or “slope” |
“dual-shelf” | “frequency”, “low-gain”, “high-gain”, “q” or “bandwidth” or “slope” |
“allpass” | “frequency”, “order”, “q” or “bandwidth” |
“mesa” | “frequency”, “gain”, “bandwidth”, “frequency-high”, “bandwidth-high” |
“custom” | “biquads” array |
Note:
“frequency” > 0.0 Hz and < sample-rate/2 Hz
“ripple” > 0.0 dB
“stop” < 0.0 dB
“…-ntnc” Refers to the Neville Thiele notched crossover type. Valid “order” values are 4, 6 and 8.
“lobe-height” < 0.0 dB. The height of the NTNC or NXF response lobe, beyond the notch.
– For NTNC filters, the value is a continuous decimal number. Typical NTNC values are -36 dB for 4th order and -52 dB for 8th order.
– For NXF filters, the value has discrete values of -40, -45, -50, 55, -60, -65 and -70.
“slope” dB/oct
“sub-type” enumeration
This is used by some platforms to denote differences within a specific type.
Blaze Audio & Pascal Audio IIR Modes
Type | Sub Types |
---|---|
“low-shelf” | “q”, “6”, “12” |
“high-shelf” | “q”, “6”, “12” |
RAM Audio & RMS-Acoustics IIR Modes
Type | Sub Types |
---|---|
“low-shelf” | “v1”, “v2” |
“high-shelf” | “v1”, “v2” |
Marani IIR Modes
Type | Sub Types |
---|---|
“parametric” | “a”, “c” |
“low-shelf” | “6”, “12”, “12q” |
“high-shelf” | “6”, “12”, “12q” |
Lake Mesa Mode
The Lake Mesa mode is technically not an IIR filter mode, but its filter prototypes are similar to traditional IIR filter types and so Lake Mesa or Lake Controller EQ overlay filters can be encapsulated in LPIF. This mode is only to be used for a LPIF input position processing block.
A filter type unique to this mode is the “mesa” filter. This has gain, high and low frequency, and high and low bandwidth parameters. The low parameters correspond to “frequency” and “bandwidth”, and the high parameters correspond to “frequency-high” and “bandwidth-high”.
“q” and bandwidth
Only one of these should be present. If the JSON receiver only uses one of these, and receives the other, it can optionally indicate a receive error, or convert from one to the other.
“biquads”
A biquad array consists of raw transfer function coefficients in numerator denominator form. The JSON array structure ensures the biquad order is maintained. The receiving program can use the coefficients directly or convert them into other forms; e.g. state-space.
Notes:
- Biquad coefficients for Linea Research Hardman filters are not export.
- Biquad coefficients for Marani NXF filters are not exported, nor supported in LPIF, due to the implementation topology that isn’t simply a concatenation of biquads.
FIR Filter
The FIR filter data includes and “enable” flag, and optional “latency” sample number and an array of raw coefficients as decimals. A value of 1.0 followed by zeros represents unity or 0 dB, with no delay. The latency” is informative only and represents the sample location of the time=0 peak in the FIR filter. It is set from the “FIR Filter Delay” setting in FIR Designer.
Loudspeaker Preset
A Loudspeaker Preset consists of one or more Processing Blocks that provide all EQ processing necessary for single and multi-way loudspeakers.
The preset consists of one optional “Input” Processing Block, and one or more outputProcessing Blocks, where different output blocks denote settings for different drivers in a multi-way loudspeaker.
There are two “type” indications for output processing blocks; “output-a” and “output-b”. Where one Processing Block is adequate for all output EQ settings, the block should be labelled “output-b”. For situations where output EQ is spread either side of other processing – such as when splitting crossovers either side of output limiters or separating speaker EQ from output EQ – both “output-a” and “output-b” blocks can be specified.
Each Processing Block can have a different sample rate. (For example, the LAKE FIR 3-way module runs input processing at 96 kHz and output processing at either 12 kHz, 24 kHz or 48kHz.)
Figure 2: Loudspeaker Preset
If a channel’s FIR filter has a different sample rate to the IIR and Delay blocks, the FIR filter should be placed in a separate Processing Block.
Format
The loudspeaker Preset file begins with some informative fields, followed by an array of Processing Blocks.
Download the (PDF) LPIF Specification for examples:
- One output processing block
- One output processing block with only a FIR filter
System EQ Preset
A system EQ preset consists of one or more Processing Blocks that provide all EQ processing necessary for channels or groups in a system. Each Processing Block has the type “eq”.
Rational Acoustics Smaart® Data Modeler exports system EQ presets*.
*Note: Data Modeler system EQ presets do not include FIR filters nor IIR filter biquad coefficients.
Grouping
Many platforms support group EQ on groups of channels and (other) groups. To understand the EQ group hierarchy, it’s useful to know if the “eq” processing block is part of a group (which has separate EQ, as defined in another “eq” processing block).
The “eq” processing block includes an array of other processing block “channel-name” fields, for groups that this block is a part of. This array is called “group-channel-names. If the present block is not in a group, the group-channel-names” field can be omitted.
The examples in the PDF version of this specification show how channel names “FOH Left” and “FOH Right” are both part of the “FOH EA” group, who’s EQ is defined in a separate processing block.
Importing System EQ Presets
The “channel-name” field will be populated with either the channel name or the group name. For programs receiving or importing system EQ presets, it’s expected that the “channel-name” will be used to match each processing block (from the preset) with the corresponding processing function in the system control software or amplifier control software.
Where a name match cannot be made, or a where duplicate names occur, the receiving software may need to prompt the user for a resolution. For example, the user could be prompted to force a match or discard a processing block during import.
Download the (PDF) LPIF Specification for examples:
- System EQ preset example
- System EQ preset example for Rational Acoustics’ Smaart® Data Modeler
Smaart is a registered trademark of Rational Acoustics LLC, Connecticut, USA.