Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Test: Headphone Plugins (Read 12865 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Test: Headphone Plugins

Hi there!

Certainly you know Crossfeed, a winamp/fb2k plugin that tries to move the sound from inside your head in front of you when listening with headphones.

Here I mentioned HeadPlug, a similar new plugin which is configurable.

I've tried a lot of settings and found the ones I liked best:
crossfeed-power: 0.400
crossfeed-delay: 0.23 ms
crossfeed-hights rate: 0.260
main-signal-compensation": 0.480
for this as well "decomb" function: 1.000

Additionaly I did a test with sine tones created with CoolEdit to find out what's the perceived volume difference (left ear vs right ear) on a stereo loudspeaker setup, the tones played back on 1 loudspeaker. Based on this and some assumptions about the reflection of the ear I tried to create something similar with CoolEdit.

Here are some samples for you. I'm interested what you think (mainly about the plugins, the CoolEdit thing is just for fun, nevermind). If you find settings that sound better, if you've tried the plugin with your own music and there's something mentionable, if something is audibly wrong, if ..., please tell it here.

Everything is compressed with MPC extreme:

1st Sample is from Lisandro Adrover - TANGO Esencia y después - SuSu, I chose it because it is slow and consists of only a few instruments (piano, cello, violin) - so it's easy to focus on them and to try to locate them

Original
Crossfeed
HeadPlug
CoolEdit
EarWax

2nd one is the well known Castanets test sample (IIRC from ff123's site). I chose it to find out if processing causes problems similar to pre-echo.

Original
Crossfeed
HeadPlug
CoolEdit
EarWax

Cheers tigre

My thanks go to Lego for helping me to find the best HeadPlug configuration for me.

Edit: Added EarWax samples.
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello

Test: Headphone Plugins

Reply #1
HeadPlug sounds very good with your settings (which are quite similar to those hard coded into Crossfeed). But with these samples, I have a hard time choosing which is better (let's not forget that I'm a slightly biased judge ) The effect with HeadPlug is slightly more noticable, probably due to a higher crossfeed threshold (it sounds to me that it's using about 2 kHz). My plugin's crossfeed threshold is about 700 Hz.

I will do some more testing with some music from my collection.

Test: Headphone Plugins

Reply #2
Thanks for your answer, Trelane. I did this test because for me (and my Sennheiser HD 540 headphones) Crossfeed and HeadPlug pulls the instruments away from the line connecting my ears directly, moving them upwards, on the top of my head or maybe 1/2 meter above my head, but not that clearly locatable. If I listen to artificial head recordings with the same headphones it seems like I could touch the sounds' sources with closed eyes, locations in front of me or near my feet are also possible. AFAIK the difference between sounds from sources above the head and in front of the head are the reflections of high frequencies of the pinnae. I don't know what method and settings your plugin or HeadPlug uses to consider this, but for my ears it seems to be not enough. (Other people I was talking with about this said they hear the sound sources in front of them with crossfeed or HeadPlug clearly.

The settings I used with HeadPlug are the only ones that were able to move at least some of the sound sources in fron of me (about eye-level).
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello

Test: Headphone Plugins

Reply #3
You can try adjusting the 8 kHz band on your equalizer (+/- 3 dB). Negative adjustments should pull the sound source down, while positive adjustments should move the sound source up.

Test: Headphone Plugins

Reply #4
hi everybody!

pleased to meet you :)
to introdue myself, my name is Paul Groke, hence the author of "HeadPlug".

@tigre/all:

Lego posted a link to this thread and the one in the "mpex" forum to my original thread in the "visaton" forum, or short, "he told me about it" :)

I've read the thread in mpex as well, and it seems there is a little confusion about the "history" and the implementation of my plugin.

Nothing terribly bad, but i'd like to clear this up...

1) HeadPlug is far from being fast.
If you want you could say it's based on a low-overhead framework (wich is just a very simple homebrewn c++ wrapper for the winamp-interface stuff), but whoever knows the winamp-dsp-plugin interface should know that every wrapper will be "low-overhead" unless you implement a COM+ wrapper with C# or similar :)
The "core" itself is far from being fast or optimised, the only things that keep it from being terribly slow are the processing power of modern CPUs and the nice optimiser in VC++ enterprise-edition :)
Furthermore the "core" is based on simple FIR filters, the length of which can be view in the config-dialog (depends slightly on the settings), so it's more like a "brute-force" attack.
The advantage for me is, it keeps my source easy to read, makes adjustments easy etc.

