Head-Fi.org › Forums › Equipment Forums › Headphones (full-size) › How to “create” a crossfeed (the steps).
New Posts  All Forums:Forum Nav:

How to “create” a crossfeed (the steps).

post #1 of 3
Thread Starter 

I didn’t like much the existing crossfeed solutions (software-based only).  I found they damage transients and when I listen with my hd800 it becomes obvious.  Curiously when I try to perform the crossfeed myself, using some high qual  eq , the result is more convincing. I will explain here how to “re-create” the crossfeed using a modular vst host.


Purpose of Crossfeed : Reducing fatigue. Most of the fatigue with headphones comes from the wide stereo separation, especially for the lows.  With crossfeed, the bass would just be “more centered”, instead of jumping unnaturally between left and right. You’d notice that for speakers, often the bass is handled by a single subwoofer (i.e. no stereo separation).

Here’s how my final crossfeed looks like:




So here are the steps to create your own crossfeed, inside foobar.

 You need:

1) A vst adapter to run the console inside foobar (I use   foo_vst, current version 2.4 )


2) A modular Vst host , that can act itself as a Vst (and that will be loaded inside foobar).
I use Art teknika  “Console Sound Modular Studio”. Unfortunately I didn’t see a good free alternative that is compatible with the vst adapter of foobar.  Vstforx is currently free, but unreliable.


3) A good Linear Phase Eq. It’s important that it is linear phase, because I perform a splitting into two frequency bands. I use Fabfilter Pro Q. You might find a good free alternative.


4) A bunch of free vst:
- Sonalksis FreeG ( Allows to change volume)
- Channel Matrix from rs-met.com ( Used to invert  phase of signal)
- A very basic delay . I use ”Hasound Sample Delay”:


5) Eventually the free vst analyser from Christian w-budde. Used to locate the comb effect, and minimize it.



Here’s a first rough explanation:

To perform my crossfeed I first reduce overall volume. A little headroom is useful to avoid any risk of digital clipping, with post processing. Let’s reduce by 3db, which is more than enough.


Then I split the signal into two different amount:
- the “big amount” (roughly 75 %, or you reduce by 2.4 db)
- the  “smaller amount” where the “crossing”  is actually performed (roughly 25% or you reduce by 12.20 db)
The “big amount” and the ”smaller amount” are off course blended back, on the final  output.


Note: Db to percent conversion : you can use http://www.redwirez.com/pcalc.jsp .


Now for the “smaller amount” (i.e. 25%), I split the signal into two frequency bands. In this case, below 670 Hz (the bass band), and above 670 Hz (the explanation for frequency splitting further).

Now again for the “smaller amount”, I apply a delay to the bass band (roughly 0.23 ms), and I invert left channel, and right channel. Then you recombine the “bass band” with the other remaining frequency band to get the total 25% of signal back.

Here you can see the delay of 0.23ms applied with “Hasound Sample Delay” (just type 10, for the number samples delayed, when running at 44100 Hz).



Here’s how I perform a frequency splitter with the the fab filter eq:



So the idea is that for below 370 hz I apply a regular low pass filter. And to get exactly the remaining frequencies in a separate band, I subtract the signal of the low pass to a signal where I applied a flat eq.   It’s important to apply a flat eq, because it will introduce a delay compensation compared to other frequency band.


To subtract signal I use this channel matrix:



Now for the low cut, I use the smoothest slope (6 db/octave). In fabfilter pro q , I use the “Linear Phase Max” processing mode. According to the help from fabfilter pro q, using the best processing mode, improves the filter for bass frequencies.  Now off course for the “flat eq”, I choose same processing mode, to reproduce same latency.




Ok, now that I gave most explanations, here’s below a global view of the dsp chain, with some legend in red so that it’s more explicit.  Click to zoom.
The area circled in red corresponds to the smaller amount of 25%, where the “crossfeed” is performed.  Notice that I reduce volume afterward, instead of before (same result). For the remaining 75% of signal (not circled), a flat eq is used first (labeled “anti  comb eq”, but at first just set it flat).

Ok with all the detail I provided, I think you can now mount this in the vst console:




Ok, if you managed to mount that dsp chain in the console, you can save the project.
You reload the console inside the free vst analyser from Christian w-budde, and re-use that project.


Here’s how without any comb effect correction, the freq response looks like:



Now you can play with the “fat eq” of the dsp chain, and try to cancel the first hump (the only one that affects significantly the neutrality). A hump of 1db is not that big, but I thought that with my hd800, it was worth it to correct it.


Here is the “anti comb “ eq I use ( combination of two high shelfs) :


After the comb effect correction:


That’s all Folks!

I hope some people would be enough curious to try.  Otherwise never mind, this page will remain as a personal note.

post #2 of 3

Thanks for this. Very Educational.

post #3 of 3

(I know this thread is 9 months old.)


This is he best crossfeed solution I have ever tried. 

For now I just copied the settings. If I (ever) wrap my head around the actual way this works i might tweak it a bit.


Thanks a lot.

New Posts  All Forums:Forum Nav:
  Return Home
  Back to Forum: Headphones (full-size)
Head-Fi.org › Forums › Equipment Forums › Headphones (full-size) › How to “create” a crossfeed (the steps).