I'm using the bs2b crossfeed plugin with foobar2000 for quite a while now and I'd like to adapt my favourite settings to the rockbox crossfeed. The parameters of the latter are very different however. bs2b has the following parameters:
- Crossfeed db (1 - 15db)
- Crossfeed hz/ms (300hz/620ms - 2000hz/90ms)
Rockbox seems to have the same parameters as the crossfeed VST from blogohl (http://www.ohl.to/about-audio/audio-softwares/crossfeed-and-eq):
Ipsilateral : signal from one channel going to the corresponding (same) ear.
Contralateral : signal from one channel going to the opposite ear.
Hi Loss contra : high frequency are more attenuated by the head than lows, so attenuation value is between 0 and - 40 dB (default is - 10dB).
Now we've got three setting where bs2b has only one. I guess all three values are somehow correlated and adjusted alltogether in bs2b, but I'd really like to know in which way... It's evident from the bs2b concept page (http://bs2b.sourceforge.net/) that the HF of the contralateral channel is attenuated, but I can't figure out by which amout. And what about the ipsilateral gain?
F is frequency cutoff of the Hi shelf contralateral filter : value ajustable between 500 and 2000 Hz (default is 700 Hz)
Delay is the time delay between the ipsilateral signal and the contralateral one.
In bs2b frequency cutoff and delay are correlated, which makes sense to me as both are are dependent on the virtual speaker's azimuth. Contrary to the VST however, rockbox omits the delay setting. I guess it's a fixed value. So does it even make any sense to alter the cutoff frequency here?
I commited the rockbox (http://www.rockbox.org/) crossfeed : design, values but not the DSP programmation itself.
We had to be carefull not to use too much DSP power to keep compatibility with all players.
So we have only one delay, fixed to 0.43ms (if I remember correctly !)
It would be a bit better to have two different delays for low and high frequencies but then other problems occur near crossover frequencies.
The ipsilateral gain is ajustable to avoid level difference when switching with/without crossfeed : because when adding some contralateral signal, the perceived level increases (and also to avoid any risk of > 0dBFS)
In the meantime, I improved the algorithm with head-fit (http://www.ohl.to/about-audio/audio-softwares/head-fit) , maybe we will implement it sometimes on rockbox
In crossfeed+Eq an in head-fit, I give the possibility to ajust some values because no setup is ideal for everybody : head circumference, position of ears, etc...vary a lot.
jlohl, thanks for your explanation (and for commiting the rockbox crossfeed, it really made my day )
Could you comment on what the HF Loss parameter exactly does? Af fair as I have understood, HF needs to be attenuated not only to mimic the damping effect of the human head but also in order to prevent possible comb effects caused by the delay. I experimented with this setting on my Sansa and noticed that HF content actually seems to increase when the attenuation is highered... so -24db gives considerably more clear HF than -6db. Or, to put it more precisely, especially the center signals seem to sound deteriorated with HF Loss set to -6db, while uncorrelated signals are kept intact. The higher the setting, the more natural those signals appear to me, with no more noticeable difference above -18 or -20db. Is this observation coherent with theory or am I hearing placebos? Do you know which amout of HF attenuation the bs2b design uses?
The main difference of these crossfeeds is a different type of filters. IIR of bs2b and FIR of Rockbox, see http://en.wikipedia.org/wiki/Digital_filter (http://en.wikipedia.org/wiki/Digital_filter) .
So, there is no comb effect with bs2b naturally. That's the way I has started the bs2b project - I just was been annoyed by software crossfeeders 6 years ago. After a small research I have understood that problem is more in a "comb filter" effect than in FFT distortions.
At http://www.ohl.to/about-audio/audio-softwa...rossfeed-and-eq (http://www.ohl.to/about-audio/audio-softwares/crossfeed-and-eq) you can see a saw/comb at "7) Measure the results" - there is a comb effect.
About settings now:
You can see the sources and script at http://bs2b.sf.net/ (http://bs2b.sf.net/) to get the parameters of
* lowpass filter
* highboost filter
* cross-mixing level
Favorit presets are present at the graphs.
Ask to developers of Rockbox about parameters of these items in Rockbox.
I just can advise to set the "Hi Loss contra" to maximum in Rockbox. This will be near to lowpass of bs2b for magn response but not for phase response nevertheless it helps out a comb at highs. It is not possible to reach axactly effect, but close is possible.
If I get right, jlohl, you are developer of VST plugin that is predecessor of effect for Rockbox. Another words, only you can give a right answer to Northpack. And I agree with you, that there is a best way to avoid setups in mobiles.
There will be fine to implement a bs2b to Rockbox, but I think, there is a problem with floating point computation on mobiles. But a IIR single pole filter are need a floats.
Is there a theoretically correct value that we can adjust basing on the width of our head that we can change on bs2b? It seems that the ms value there works differently from plugins like headfit for example.