LMS
LMS component to estimate transfer function of an unknown channel, based on an input (source) and output (observation), similar to the functionality described in the document “ANC Adaptation by block”.
Specifically, the component implements the structure seen in this diagram:
This specific implementation receives downsampled input signals from SFU. The LMS estimates a FIR filter, which is the interpolated to the SFU samplerate and converted to fixed point (including shift factors) ready for sfu reconfiguration.
Inputs/Outputs
input
- 2 channel input buffer containing floating observation data, _y_ (channel 0), and source data, _x_ (channel 1).Note that the data is non-interleaved!Type: audio_buffer, float
output
- 1 channel fixed point upsampled filter coefficients in SFU format, including shifts. Length is(filter_order`+ 1)*`downsampling_ratio + 1 and data is organised as:- 1st byte = Input Shift- 2nd byte = Output Shift- the rest: CoefficientsType: audio_buffer, int32_t
IMPORTANT LIMITATIONS
Settings are currently hardcoded in header file - this will be fixed in next version!
Input will only accept non-interleaved data!
PC model is not included - this will be added in a later version
Tests
Both nonreg.py and gaptest are supported and can be run as usual.
Parameters
filter_order
- Number of delay elements (N) in the adaptive FIR filter (in the Audio domain) . Number of taps is therefore N + 1.Type: IntegerRange: [1, 254]
downsampling_ratio
- Decimation factor between High Sampling Rate domain and Audio domain where LMS is performed.Type: IntegerRange: [1, 16]
compens_filter_order
- Number of delay elements (M) in the IIR compensation filter. Number of taps is therefore M + 1 for the numerator, and M for the denominator.Type: IntegerRange: [1, 14]
compens_filter_coefficients
- IIR filter coefficients, stored in following order:
B0, B1, ..., BM, A1, ..., AM
.Type: Array of floats of size2 * M + 1
lagrange_order
- Order of polynom (L) for Lagrange interpolation of the Farrow structure.Type: IntegerRange: [1, 7]
lagrange_coefficients
- Coefficients of the transfer matrix of the Farrow structure, stored in the following order:
C0.0, C0.1, ..., C0.L, C1.0, C1.1, ..., CL.L
.Type: Array of floats of size( L + 1 ) * ( L + 1 )
num_of_cores
- Number of cores for the parallelisation on the cluster.Type: IntegerRange: [1, 8]