bs2b
style crossfeed using CamillaDSP
Crossfeed is the process of blending the left and right channels of a stereo audio recording.
The Bauer stereophonic-to-binaural DSP is a very useful software library to implement crossfeed. The same code is used in various software projects, such as ffmpeg and gstreamer. Other projects and products mimic the bs2b
style crossfeed, such as the famous RME ADI-2 Pro and DAC, which offer bs2b
style experience in 5 different levels.
While many users enjoy bs2b
or its variants in various software programs or hardware products, they don't have an integrated solution to use it for all software/hardware. The CamillaDSP project provides a seamless approach to do DSP system-wide on all major desktop operating systems, with various DSP features ready to be used, such as Loudness, Convolution, or Parametric EQ. There's no built in support for crossfeed but as this project will soon demonstrate, it can achieve identical results compared to bs2b
.
This project provides YAML configuration file for CamillaDSP to do crossfeed simulation, in strict bs2b
style.
Similar to the RME ADI-2 series mentioned above, the same 5 levels of crossfeed are included in the config file:
- 650 Hz, -13.5 dB (just a touch)
- 650 Hz, -9.5 dB (Jan Meier emulation)
- 700 Hz, -6 dB (Chu Moy emulation)
- 700 Hz, -4.5 dB (30° 3 meter emulation)
- 700 Hz, -3 dB (example how even stronger would sound)
Just move the filter, mixer, and pipeline sections in crossfeed.yml
to your own CamillaDSP config file, and start the CamillaDSP program. you can change the cx1
string in the pipeline section to for instance, to cx5
, to adjust levels.
The pipeline is very simple and mimics exactly bs2b
's filter settings:
We can easily validate the setting being identical to bs2b
by plotting the Frequency-Response graph. For instance, with Level 2 (Jan Meier), when playing sine sweep from the left channel and recording both channels, we can plot the frequency-response for the two filters as below:
The folder frequency_response_validation
includes the frequency response files generated by this project and RME ADI-2 Pro FS R.
DSP[LR] [1-5].txt
means the crossfeed frequency response for both filters on level 1-5, generated by this project,
while RME[LR] [1-5].txt
is the same result generated from RME ADI-2 Pro FS R.
One can run proc.py
to merge the files into a single output.txt
, import that to a spreadsheet software, and compare the result.
The above 5 levels already cover what the official bs2b
project offers as default set of levels:
- 700 Hz, 4.5 dB - default.
- 700 Hz, 6 dB - most popular.
- 650 Hz, 9.5 dB - making the smallest changes in the original signal only for relaxing listening by headphones.
The parameter values of the filters can be computed using a perl script.
The repository has parameter_computation.pl
which is slightly modified from bs2b
's bs2b-H-transform.pl
.
The script can compute all the filter parameters including the center frequency of the shelf filter.
Usage:
perl parameter_computation.pl 700 6 # Chu Moy emulation