FastConv

This FastConv (Fast Convolution) audio object implements an N-channel point to point FIR filter with a constant number of taps for all channels. This filter is optimal for higher order filters (> 1000).

Coefficients are provided through GTT custom panel from pre-stored coefficient files in .csv format.

  • Coefficients can be different for each channel, but with same tap length.
  • Coefficients represent the impulse response of the filter in time domain.

Without loaded coefficients, the filter functions as an all-pass filter passing the input signal as it is.

The FastConv audio object supports in-place computation based on the core type.

Use Case: The computational effort of a simple FIR filter in time domain increases linearly with the number of taps used.
For complex wideband filtering, example low frequency filtering using room impulse responses – the number of used taps might easily reach few hundreds or thousands. As this number of FIR taps in time domain cannot be realized with reasonable computational effort, it makes sense to do convolution by multiplication in frequency domain – using the FFT.
The trade-off for using fast convolution depends on the used platform and might be in the area of 32-64 taps.
As this filter supports multiple channels – it can be used to adjust the sound to certain acoustics in a multichannel environment. The impulse response, i.e. the time domain coefficients can be different for each channel.

FastConv Properties

Below table describes about the FastConv audio object properties and functionality.

Properties Description
# of Channels The object has a configurable number of channels. The number of audio inputs is always equal to the number of audio outputs.

  • Range: 1 to 255
  • By default, the number of channels is set to 1.
Number of taps The object has a configurable number of taps.

  • Range: 1 to 16384
  • By default, the number of channels is set to 1.
Display Name Display the name of the FastConv audio object in signal flow design. It can be changed based on the intended usage of the object.

Mode

There are no mode available for FastConv audio object.

Additional Parameters

There are no additional parameters available for FastConv audio object..

Tuning Parameters

In the current init setup, the tuning filter coefficients consist of all pass or bypass. In the real-world setup, these will be replaced with actual filter coefficients calculated for the preferred vehicle environment.

There are two sets of tuneable parameters –

  • Mode: Mode is a single variable
  • Coefficients: the number of coefficients depends on the tap-length value configured in GTT

Let Nc denote the number of coefficients (taps), Ni number of channels. All filter coefficients are stored using floating point format. The number of coefficients is rounded up to an integer power of 2, which allows for effective FFT radix-2 or radix-4 implementation. The filter coefficients are denoted by hi[k] where “I” is the filter’s index ranging from 0 to Ni−1 and “k” is the coefficient index (k = 0…Nc−1).

Sub-block ID Name Description Offset Type Unit Range Default
0 mode [0] Mode for filter 0 0 UInt32 None 0,1,2 0
0 Coefficients for filter 0 4 float None -1.0f; +1.0f 1.0f
0 Coefficients for filter 0 8 float None -1.0f; +1.0f 0.0f
0 Coefficients for filter 0 float None -1.0f; +1.0f 0.0f
0 Coefficients for filter 0 + 4 float None -1.0f; +1.0f 0.0f
1 mode [1] Mode for filter 1 + 4 UInt32 None 0,1,2 0
1 Coefficients for filter 1 + 8 float None -1.0f; +1.0f 1.0f
1 Coefficients for filter 1 + 8 float None -1.0f; +1.0f 0.0f
1 Coefficients for filter 1 float None -1.0f; +1.0f 0.0f
1 Coefficients for filter 1 + 12 float None -1.0f; +1.0f 0.0f
Ni-1 mode [Ni-1] Mode for filter Ni-1 + UInt32 None 0,1,2 0
Ni-1 Coefficients for filter + float None -1.0f; +1.0f 1.0f
Ni-1 Coefficients for filter float None -1.0f; +1.0f 0.0f
Ni-1 Coefficients for filter float None -1.0f; +1.0f 0.0f
Ni-1 Coefficients for filter + float None -1.0f; +1.0f 0.0f

The pre-computed FIR filter time domain coefficients need to be stored in a file in .csv format.

GTT has the provision to import the coefficients from the file for the selected channel and pass them to the device. During tuning phase, these time domain filter coefficients are converted to frequency spectrum coefficients for multiplication with the spectrum of the input.

The generalized offset information of the two tuneable parameters can be found below table.

FastConv Tuneable Parameters

Sub-block ID Name Description Offset Type Unit Range Default
i mode[i] Mode for filter i UInt32 0,1,2 0
i Coefficient k=0 for filter i float -1.0f; +1.0f 1.0f
i Coefficient k>0 for filter i float -1.0f; +1.0f 0.0f

FastConv operational mode (Normal / Bypass / Mute) can be controlled (as tuning parameters) from GTT panel. The description of each mode is given in the table below.

