One of the things that one can expect when they offer software to the world is to receive Comments and Questions. Here are some that have come in so far about this package.

Q1: I wanted to make sure you knew about FFTW. www.fftw.org I've used it in one application and found the API to be quite painless. The only reason I can think of for using home-grown FFT code is to simplify building your package. That could be important, but in cases where performance, portability, or development time matters more, FFTW seems like a good choice.

A1: My FFT was designed to be a drop-in (free) replacement for four1. It is easy to make a variant in which the sines are precalculated and kept in a static array, which helps speed-wise. On the other hand, FFTW expands into in-line code which certainly speeds things up, and they can handle FFT's which are not 2^N. They are probably using the same trick I use where I eliminate complex multiplications. I'll have to take another look at FFTW.

Q2: An interesting project.. I think there's another doing the equivelant in 3 dimenstions, called OpenAL.

A2: The Open AL project is not using dHRTF techniques from what we have seen on the web site, My program uses a more complex technique than methods such as doppler shift. Of course, my code will also require more computing resources.

Q3: I've worked with FFT code enough to recognize it as a slightly reformatted version of the four1 function from numeric Recipes in C. I have no idea how agressive the authors/publishers are about this sort of thing, but you really ought to cite them in the source...

A3: Actually, I did a fair amount of digging to find the origins of four1.c and discovered that it is based on an FFT published in Programs for Digital Signal Processing (IEEE Press 1979), written by C. M. Rader. I then dug up the paper by N. M. Brenner cited in Numerical Recipes. In the paper he offered to mail a copy of his FFT to anyone who was interested, and the FFT in Numerical Recipes is probably that FFT.

I derived the FFT from scratch using the work of Rader and Brenner and rewrote the FFT (except I used a structure to define complex numbers etc.). The fact that it comes out looking similar to Numerical Recipes is therefore to be expected.

You are right about the attitude toward intellectual property espoused by the authors of Numerical Recipes. They warn of dire consequences for copyright violations. However, having derived my FFT entirely from published information I feel that the authors have no claim against me.

Q4: Your program would be more logical, when the nose is pointed upwards, not the the right.

A4: There is an implicit design decision there which is not obvious. It turns out that the position of the head and the shape of the room are important factors in preventing front back reversals (in which for example a sound behind you appears to come instead from the front). Rooms that are longer than they are wide give better results. Since screens are wider than they are high, I rotated the room 90 degrees so that I could fit the room comfortably on the screen.

Q5: I'm trying to make a 3d sound render engine based on the same HRTF data you used. I am using the compact package, with white noise to test. The results are bad, I can't hear a source comming from a certain point in space. Would it be better if I were to add a raytracer for reverb (perhaps with HRTF included for those rays)?

A5:The HRTFs from the KEMAR dummy are known to be deficient in some respects. That is why I augmented the spatialization cues using commmon mode information.

Reverberation helps to externalize the sound. Without it, the sound appears to come from inside your head. Reverberation definitely helps, but you have to make a trade-off between the externalization and the fact that the extra reflected rays can diminish the accuracy of the perception of direction. The HRTF based filters you use for the reflected rays must correspond to the direction of arrival of the ray.

Q6: Why did you use such a low sample rate, would you not get sound like a walkie talkie?

A6: The overall project was to test the practicality of an enhanced communications system for military applications. The sample rate was chosen to be comparable with existing communications links.

Q7:What changes would I have to make to use this with Hi-Fi sample rates, like Audio-CDs for instance?

A7:Along with the soundscape, I provided a utility called diffasci.c which can be used to change the filter coefficients to suit another sampling frequency.

Related Links

Last updated September 22/2000

link back to the program page.

link back to my home page.