[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