2) I've not had any contact to Trelane so far (hi Trelane!), i got some hints from "Vladimir Kopjov" - the author of a similar plugin which is called "Speakers Simulater" if i remember correctly.

(for those who wonder what i'm talking about, i'm refering to a thread posted here:
http://www.mpex.net/forum/viewtopic.php?t=7932 (beware - this one's in german))

you can ask me whatever you want to know about HeadPlug here, or you can email me - but i'd prefer to PM' my email-address...
i'm from austria, so, except here, we can talk in german.

i have decided to register here instead of "mpex" since i believe i might reach more people here and it gives me an opportunity to practice my english :)

so, next.

you mentioned something about "pre-echo", "pre-ringing" and phase-shift tests in the mpex-thread.
ehm! - what does "pre-echo" and "pre-ringing" mean?
however, if you ment this related to the "HeadPlug" - whatever tests you might be willing & able to do would be appreciated!
afaik. there should be no noticable phase-shifts when the "decomb" setting is high enough, with the exception that a "RC"-like filter is used to perform the lowpass for the crossfeed signal, and the same filter is used to do the "main-signal-compensation" (which attenuates those frequencies that are added by the crossfeed-signal to eliminate coloration).

so.
good for now.
i'll PM' you my email-address in case you want to contact me directly...

bye, have a nice day,
--hustbaer

EDIT:

HeadPlug does exactly nothig to simulate elevation (i.e. to move the sound in front of the listener), since there are far too many variables like the shape of one's head, outer ear, the response-spektrum of the used headphones and so forth.
it does also not include any room-simulation which again would be difficult to do right (a simple reverb is far from being sufficient).
but the main reason HeadPlug just ignores the "problem" is: i've tested many solutions that claim to bring the sound in front of one's eyes, and none of them worked for me :(
if anyone has a good idea or even better a working solution, i'd be willing to implement it as an option (even if it doesn't work for me)...

Test: Headphone Plugins

Reply #5
AH!  I had been looking for Headplug for days.  Thanks.

Test: Headphone Plugins

Reply #6
hi again!

tigre just PM'ed me some links to threads on "pre-ringing" and stuff.
HeadPlug uses simple "analog"-like filters.
the impulse-response is very similar to (if not equal to) analog RC-filters.
means the "peak" starts at the first tap and then rolls off like in the typical capacitor loading curve (current vs. time).
so there is (should be?) absolutely no pre-ringing or pre-echo.
i have tried so called "constand phase" filters before, but the "analog"-syle filter sounded somewhat better and more "neutral".
the second downside of the "constant-phase" filters i tried was the "filter-curve" (amplitude vs. frequenzc) because it was not linear.
i wanted a linear 6dB/okt filter, so the choice was clear.

for those interested, the code that generates the filter-coefficients looks like:

Code: [Select]
    double  accu = 1;
   double  step;
   int     length = 100;

   for( i = 0; i < length; i++ )
   {
       step  = accu;
       accu *= (1.0 - (1.0/4.0));
       step  = step-accu;

       fir[i] = step;
   }


i can't remember exactly what the -3dB point was (sample-rate is of course 44100Hz), but i think it was somewhere between 1 and 2khz.
of course the whole FIR lines consist of more then one lowpass-filter, but not very much more.

some other explanations:

all processing is done with double-precision floats (=64bit), and a very basic straight-forward 1bit dithering is applied before returning the samples.