FastConv Mode Details

Mode Value Mode Tag Description
0 NORMAL Filter operation under use
1 BYPASS Input buffer copied to output buffer
2 OFF Output buffer set to zero

Control Interface

There are no control parameters available for FastConv audio object.

FIR Filter

The FIR Filter audio object implements a mechanism for time domain FIR filtering. FIR filters are more stable than IIR filters and can be designed to have linear phase response. However, they require a filter of higher order for similar response as an IIR and hence computationally intensive.

The filter operational mode can be controlled from GTT. The FIR filter coefficients can be provided through GTT custom panel from pre-stored coefficient files in .csv format.

Use Case: FIR filters are mostly used in applications that require linear phase. They are inherently more stable than IIR filters. However, FIR filters are generally computationally intensive. The applications include:

  • Correction of frequency response errors in a loudspeaker.
  • Phase correction in communication lines.
  • Parametric and crossover filters implemented with FIRs can be implemented with or without phase shift.

FIR Filter Properties

Below table describes about the FIR Filter audio object properties and functionality.

A screenshot of a computer Description automatically generated

Properties Description
# of Channels The FIR Filter audio object has a number of input channels that is double the number of output audio channels.

  • Range: 1 to 255
  • Default: 2
Number of taps for filter Specify the number of elements which is the order of filter.

  • Range: 2 to 1024
  • Default: 2
Display Name Display the name of the FIR Filter audio object in signal flow design. It can be changed based on the intended usage of the object.

Mode

Mode Description
Normal The FIR Audio Object shall perform the normal filter operation individually for each channel with the set of coefficients provided for each channel. The filter type can vary for each channel but the number of coefficients of all channels need to be the same.
Bypass The FIR Audio Object shall copy the input signal to the output buffer bypassing the filter operations. Each channel can be selectively bypassed.
Off The FIR Audio Object clears the output buffers.

Additional Parameters

There are no additional parameters available for FIR Filter audio object.

Tuning Parameters

There are two sets of tunable parameters – mode and coefficients.

  • Mode is a single variable.
  • The number of coefficients depends on the tap-length value configured in GTT.

Let Nc denote the number of coefficients (taps), Ni number of channels. All filter coefficients are stored using floating point format. The filter coefficients are denoted by hi[k] where “i” is the filter’s index ranging from 0 to Ni−1 and “k” is the coefficient index (k = 0…Nc−1).

The generalized offset information of the two tunable parameters can be found below table.

 FIR Tunable Parameters Offset

Name Description Offset Type Unit Range
mode[i] Mode for filter i UInt32
  • 0 – Normal
  • 1 – Bypass
  • 2 – Off
Coefficient k for filter i float -1.0f; +1.0f

FIR Tuneable Parameters Default Values

Name Description Default Values
Mode Operational Mode 0 – Normal
FIR Coefficients FIR Coefficient Array input [1.0f, 0.0f, 0.0f, ……… 0.0f] – All pass

Control Interface

There are no control parameters available for FIR Filter audio object.

AudioIO

The AudioIO audio object acts as the interface object between the xAF instance and other audio objects in the single flow design.

This AudioIO object can be configured to either receive audio data (AudioIn) from the framework or pass the processed audio (AudioOut) back to the framework.

  • When configured as AudioIn, this object copies the audio data from the input audio buffers of the framework to the output buffers of this audio object that is accessible to other audio objects in the pipeline.
  • When configured as AudioOut, this object copies the audio data from its input buffer to the output buffers of the xAF instance.

Use Cases: This object can be deployed whenever an audio buffer needs to be sent or received by the framework.

A computer screen shot of a computer Description automatically generated

AudioIO Properties

Below table provides the details about AudioIO audio object properties and functionality.

Properties Description
# of Audio Out

Or

# of Audio In

Enter the number of audio input or audio output. For any xAF instance, the SFD can have only one input AudioIO object and one output AudioIO object. The number of audio channels of this object shall be the same as the number of audio IO of the instance.

  • Range: 1 to 255
  • Data type: Unsigned short
  • The default value is set to 2.
Display Name Display the name of the AudioIO audio object in signal flow design. It can be changed based on the intended usage of the object.
Object Mode The AudioIO audio object supports the following two modes.

  • Audio In
  • Audio Out

Mode

The AudioIO audio object supports the following two modes:

  • Audio In: In this case, the AudioIO audio object is used to receive audio data from the xAF instance (source). The object will have only audio outputs in this mode to pass the audio to subsequent objects for processing.
  • Audio Out: In this case, the AudioIO audio object is used to send audio data back to the xAF instance (sink). The object will have only audio inputs in this mode to collect the processed audio and pass it back to the xAF instance audio buffers.

