[openal] Enabling HRTF

Chris Robinson chris.kcat at gmail.com
Thu Dec 4 23:08:58 EST 2014

On 12/02/2014 10:57 PM, developer at oldunreal.com wrote:
> Great its taken care about this. For now I think its a real mess to only
> find out how to enable it and to put some config file into %appdata%
> without having a chance to check out (or better to log it) if its
> enabled and working or not is kinda annoying, for now I just can rely on
> my ears and I am not really used to hear with headphones.
> For me
> ALCint attribs[] = { ALC_HRTF_SOFT, enable, 0 };
> context = alcCreateContext(device, attribs);
> would be already sufficient, however,
> void alcDeviceReset(ALCdevice *device, const ALCint *attribs);
> this method would be real sexy.

alcDeviceReset does seem to be the best-looking solution. Richard, do 
you have any thoughts on this? How would you prefer to make an option 
for allowing apps to request HRTF rendering? Would an ALC_HRTF (or 
ALC_HRTF_RENDERING or some other name) boolean device attribute, 
settable via alcCreateContext and a new alcDeviceReset function, work 
for you?

> What license do these mhr files have anyway?

The mhr files are derived from the MIT KEMAR measurements, which specifies:
"This data is Copyright 1994 by the MIT Media Laboratory.  It is 
provided free with no restrictions on use, provided the authors are 
cited when the data is used in any research or commercial application."

So if they're distributed as part of a commercial app, you just need to 
cite them somewhere.

I've considered switching the default set to one of the IRCAM measurements:
which appear to be public domain according to the info listings. Trouble 
is, they provide over 50 different measurements, and I wouldn't know 
which to pick as the default. I could perhaps make an average of all the 
measurements, but I can't say what the result will be like with all the 
averaging and blending the coefficients will end up going through 
(average 50+ data sets together, average the left and right ears, and 
then bilinear interpolate the four nearest coefficients for a given 
direction). It may just be better to pick an average-height and 
average-hair one pure as the default.

More information about the openal mailing list