Wang-Yue / camilladsp-crossfeed

BS2B crossfeed using CamillaDSP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

camilladsp-crossfeed

bs2b style crossfeed using CamillaDSP

Introduction

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.

The configuration

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:

  1. 650 Hz, -13.5 dB (just a touch)
  2. 650 Hz, -9.5 dB (Jan Meier emulation)
  3. 700 Hz, -6 dB (Chu Moy emulation)
  4. 700 Hz, -4.5 dB (30° 3 meter emulation)
  5. 700 Hz, -3 dB (example how even stronger would sound)

How to use it

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:

DSP pipeline for crossfeed

Validation

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:

Frequency response graph of Jan Meier crossfeed

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.

Note

The above 5 levels already cover what the official bs2b project offers as default set of levels:

  1. 700 Hz, 4.5 dB - default.
  2. 700 Hz, 6 dB - most popular.
  3. 650 Hz, 9.5 dB - making the smallest changes in the original signal only for relaxing listening by headphones.

Filter parameters

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

About

BS2B crossfeed using CamillaDSP

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 67.0%Language:Perl 33.0%