Matlab demonstration of an algorithm for interpolating distance-dependent (near-field) head-related transfer functions (HRTFs).
The interpolation is performed using barycentric weights of 4 HRTF measurements forming a tetrahedron that encloses the desired source position.
The main steps of the interpolation algorithm are:
1) Initialisation: organise HRTF measurement positions in tetrahedral mesh via Delaunay triangulation and generate an octree;
2) Source update: find a tetrahedron that encloses the desired source position (via brute-force search, or via adjacency walk with/without octree lookup);
3) Interpolation: calculate barycentric weights for linear interpolation of HRTF measurements at the vertices of the tetrahedron selected in 2)
Gamper, H. (2013). "Head-related transfer function interpolation in azimuth, elevation, and distance", Journal of the Acoustical Society of America 134(6), JASA EL547-EL554. Available online: http://link.aip.org/link/?JAS/134/EL547/1
fixed call to Delaunay to support earlier Matlab versions ( < 2009b)
removed tilde placeholders in function output calls for backward compatibility with Matlab versions earlier than 2009b
updated reference and link to JASA article
Added comments and references.