DSPs: Convert Stereo to Binaural
Dec 1, 2003 at 12:33 AM Thread Starter Post #1 of 20

tigre

New Head-Fier
Joined
Oct 24, 2003
Posts
41
Likes
0
Hi.

I've been interested in the "how do I get headphone sound out of my head" topic for ~ 1 year now and have found some information as well as some DSP plugins.

Here are all free DSPs I've found so far:

crossfeed
available for winamp + foobar2000.

Headplug
available for winamp

EarWax
available for winamp + as plugin for SOX (commandline wave editor)

4Front Headphones
available for winamp, foobar2000, WMP9 and some more players.

Related threads at Hydrogenaudio:

Test: Headphone Plugins, Crossfeed, HeadPlug
Hustbaer's HeadphonePlugin
EARWAX: Another Headphone DSP
4Front Headphones for foobar2000 (dsp)

Some details:

EarWax has a cool sounding name, but it sounds quite crappy.

Crossfeed is simple (not configurable) and does a good job moving stereo image out of the head for me, sound isn't changed much (almost flat frequency response), but the result isn't comparable to real binaural recordings.

Headplug is configurable. It can be configured in a way that it sounds similar to Crossfeed. I was able to find settings that move the sound sources more in front of me, OTH these settings add some equalization to the sound.

4Front Headphones has been the only one so far that is able to put the sound sources really in front of me. It has one slider to configure. Unfortunately with increasing the effect, the stereo image collapses more and more and some equalization is applied. Anyway, all in all I'm really impressed. The author told me that this plugin is a simplified version of OSS/3D with hardcoded settings. I've tried playing with its settings to get something similar without the drawbacks but so far I haven't been satisfied.

I hope I've provided something new for some of you.
wink.gif


Cheers tigre
 
Dec 1, 2003 at 5:51 AM Post #2 of 20
Hi tigre, thanks for this informative post.. I've tried the 4Front Headphones - wonderful effect, but at default settings of 30% I found it too artificial, but 10-20% is quite good.. but it doesn't do what crossfeed do, but their combination (4Front->Crossfeed) seems like a really nice option for phones
smily_headphones1.gif
 
Dec 1, 2003 at 6:31 AM Post #3 of 20
Quote:

Originally posted by tigre
4Front Headphones has been the only one so far that is able to put the sound sources really in front of me. It has one slider to configure. Unfortunately with increasing the effect, the stereo image collapses more and more and some equalization is applied. Anyway, all in all I'm really impressed.


Thanks Tigre. The basic effect I got was that the sound was "in front of me" all right -- at 30% it sounded very much like a single mono speaker sitting a few yards in front of me (just what I always wanted from HD600 headphones
rolleyes.gif
). Less than 30% seemed to trade soundstage directly for 'externalization' (as you noted)... again, not really acceptable.

As Glassman noted, there's a certain artificiality at ~30% and above too. Even as it fools the ear, it still sounds like reverb.

Like all DSPs I've ever tried, that one hit the bit bucket in about 30 seconds. Interesting though.
 
Dec 1, 2003 at 7:48 AM Post #4 of 20
doesn't this "4 front headphones" thing work on win98?
because there's an OSPI window that tells me to choose one of the OSPI plugings -0 but non to choose from, and the Foobar won't load..
 
Dec 1, 2003 at 9:24 AM Post #5 of 20
AdamZuf, I haven't had such problem (Win2k here). Maybe the latest version of foobar2000 is necessary for it to work. I'd try to uninstall both and try with fb2k 0.7.4. If the problem's still there, I'd report to the author (gyohng) in the HA thread.
 
Dec 7, 2003 at 11:26 PM Post #6 of 20
I've had the idea to create something similar myself for a long time using publicly available impulse response measurements of head related transfer functions (HRTF). A convolver DSP capable of channel mixing would be necessary for this. (1st channel: impulse response for left speaker -> left ear = right speaker -> right ear, 2nd channel: impulse response for left speaker -> right ear & vice versa)

I've created a prototype of such impulse responses. Everyone can use them with free software to convert stereo .wav files to binaural. ATM it's quite uncomfortable but hopefully there'll be a DSP plugin at least for fb2k capable of processing these kind of impulse responses directly on the fly. Details:
http://www.hydrogenaudio.org/index.php?showtopic=16166

For demonstration / comparison purposes I've created a sample also accessable from the hydrogenaudio thread.

If anyone has a recording of which he thinks it has great stereo imaging / soundstage on speakers, I'd appreciate to get a ~ 20 seconds sample for testing + further improvements.

Any other feedback is welcome too.
 
Dec 8, 2003 at 10:13 AM Post #7 of 20
I just threw together a plug-in for foobar2k to play around with HRTF data.
I'm using some IRCAM HRTF data and have yet to put a selectable speaker location on a dialog. I'll post the plugin soon. It's kind of fun to listen to the incompatible HRTFs (the one I'm listening to right now images off to the left...)
 
Dec 8, 2003 at 4:24 PM Post #9 of 20
ASDFer, this seems to be great. I haven't tested it yet because I'll have to check which set of impulse responses to choose, but soon...

3 questions

1. To make it work the way I think it should, it needs to apply 4 impulse responses:
left channel -> IR1 -> left ear
left channel -> IR2 -> right ear
right channel -> IR3 -> left ear
right channel -> IR4 -> right ear (with IR1 = IR4 and IR2 = IR3)
Is this assumption correct?

2. Can this plugin apply impulse responses of any length or only 512 samples?

