[openal] HRTF functions raw or diffuse field equalized?

Chris Robinson chris.kcat at gmail.com
Fri Mar 21 18:37:27 EDT 2014

On 03/21/2014 06:13 AM, Dejay wrote:
> the def files for make_hrtf all contain references to the raw impulse
> response files.
> Shouldn't the "diffuse-field equalized HRTFs" be used instead? From what
> (little) I understand they try to remove the influence of the recording
> and speaker equipment from the HRTF. Isn't that a good thing?

The makehrtf utility actually does its own diffuse-field equalization 
when processing the samples (the -e option, defaults to on).

> Looking at them in a wave file editor, they all seem to be rather
> shorter (almost clipped) and "less delayed".

OpenAL Soft uses minimum-phase reduced HRTF sets. Basically that means 
it removes the silence from the front of the coefficients (i.e. the 
coefficients at the start that are at or near 0) and clips off the 
silence at the end, taking the part that actually has an effect on the 
resulting sample value, and handles the delay separately as an offset in 
the input sample history (based on the amount of front silence in the 
original coefficients).

So instead of applying 128 coefficients, of which 3/4ths are silence, it 
offsets the input sample history based on the original delay and applies 
the 32 coefficients that actually matter. So that's 75% fewer 
multiply-add operations per output sample per source. The performance 
benefit when you have dozens of sources all mixing with HRTF is readily 
apparent, even when using SSE or Neon.

More information about the openal mailing list