Additional Parameters

There are no additional parameters available for the AudioIO audio object.

Tuning Parameters

There are no tuning parameters available for the AudioIO audio object.

Control Interface

There are no control parameters available for the AudioIO audio object.

Native Panel

AudioIO audio object does not support the native panel.

ControlIn

The ControlIn audio object is deployed to connect the external control signals to the audio objects used in the signal flow. Each framework instance can have only one instance of this ControlIn object. This object serves as the consolidation point for all the control inputs for the framework instance.

Use Cases:

  • Use case 1 –Central volume control received (0 to 100% volume) from the Head unit will be forwarded to the controlIn AO. User can design the signal flow using LUT to convert the percentage volume to db unit and send it to Volume AO to manipulate the audio signals. 
  • Use case 2 – Bass and treble input from the user can be converted to Frequency, Gain, and Quality factor for Tone control audio objects to give the desired effect for the audio signal.  

ControlIn Properties

Below table provides the details about ControlIn object properties and functionality.

Properties Description
Number of Control Output The number of control output signals is configurable.

  • Range: 1 to 100
  • By default, the number of control output signals is set to 1.
Display Name Display the name of the ControlIn object in signal flow design. It can be changed based on the intended usage of the object.

Additionally, in the ControlIn object, you can configure the Control ID for each control pin.

The Control IDs can be selected from the available list or you can add the new custom Control IDs. For more details on adding and editing control ID, refer to Control IDs.

Graphical user interface Description automatically generated

Mode

There are no modes available for the ControlIn object.

Additional Parameters

There are no additional parameters available for the ControlIn object.

Tuning Parameters

There are no tuning parameters available for the ControlIn object.

Control Interface

The ControlIn object passes through the control signals received from the framework instance on the configured pins. Additionally, there are no control parameters available specifically to control the functioning of this object.

Native Panel

ControlIn object does not support the native panel.

ControlOut

The ControlOut audio object is a framework level object, that ties directly with the framework’s control system. The purpose is to take control values from an xAF instance (AudioProcessingBase) and make them available externally.

The ControlOut audio object accepts any combination of controls – single or block.

Use Case: This object can be deployed whenever the framework wants to access any control value of a signal flow. The platform may want to access these values from the framework.

ControlOut Properties

Below table provides the details about ControlOut object properties and functionality.

Properties Description
Number of Control Input The number of control Input signals is configurable.

  • Range: 1 to 225
  • By default, the number of control input signals is set to 1.
Display Name Display the name of the ControlOut object in the signal flow design. It can be changed based on the intended usage of the object.

Mode

There are no modes available for the ControlOut object.

Additional Parameters

Parameters Description
Group Sizes This is an additional parameter which is an array with a length equal to NumElements

Each value in this array is the size of the corresponding control.

Example: [1,2] would mean the first control input is a single control, but the second is a block control of size 2.

Graphical user interface, application, Teams Description automatically generated

Tuning Parameters

There are no tuning parameters available for the ControlOut object.

Control Interface

There are no control parameters available to control the functioning of this object.

Native Panel

ControlOut audio object does not support the native panel.

ParameterBiquad

This ParameterBiquad audio object computes bi-quadratic filter coefficients and calculates the output of the input audio buffers processed through the filters that users specify.

Use Case: This audio object can be deployed whenever a user wants to filter a signal based on user specified parameters.

Parameter Biquad Properties

Below table describes about object properties and functionality of ParameterBiquad audio object.

Properties Descriptions
# of Channels The object has a configurable number of channels. The number of audio inputs is always equal to the number of audio outputs. These channels are referred as subblocks. Filter has as many subblocks as number of channels and one additional subblock for Ramp characteristics.

  • Range: 1 to 64
  • By default, the number of channels is set to 1.
Number of biquads The number of elements generally describes the number of filters requested by the user.

  • For parameter and parameter one modes, this value is configurable between 1 and a 100 and is by default set to 1.
  • For Parameter one control mode, this value is not configurable and is hardcoded to 1.
Display Name Display the name of the ParameterBiquad audio object in signal flow design. It can be changed based on the intended usage of the object.
Object Mode ParameterBiquad audio object operates in one of the three modes.

  • Parameter
  • Parameter One
  • Parameter One Control Set

Mode

The ParameterBiquad audio object operates in one of three modes and ramping is applicable in all modes:

Mode Description
Parameter

(Default)

In this mode, the block receives the following filter specifications from the user for each filter in a channel.

