Notice: A non well formed numeric value encountered in /sites/ on line 96 Notice: A non well formed numeric value encountered in /sites/ on line 96 Notice: A non well formed numeric value encountered in /sites/ on line 96 Deprecated: Function create_function() is deprecated in /sites/ on line 104 Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /sites/ on line 845 Deprecated: Function create_function() is deprecated in /sites/ on line 111 FS#11577 : Adjustable inter-ear delay for crossfeed



FS#11577 - Adjustable inter-ear delay for crossfeed

Attached to Project: Rockbox
Opened by Bertrik Sikken (bertrik) - Sunday, 29 August 2010, 13:30 GMT
Last edited by Bertrik Sikken (bertrik) - Friday, 05 November 2010, 09:24 GMT
Task Type Patches
Category Music playback
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version Release 3.6
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


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.
This task depends upon

Closed by  Bertrik Sikken (bertrik)
Friday, 05 November 2010, 09:24 GMT
Reason for closing:  Rejected
Additional comments about closing:  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.
Comment by Sanggon, Lee (isanggon) - Thursday, 02 September 2010, 09:20 GMT
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?
Comment by Bertrik Sikken (bertrik) - Thursday, 02 September 2010, 20:44 GMT
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.
Comment by Alex Miles (alexmiles11) - Friday, 03 September 2010, 03:11 GMT
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.
Comment by Sanggon, Lee (isanggon) - Friday, 03 September 2010, 03:29 GMT
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.
Comment by Bertrik Sikken (bertrik) - Saturday, 04 September 2010, 18:24 GMT
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.
Comment by Sanggon, Lee (isanggon) - Sunday, 05 September 2010, 14:49 GMT
Wow, thank you, bertrik. :)
Comment by Bertrik Sikken (bertrik) - Sunday, 05 September 2010, 20:25 GMT
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.
Comment by Alex Miles (alexmiles11) - Sunday, 05 September 2010, 21:41 GMT
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.
Comment by Sanggon, Lee (isanggon) - Monday, 06 September 2010, 14:43 GMT
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?
Comment by Bertrik Sikken (bertrik) - Sunday, 12 September 2010, 17:30 GMT
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)
Comment by Bertrik Sikken (bertrik) - Saturday, 25 September 2010, 13:07 GMT
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.
Comment by Bertrik Sikken (bertrik) - Wednesday, 06 October 2010, 19:11 GMT
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.
Comment by Bertrik Sikken (bertrik) - Friday, 05 November 2010, 09:21 GMT
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.