• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category Music playback
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version Release 3.6
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by bertrik - 2010-08-29
Last edited by bertrik - 2010-11-05

FS#11577 - Adjustable inter-ear delay for crossfeed

The crossfeed effect (under sound settings) emulates a set of speakers to make audio material with hard-panned instruments less fatiguing to listen to with headphones. It does this by bleeding a bit of each channel (L or R) into the other channel, with some frequency dependent attenuation and some delay. The delay is currently not configurable.

This patch allows you to change the delay (expressed in microseconds):
* 300 us is the current default, emulating a set of speakers about 60 degrees apart horizontally.
* 450 us emulates a set of speakers about 90 degrees apart
* 650 us emulates a set of speakers about 180 degrees apart
* above 650 us, the effect is no longer comparable to a realistic speaker setup

This is just a proof-of-concept to try out the effect, not ready for commit. It disables the assembly versions of the cross-feed effect and implements the effect in C (less efficient). Also the manual will need to be updated.

Please experiment with the delay a bit and leave a comment about what you think.
The cross-feed effect is mostly useful on audio with hard-panned instruments (some Beatles songs for example). It is mostly useless on mono material and songs with a lot of reverb effect.

Closed by  bertrik
2010-11-05 09:24
Reason for closing:  Rejected
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407

Looks too complicated to implement for the features it brings. Thanks anyway to all the people who tested. A new patch will be opened for the meier crossfeed.

It’s awesome! I like this feature. I think this patch works pretty well with my fuze v2. Thanks!

By the way, is it possible to add one more crossfeed mode on rockbox? Sometimes linkwiz or meier’s crossfeed sounds more better than rockbox’s crossfeed. Rockbox’s crossfeed doesn’t have flat frequency response, so it’s resolution is quiet low. Linkwiz or meier’s crossfeeds have not realistic sound than rockbox’s crossfeed, but it has much more resolution.

How do you think about adding another crossfeed mode?

The feature already existed, the patch just adds the ability to experiment with the delay. What delay value do you think is right?
I’m not sure what you mean by resolution.

As I understand, the Meier and Linkwitz crossfeed circuits are fundamentally different in that they are analog circuits without a significant inter-ear delay.

I hope this isn’t against any rules, but if you’d be willing to compile the patch onto firmware for the 60GB ipod video I would be willing to test it out. I personally have been very interested in adjusting rockbox’s crossfeed, I use IEM’s and the effect greatly increases the soundstage, but I lack the tech knowledge. I’ve been trying to figure out how through the tutorials for compiling code etc. but it is WAY over my head. Feel free to shoot me an email if your willing.

250us is great for me. Sometimes 450us gives more satisfy to me. More delay gives me wider stage with comport.

Because of frequency response of rockbox crossfeed(not flat, makes some masking), rockbox crossfeed gives less sound resolution than other crossfeed solutions. Meier and Linkwitz crossfeed circuits have nearly flat response and it gives almost same sound resolution as original sound. And meier circuit have 280 us inter-ear delay. I think these crossfeed circuit is more easier to program than current rockbox crossfeed. I think adding one more crossfeed mode(conventional crossfeed like meier and linkwitz, bs2b on foobar was great - ) makes rockbox more special. I tried to add this crossfeed mode, but failed because of my lack of programming ability.

The basic Meier circuit (2 capacitors, 3 resistors) doesn’t look that hard to simulate in software. I may have a look at implementing that as an experiment.

Wow, thank you, bertrik. :)

Attached is a proof-of-concept patch that emulates the basic Meier crossfeed circuit (2 capacitor, 3 resistor).
You can’t currently adjust anything about this crossfeed (except by recompiling), maybe later we can add the possibility to configure the direct/crossfeed ratio and the low-pass transition frequency.

K, so I tested out the crossfeed and was quite impressed. Like Lee, i usually stay at the 250ms delay, that or the 300ms. Anything above this creates a weird air-y sound; too much treble and ressessed bass. Its pretty cool how the music can feel behind you at 600ms+, but my objective is to get it in front of me. Also this code changed something with the stereo widening. When I used to use the stereo widening it felt as if I could move the far left and right channels around towards the back of my head, with this patch the effect is greatly lessened. I’m willing to sacrifice this though because it sounds as if there is more detail compared to the stock firmware crossfeed, so I’m very pleased. Thats all for now.

Hi, bertrik,

I tested meier.diff to my fuzev2. I think It works quiet well. Both channel wonderfully mixed with detailed sound.
I attached RMAA data. Stereo crosstalk(graph) shows this patch works well.

How about integrate bs2b to rockbox? Is it too complex to run on rockbox?

Yeah, the meier circuit is nice and subtle, affecting only stereo signals and not adding an “echo” for mono components in the audio signal.
It’s not quite clear to me how bs2b really works from the webpage. I think I can make the parameters of the meier crossfeed configureable though (crossfeed ratio at low frequency and the low-pass transition frequency)

A bit off-topic from the original patch, but this patch adds the meier crossfeed next to the currently present crossfeed, so you can easily compare them side by side.
In menu sound settings / crossfeed you can now choose between “off” / “meier” and “custom” (the original rockbox one). The meier crossfeed parameters cannot be modified in this patch.

Attached is a cleaned up version of the previous patch, no functional changes. The only thing still missing is an update to the user manual.

I’m closing this task.

Although the delay seems to have a significant impact on the audio, the currently used fixed value of 300 us seems to be a pretty decent default.
Making the delay configurable requires changing the interface to the ASM code and the ASM code itself too. I’m not familiar enough to do that.

I’ll open a new task to continue with the meier crossfeed, this is really a separate feature from the adjustable delay that this patch started with.


Available keyboard shortcuts


Task Details

Task Editing