there is a (hidden) overall-gain setting, you can change it in the .ini file or just leave it alone.
the default is 85% which should be fine.

the plugin works with 16bit, 2channel audio streams - frequency must be between 43 and 45 khz.
at the moment there is no way to see if the plugin is rejecting (bypassing) a stream because it don't match the requirements - EXCEPT if you open the config-dialog and change e.g. the crossfeed-delay and the FIR lengths don't change when you do so.
i should implement a "status-led" but i'm too lazy at the moment.

ah, yes, the "bypass" only bypasses the filters & stuff but NOT the overall-gain and the dither.
i made it this way to make on-off comparsions (listening tests) more realistic & fair.

so.
i'll be looking for some web-space the next few days, maybe if i find something appropriate i'll set up a
very basic download & info site.

bye for now,
--hustbaer

p.S.: has anyone tried to click the headphones-icon in the config-dialog yet?

Test: Headphone Plugins

Reply #7
Hello! Good to see you on Hydrogen Audio  Since you're posting some great information on the internals to your plugin, I thought I'd share some information about mine as well.

My plugin breaks each channel into two separate signals: crossfeed signal and direct signal. Each signal is shaped with a high shelving biquad IIR filter. All frequencies above 700 hz in the direct signal portion are given a gain of 2.9 dB (slope of 1) to compensate for frequency cancellations. All frequencies above 700 hz in the crossfeed signal portion are given a gain of -12 dB (slope of 1) to simulate shadowing caused by the head. The crossfeed signal is additionally delayed 270 microseconds.

The right direct signal (scaled by 73%) is then mixed with the left crossfeed signal (scaled by 27%) and vice versa.

