XCORE SDK
XCORE Software Development Kit
Macros
IC #define constants

Macros

#define IC_INIT_MU   0.369566
 
#define IC_INIT_EMA_ALPHA   0.9995117188
 
#define IC_INIT_LEAKAGE_ALPHA   0.995
 
#define IC_FILTER_PHASES   10
 
#define IC_Y_CHANNEL_DELAY_SAMPS   180
 
#define IC_INIT_SIGMA_XX_SHIFT   11
 
#define IC_INIT_GAMMA_LOG2   1
 
#define IC_INIT_DELTA   7.450580593454381e-09
 
#define IC_INIT_ENABLE_FILTER_INSTABILITY_RECOVERY   1
 
#define IC_INIT_INSTABILITY_RATIO_LIMIT   2.0
 
#define IC_INIT_SMOOTHED_VOICE_CHANCE_ALPHA   0.99
 
#define IC_INIT_ENERGY_ALPHA_SLOW   0.999
 
#define IC_INIT_ENERGY_ALPHA_FAST   0.98
 
#define IC_INIT_INSTABILITY_RECOVERY_LEAKAGE_ALPHA   0.995
 
#define IC_INIT_SMOOTHED_VOICE_CHANCE   1.0
 
#define IC_Y_CHANNELS   1
 
#define IC_X_CHANNELS   1
 
#define IC_FRAME_LENGTH   512
 
#define IC_FRAME_ADVANCE   240
 IC new samples frame size This is the number of samples of new data that the IC works on every frame. 240 samples at 16kHz is 15msec. Every frame, the IC takes in 15msec of mic data and generates 15msec of interference cancelled output. NOT USER MODIFIABLE.
 
#define IC_FD_FRAME_LENGTH   ((IC_FRAME_LENGTH / 2) + 1)
 
#define FFT_PADDING   2
 

Detailed Description

Macro Definition Documentation

◆ FFT_PADDING

#define FFT_PADDING   2

Extra 2 samples you need to allocate in time domain so that the full spectrum (DC to nyquist) can be stored after the in-place FFT. NOT USER MODIFIABLE.

◆ IC_FD_FRAME_LENGTH

#define IC_FD_FRAME_LENGTH   ((IC_FRAME_LENGTH / 2) + 1)

Number of bins of spectrum data computed when doing a DFT of a IC_FRAME_LENGTH length time domain vector. The IC_FD_FRAME_LENGTH spectrum values represent the bins from DC to Nyquist. NOT USER MODIFIABLE.

◆ IC_FILTER_PHASES

#define IC_FILTER_PHASES   10

The number of filter phases supported by the IC. Each filter phase represents 15ms of filter length. Hence a 10 phase filter will allow cancellation of noise sources with up to 150ms of echo tail length. There is a tradeoff between adaption speed and maximum cancellation of the filter; increasing the number of phases will increase the maximum cancellation at the cost of increasesed xCORE resource usage and slower adaption times.

◆ IC_FRAME_LENGTH

#define IC_FRAME_LENGTH   512

Time domain samples block length used internally in the IC's block LMS algorithm. NOT USER MODIFIABLE.

◆ IC_INIT_DELTA

#define IC_INIT_DELTA   7.450580593454381e-09

Delta value used in denominator to avoid large values when calculating inverse X energy.

◆ IC_INIT_EMA_ALPHA

#define IC_INIT_EMA_ALPHA   0.9995117188

Alpha used for calculating y_ema_energy, x_ema_energy and error_ema_energy.

◆ IC_INIT_ENABLE_FILTER_INSTABILITY_RECOVERY

#define IC_INIT_ENABLE_FILTER_INSTABILITY_RECOVERY   1

Boolean which controls whether to enable detection and recovery from instability. Normally this should be enabled.

◆ IC_INIT_ENERGY_ALPHA_FAST

#define IC_INIT_ENERGY_ALPHA_FAST   0.98

Fast alpha used filtering input and output energies of IC used in the adaption controller.

◆ IC_INIT_ENERGY_ALPHA_SLOW

#define IC_INIT_ENERGY_ALPHA_SLOW   0.999

Slow alpha used filtering input and output energies of IC used in the adaption controller.

◆ IC_INIT_GAMMA_LOG2

#define IC_INIT_GAMMA_LOG2   1

Up scaling factor for X energy calculation for used for LMS normalisation.

◆ IC_INIT_INSTABILITY_RATIO_LIMIT

#define IC_INIT_INSTABILITY_RATIO_LIMIT   2.0

Ratio of the output to input at which the filter will reset. Setting it to 2.0 or above is a good rule of thumb.

◆ IC_INIT_INSTABILITY_RECOVERY_LEAKAGE_ALPHA

#define IC_INIT_INSTABILITY_RECOVERY_LEAKAGE_ALPHA   0.995

Leakage alpha used in the case where instability is detected. This allows the filter to stabilise without completely forgetting the adaption.

◆ IC_INIT_LEAKAGE_ALPHA

#define IC_INIT_LEAKAGE_ALPHA   0.995

Alpha used for leaking away H_hat, allowing filter to slowly forget adaption. This value is adjusted by the adaption rate controller if instability is detected.

◆ IC_INIT_MU

#define IC_INIT_MU   0.369566

Initial MU value applied on startup. MU controls the adaption rate of the IC and is normally adjusted by the adaption rate controller during operation.

◆ IC_INIT_SIGMA_XX_SHIFT

#define IC_INIT_SIGMA_XX_SHIFT   11

Down scaling factor for X energy calculation used for normalisation.

◆ IC_INIT_SMOOTHED_VOICE_CHANCE

#define IC_INIT_SMOOTHED_VOICE_CHANCE   1.0

Initial smoothed voice chance at startup. This value is quickly replaced by the calculated voice change value from the VAD signal.

◆ IC_INIT_SMOOTHED_VOICE_CHANCE_ALPHA

#define IC_INIT_SMOOTHED_VOICE_CHANCE_ALPHA   0.99

Alpha used for low pass filtering the voice chance estimate based on VAD input.

◆ IC_X_CHANNELS

#define IC_X_CHANNELS   1

Number of X channels input. This is fixed at 1 for the IC. The X channel is the microphone from which the estimated noise signal is subtracted. In practical terms it does not matter which microphone is X and which is Y. NOT USER MODIFIABLE.

◆ IC_Y_CHANNEL_DELAY_SAMPS

#define IC_Y_CHANNEL_DELAY_SAMPS   180

This is the delay, in samples that one of the microphone signals is delayed in order for the filter to be effective. A larger number increases the delay through the filter but may improve cancellation. The group delay through the IC filter is 32 + this number of samples

◆ IC_Y_CHANNELS

#define IC_Y_CHANNELS   1

Number of Y channels input. This is fixed at 1 for the IC. The Y channel is delayed and used to generate the estimated noise signal to subtract from X. In practical terms it does not matter which microphone is X and which is Y. NOT USER MODIFIABLE.