This mode generates a set of filters per channel, so each channel has its own set of unique filters.

  • Frequency (in Hz),
  • Gain (in dB),
  • Q (Quality factor), q
  • Type of filter (lowpass, highpass, etc.)
  • Bypass mode (if set, the block doesn’t filter the incoming audio buffer)

In this mode, each channel can have its own set of coefficients and filter specifications.

Parameter One In this mode, the block receives the following filter specifications from the user for each filter in a channel:

This mode generates a set of filter coefficients for all audio channels. The only difference between this mode and the Parameter mode is that this mode generates one set of coefficients for all channels as opposed to one set per channel.

  • Frequency (in Hz),
  • Gain (in dB),
  • Q (-Quality factor), q
  • Type of filter (lowpass, highpass, etc.)
  • Bypass mode (if set, the block doesn’t filter the incoming audio buffer)

In this mode, all channels use same set of filter/filter coefficients. This block uses the above filter specifications to calculate the filter coefficients based on the type of the filter requested by the user.

The difference between Parameter mode and Parameter One mode is that Parameter One mode will apply the same set of filter coefficients to each channel whereas Parameter mode will apply different sets for different channels.

This is identical to the Parameter Mode, except, instead of presenting the variables for each filter per channel, this mode only presents a set of coefficients per filter, regardless of the number of channels.

Parameter One Control Set This mode also allows to control the cut off frequency via a control input pin.

This mode only uses one filter and applies the filter characteristics to all channels similar to Parameter One mode. It also exposes one control (accessible from the HU) variable to manipulate the cut-off frequency.

This is identical to Parameter One Mode but it has only one filter.
The Biquad object does not expose any variables for control except for the Parameter One Mode Set Control Frequency, where it exposes the cut-off frequency of the filter. When this parameter is changed then ramping is applied.

In addition to the above parameters, ParameterBiquad also exposes Ramp time configuration (both in state and tuning memory). For each channel in parameter mode and in Parameter One & Parameter One Mode Set Control Frequency single Ramp Time is exposed irrespective of number of channels.

Additional Parameters

Parameter Description
Biquad Topology Allows the user to choose the filter topology at design time.

  • Direct Form I (DFI)
  • Direct Form II (DFII)
  • Transposed Direct Form II (TDFII)

By default, it is configured for DFII.

Tune Ramping On/Off Allows user to enable or disable the ramping during tuning.

By default, ramping is disabled.

1 – Ramping Enable

0 – Ramping Disable

Irrespective of this option, ramping characteristics are always available as tuning parameters that will be used whenever changes are made through control inputs.

Tuning Parameters

This table assumes subblocks are utilized. If a user were to tune without subblocks, they would need to account for the memory offsets for subblocks.

f = Filter # (starting from beginning of subblock)

Parameter Description Data Type Unit Default Memory Offset Range
Frequency Cut off frequency of the filter float Hz 20 f * 5 * 4 + 0 10 to 20000
Gain Gain float dB 0 f * 5 * 4 + 4 -30 to 50
Quality Q factor of the filter float 0.7 f * 5 * 4 + 8 0.1 to 116
Type Type of filter: lowpass/high pass/ shelve, etc Int 0 f * 5 * 4 + 12 0 – BYPASS

15 – RESON

Bypass* Bypass on or off (0 is on) Int 0 f * 5 * 4 + 16 0 to 1

*ATTENTION: The Bypass logic is inverted. When Bypass value is set to 1, the AO applies filtering and generates the filtered output. When Bypass value is set to 0, the AO passes the input to the output. This need to be retained this way to maintain backward compatibility.

Last subblock irrespective of channels will be the ramp characteristics. Below is the memory layout for the last subblock. If m_NumChannels N,

  • In Parameter mode last subblock will be N.
    • For example, for 2 channels, subblock 0 and 1 are for the filters and subblock 2 is for ramp characteristics. When channels are changed to 3 channels, subblock 0, 1 and 2 are for the filters and subblock 3 is ramp characterics.
      • Please note that subblock 2 (which was used for ramp characteristics when number of channels were 2) used for filter when number of channels are 3.
      • Because of this, application using this AO, may not be able to retain the ramp characters when number of channels are changed.
  • In Parameter One mode and Parameter One control set mode last subblock will be 2 irrespective of number of channels

Ramp Characteristics Subblock

Last sub-block Name Type Unit Min Max Default Value Offset Description
Ch = 0 Ramp time ch0 float ms 0 500 0 ch *4 Ramp time for first channel
Ch = 1 Ramp time ch1 float ms 0 500 0 ch * 4 Ramp time for second channel
Ch = N  – 1 Ramp time ch(N-1) float ms 0 500 0 ch * 4 Ramp time for last channel

Control Interface

There are no control parameters available for Parameter Biquad audio object.