"positioning" a sound in headphones
Hi,
I am hoping to be able to create a system that plays an audio signal via a pair of headphones but I want to be able to make the sound appear to be in front of, or even behind the listener.
I'm sure we've all experienced that effect with headphones where the sound seems to be inside your head, panning just makes it move from one ear to the other but always inside the head.
I know there are ways to record in an environment (Ambisonics) using a dummy head with microphones in the base of dummy ears and these can be remarkably convincing when played back but I want to try and create this effect artificially.
I am guessing that it is something to do with eq and phase adjustment of a single source in different amounts to each ear but can anyone point me at anything that might help me set up a system on an ADAU1452 demo board.
Or even better has anyone got a SigmaStudio schematic that can do this?
Thanks in anticipation of any suggestions
PhilipJ
Audio Signal Processors
adau1452
software
SigmaDSP Audio Processors
Hello PhillipJ,
This is not a trivial thing to do. This is basically a part of what Dolby Atmos does and they had many talented engineers working for years to come up with the system.
I attached a project where I was experimenting with some spatial widening effects but this is not what you are looking to do.
You are correct that it is combination of phase (delay) level, EQ etc. HRTF comes into play and that is different for everyone. So it is not a trivial thing to do.
I hope someone else in the community can chime in with suggestions. It is an interesting topic.
Dave T
0336.ADAU1452REVB Headphone Spatial Widening.dspproj
I used to dabble in this kind of stuff years ago. Generally you need an HRTF filter set, which are usually long FIR filters, 512 points at least. There are several public sets available. I'm not sure if the 1452 can handle filters of that length in stereo, but maybe. You might need to move up to the beefier processors. There will also be a delay from the filter unless you use block convolution, which is a little complicated and probably beyond sigmastudio.
There are also simplified HRTF models out there that are computationally more efficient, but I don't know how well they work. A lot of the filter is just delay so that can be implemented separately. This is definitely not a trivial project though. Head tracking is usually needed as well for reliable front-back discrimination.
Hello Joe42,
Thanks for the great post. I just want to add that the Sigma300/350 processors can calculate up to 24,000 taps of an FIR filter per sample period. ( 48kHz) So two 512 tap filters is a walk in the park. There is also block processing but that gets more difficult since usually you will need some sort of custom assembly code to actually do anything interesting. There are some block functions available but it is somewhat limited unless you have our internal tools to do the assembly programming.
Dave T
Well thanks, and I learned something, 24k taps is plenty! So many other things make this a hard project though. Do it in Matlab first. :)
Hi guys, sorry for the delay, I forgot that I had written this question!!
I apreciate the comments and you have given me something (HRTF filters) to go look for and read up on. I guess I'm not going to get anything working any time soon but it was really a stab in the dark to see what people thought.
regards
PhilipJ
Please log in to reply.