3. What kind of processing is used? - Brute force multiplying and adding or are the IRs transferred to frequency domain?
 
Dec 8, 2003 at 9:03 PM Post #10 of 20
You actually need 4 different impulse responses, none are equal since it is angle dependent and your head isn't always symmetric. I think some HRTF models might assume that if you flip everything about the vertical axis, you just swap channels, but measurements are always more accurate.

This will work with any size convolution kernel. I used to have a thread scheduler so that very long (10s long) impulse responses wouldn't stutter, but this is not in the current version for simplicity's sake.

Everything is done in the frequency domain.

Let me know if you have any more questions or comments!
 
Dec 8, 2003 at 9:24 PM Post #11 of 20
I have more comments
smily_headphones1.gif


It's just great, I love it - Thanks alot!

Details:

- Using the right IRs it gives by far the best results I've heard so far.

- So far I only knew of MIT KEMAR HRTF impulse responses. The mesurements done with several different test persons are much better. Everyone can choose a set of IR files individually.

- As your plugin uses 4 different IRs of practically unlimited length, everyone can additionally create and use a totally customized set of IRs, e.g. aditionally containing some equalization to adjust to headphones' frequency response or simulating a room with reflection of walls.

I'll attatch a zip file containing a "files" file for your plugin to this post for everyone interested. I think it's easier editing it using notepad (search-replace function) than creating a new one using dir/-w >files + manual editing.

Next step would be a 5.1 -> binaural DSP, but for me this is uninteresting. Watching movies alone and/or with headphones isn't that much fun.

If you don't mind I'd like to post about your plugin on Hydrogenaudio. Or do you even want to announce it in foobar2000 forum as 3rd party plugin?
 
Dec 8, 2003 at 9:32 PM Post #12 of 20
Hi tigre,

Glad you like it! The 5.1 idea is really good too. I have seen the MIT data, but I agree that it's better to choose a set of HRIRs best suited to your own head.

I don't think it's ready for general release, but you can for sure talk about it on HA. Also, thanks for posting the files zip, another great idea. If you do post on HA about this, can you pm me a link, or if it's of general interest post it here?

EDIT: forgot to say that adding 5.1 support involves changing very few lines of code. If I can get a 5.1 stream, I'd glady look into it.
 
Dec 9, 2003 at 10:33 AM Post #13 of 20
Several Things:

1. There are foobar2000 crashes caused by the plugin (reproducable, fb2k 0.7.5 here ("fresh" install), Win2kprofsp4):

1st one:
HRTF disabled -> exit fb2k -> Open a file for playback by doubleclicking in Windows Explorer -> Open DSP Manager while file is playing -> fb2k Crashs.

2nd one:
HRTF enabled -> exit fb2k -> Open a file for playback by doubleclicking in Windows Explorer -> fb2k Crashs on starup.

Both crashs don't happen without HRTF .dll

Tell me if you need some crash logs. Besides at fb2k forum you can get help at #foobar2000 IRC channel on irc.freenode.org .

2. Playback of sampling rates != 44.1kHz results in vinyl-at-wrong-speed sound. Workarround: using resampler to 44.1kHz before. If you're interested in fixing this, you can easily create files with other sampling rates using fb2k's diskwriter + SSRC DSP as you probably know.


I'll look into uploading a 5.1 sample. You'll get an email/PM when I'm finished.


I'm not planning to use this plugin for playing around like moving the speakers positions all the time etc., I rather want to create a customized set of impulse responses (e.g. with some simulated room echo added). So *for me* it would be enough to have the possibility to load 2 (stereo) impulse responses through a dialogue. No need for the sliders. Anyway, I can already get exactly what I want by manually editing / renaming the impulse respones, so nevermind.
Of course, instead of simplifying, you could add room simulation with some sliders for room size, frequency response of walls' reflections etc.
wink.gif



The thread on Hydrogenaudio is here.

BTW: I see no problam announcing it at fb2k 3rd party components. Ppl sometimes introduce their pre-alpha suff there, but it's your choice.
 
Dec 9, 2003 at 11:47 AM Post #14 of 20
I tracked down a lot of the crashing bugs and have put a newer version up on the website. Still allocates memory like crazy with FLAC files for some reason which leads to stuttering. I haven't tried 0.7.5, but the API _should_ be the same; what I'm saying is crashes are surely due to sloppy coding on my part. The convolution stuff was just lifted from a previous project of mine.

The reason for the 44.1kHz bug is that I hardcoded the sampling rate to be that
smily_headphones1.gif
Will be fixed in the future, this was clearly just a proof of concept thing.

Also, for general interest, the theta numbers in the sliders are negative relative to IRCAM's. Also, all input wavs must be 24 bit. I've hardcoded a quick and very dirty impulse loading function that requires this.

As far as 3rd party plugin goes, I'm a grad student so I don't really want to get a lot of people complaining to me about features etc... because updates will come on my own schedule for sure. I'll have to think about it.
 
Dec 9, 2003 at 2:27 PM Post #15 of 20
Still the same crashs here.

Additionally CD playback starts OK but starts stuttering after a few seconds; the whole system becomes slow. Seems to be similar to flac problems (same with old + new version).

I'm uploading some AC3 5.1 samples right now. Have a look at your PMs. (FB2k is capable of playing back AC3. I don't know where to get AC3 input plugin separately, but it's included in Case's special installer available here: http://www.saunalahti.fi/~cse/html/foobar.html)
 

Users who are viewing this thread

Back
Top