Crossfeeding your Pi – more fun from your headphones (Now part of 1.3)

When using headphones, the strict left/right channel separation often makes for a tiring listening experience. Adding a little crossfeed to the mix can create a much nicer listening experience. Those interested in a more techical background may want to check http://bs2b.sourceforge.net and http://www.meier-audio.homepage.t-online.de/crossfeed.htm.

Luckily it is quite easy to add a bit of crossfeed to ALSA so Roon Bridge on your Pi can output to it. No – it did not figure this out by myself (I’m as dense as I am tall, and I’m six foot six) – the inspiration and most (if not all) of the info down below was found here – I’m just passing on the wealth. Thanks guys!

What you’ll need:

  • A Raspberry Pi running Roon Bridge on Raspbian (or a different distro of choice)
  • An open ear and a little bit of time

This little guide assumes only one soundcard/DAC is present – if you have not already done so, you may want to comment out the onboard sound drivers in /boot/config.txt:

# dtparam=audio=on

First, install BS2B (Bauer stereophonic to binaural DSP) with LADSPA (Linux Audio Developer’s Simple Plugin API):

sudo apt-get install bs2b-ladspa

If /etc/asound.conf is present, make a copy:

cp /etc/asound.conf /etc/asound.orig

Edit or create a new asound.conf

sudo nano /etc/asound.conf

with the following content:

pcm.!default "crossfeed"
ctl.!default "crossfeed"

pcm.soundcard { type hw; card 0; device 0; }
pcm.plugSoundcard { type plug; slave.pcm "soundcard"; }

pcm.bs2b {
    type ladspa
    slave.pcm "plugSoundcard"
    path "/usr/lib/ladspa"
    playback_plugins [ {
        label bs2b
   input {
   controls [700 6]
}
} ]
}

pcm.crossfeed { type plug; slave.pcm "bs2b"; }
ctl.crossfeed { type hw; card 0; }

Reload the ALSA settings:

sudo alsactl restore

The parameters in “controls [x x]” can be changed.Here are some configurations of HZ and dB for crossfeed (source: http://bs2b.sourceforge.net):

Three versions with different sets of cut-off frequency and crossfeed level:

  1. 700 Hz, 4.5 dB - default.
    This setting is closest to the virtual speaker placement with azimuth 30 degrees and the removal of about 3 meters, while listening by headphones.

  2. 700 Hz, 6 dB - most popular.
    This setting is close to the parameters of a Chu Moy’s crossfeeder.

  3. 650 Hz, 9.5 dB - making the smallest changes in the original signal only for relaxing listening by headphones. This setting is close to the parameters of a crossfeeder implemented in Jan Meier’s CORDA amplifiers.

Note that after changing settings, you’ll need to reload ALSA settings again.

Now, press play and enjoy the crossfeed! The crossfeeding can be turned off again by removing or renaming asound.conf or restoring your original.

2 Likes

If I’m getting how this works, I think 1.3 solves/adds this option in the settings now

1 Like

Yes, exactly – I’ll close this one.