All internal processing is done with 32 bit floating-point math. (The next point is Winamp only.) The output is dithered and noise shaped (simple 2nd-order noise shaping) before quantizing back to 16 bit. Processing requires 16 bit, 2 channel PCM. All sample rates are supported (I've personally tested 11 khz-48 khz).

Some of the stuff described above wasn't present in version 0.666, so I'm providing download links to latest "experimental" builds here. These should sound much better than any previous version.

Winamp plugin: http://www.naivesoftware.com/files/exp/dsp...p_crossfeed.dll
FB2K component: http://www.naivesoftware.com/files/exp/foo...p_crossfeed.dll

Hope all this makes sense!

Test: Headphone Plugins

Reply #8
I have a question about the concept of these plugins:

If a sound is located in one channel only the "add delayed, filtered copy to the other channel" method appears reasonable to me.

But what about a sound that is located in the centre of the stereo image, e.g. the singer's voice? The way I understand it, the filtered echo added by the plugins is still simulating what happens when you use loudspeakers for listening, but on the other hand: Couldn't it be considered as an advantage of headphones that on sounds that are identical on both channels there's no delayed, filtered echo caused by the second speaker - So a sound like this (e.g. a mono recording) will appear "sharper" on headphones than on speakers?
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello

Test: Headphone Plugins

Reply #9
hi tigre!

no, a centered sound (that starts at the same in both channels and is similar in volume and spectrum) should sound like played over speakers too.
think about it, when listening with stereo speakers, you always have the delayed crossfeed signal, and the imaging is perfect (at least for me).

you however cannot simulate a center-speaker well unless you have access to a 5.1 decoded source (or anything that has a seperate center-channel) - with such a source of course simulating center would be possible.

one could also try to generate a center-channel by one of many possible ways, but they all are kind-of time-consuming (cpu-hungry) and will (imho) never sound as "clean" as a simple crossfeed approach.
the easiest and fastest way maybe being hafler-matrix decoding which is generally not suitable for music.
maybe also prologic/ prologic II would work, but i don't know what exactly a prologic decoder does.

the difficult part is to guess what "parts" of the signal are "center" and what parts are not.

all this would help a little with the main-singers voice part in most recordings, but what should one do with all the "slightly left" and "slightly right" sounds that are mixed in?

i think the best approach (and the one least "irritating" when switching between speakers and headphones) is to simulate listening with stereo-speakers as natural and as exact as possible.
one important think is (imho) to not "confuse" the brain by listening to completely different "fake"-reproductions.
the brain happily accepts the "fake" of stereo-speakers after some time, and "get's used to it".
when you begin listening to a different "fake"-reproduction, the brain will begin to adapt to this new fake slowly, and in the process, the "quality" of all other learned "locating & percieving programs" will degrade slightly.

one possible enhancement that could help with the "in front of one's head" locating thing is integrating some well chosen equalizer filters.
not only a notch-filter to simulate the pinnae-reflection, but also something to simulate the "degeneration" caused by the sound travelling through air.
also room-simulation (filtered echoes) could help...

ok, back to the delayed crossfeed part one more time...
the best way i can imagine would be to locate the delayed crossfeed signal that is already in the stereo-recording, and just amplify it by some amount, and only generate an additional delayed crossfeed-signal if no match is found.
but then again, this is at least as difficult as the "guess the center-channel" i mentioned above.

bye,
--hustbaer

Test: Headphone Plugins

Reply #10
I believe Jan Meier (http://home.t-online.de/home/meier-audio/) has created crossfeed circuitry that is able to detect center/left/right panned sounds and accurately place them in the soundstage. I've not heard his work, but it might be worth checking out. In software, this would require too much CPU power in my opinion.

Test: Headphone Plugins

Reply #11
Quote
no, a centered sound (that starts at the same in both channels and is similar in volume and spectrum) should sound like played over speakers too.
think about it, when listening with stereo speakers, you always have the delayed crossfeed signal, and the imaging is perfect (at least for me).

Of course using crossfeed is the correct approach to simulate two (stereo) speakers.

What I meant was this: If someone sings life in front of you (without walls reflecting) you don't hear a delayed echo - the same with headphones on a stereo recording with the singer located in the centre. So in this case the absence of echo makes listening through headphones more natural than listening through speakers (exept the "equalization" caused by pinna reflection.

Applying crossfeed to a stereo signal like this seems to be comparable to both, the sound source (e.g. singer) and the listener, located in the centerline of a long room, the speakers in the listening setup are the points where the walls reflect the sound that it reaches the listener.

So the problems you're talking about you run into when trying to isolate signals located in the centre and treat them differently aren't worth the benefit(?), the absence of the "virtual walls".

Thanks for the detailed explanation BTW.
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello

Test: Headphone Plugins

Reply #12
@Trelane: hi!
i checked out the linke, but found nothing worth mentioning...
maybe it's not described there, or i just overlooked it.

@tigre: hi!

i'm not trying to say it wouldn't be worth the results.
what i'm trying to say is,
that it's not necessary in my opinion.

maybe it would be worth trying, but i think i don't know enough math to do so.
the task is quite difficult.

you'd have un-do the whole mixing process.
*narf!*

the possible ways i can imagine (but only as a abstract concept, i'm not sure if i'd be able to implement one) would take ages to compute.
like waiting some hours for one 3:05 audio-track to process...
then again, everything i can imagine includes heavy "pattern matchin" to look for "similar attacks" that appear on both clannels with a slight time-delay...
maybe there is a much simpler way - something discrete that works like an analog circuit.
this might still be hard enough to simulate with a dsp-program, but maybe faster & easier & cleaner...

if someone has any idea(s) how to do this he's very much welcome, just let me know!

bye,
--hustbaer

Test: Headphone Plugins

Reply #13
I added EarWax samples (see 1st post). EarWax (also mentioned in this thread) is a dsp effect of Soundexchange (SOX), a free commandline wave editor.
Let's suppose that rain washes out a picnic. Who is feeling negative? The rain? Or YOU? What's causing the negative feeling? The rain or your reaction? - Anthony De Mello