The latency, or delay, through the PHL depends on several interrelated parameters. This post shows how latency is affected by changing the configuration of a typical multiband compressor based on Short Term Fourier Transform (STFT) using overlapp and add processing. The ‘simple-compressor.cfg’ program used in other posts is the starting point for the examples here.

As described in the documentation for the **overlapadd** plugin, the signal is windowed then usually zero padded before going through the FFT. The window is advanced by fragment size and the process is repeated.

**M**: Window size

**N**: FFT size

**P**: Frag size

The delay due to the signal processing is then

**M + (N-M)/2**

In addition to this delay, there is a significant delay associated with the data buffering of the Linux operating system.

In terms of practical implementations, there are some general constraints:

- The window size
**M**is usually a multiple of the frag size**P**(P=2*M, P=4*M, etc.) - Zero padding is necessary to prevent aliasing in practical systems. This means
**N**>**M**, and the length of the zero padding limits the length of the impulse response of the effective filter formed by different band gains. - The length of the FFT can affect its computational efficiency. It doesn’t need to be a power of two, but it’s probably best to keep it a product of small prime numbers. For example, 2^5 * 3 = 96.
- At a certain point the CPU will run out of cycles when the configuration as a whole proves too much. Sampling rate, fragment size, FFT size and overall algorithm complexity all play a role here.
- And of course, a smaller FFT size results in less frequency resolution for a given sample rate (given the usual zero padding caveats). This may or may not be much of an issue, depending on how your bands are structured.

## Delay examples

The delay through the PHL was measured for different parameter configurations and the results are shown below. The electronic measurement used a soundcard to generate an impulse that was routed through the PHL using the Line input/output connectors. All of these configurations used the same sampling rate, 24kHz, for ease of comparison.

M | N | P | Delay | |
---|---|---|---|---|

1 | 128 | 256 | 64 | 13ms |

2 | 64 | 128 | 32 | 7ms |

3 | 48 | 96 | 24 | 6ms |

4* | 110 | 162 | 55 | 10ms |

Example **1** uses the parameters in the original ‘simple-compressor.cfg’ program. Examples **2** and **3** show how the delay decreases as the FFT size and corresponding parameters are made smaller. Example **4*** was measured using the default hearing aid program that comes installed on the PHL.

Example **3** was also attempted using a sampling rate of 32kHz and the measured delay was 4.5ms, but the processor couldn’t keep up and this caused a very audible sporadic clicking.