Giter Club home page Giter Club logo

autoeq2camilladsp's Introduction

AutoEq2CamillaDSP

This is a simple CLI tool to easily create a configuration file for your Headphones or IEMs using Headphone-Correction-Data from Jaakko Pasanen's AutoEq to use with Henrik Enquist's CamillaDSP. CamillaDSP is e.g included in moOde audio player.
Using it stand alone on all major systems is well documented in Processing audio of the documentation.

Interactive Mode

If you start the tool with no arguments from the command line with autoeq2camilladsp you will enter interactive mode which will lead you through the process of creating your configuration.

Non-Interactive Mode

To use the tool in other contexts e.g. a music player like moOde, there are some commands which will enable you to do so.

If you start the tool with arguments, it will be run in non-interactive mode.
To get a list of all available commands and options run autoeq2camilladsp -h.

At the moment the command exits with just two very basic exit codes:

  • 0 for everything went fine
  • 1 as a catchall for all errors

Available Commands

init

This will get the full list of entries from the AutoEq repository and output it to the terminal as JSON. It also includes a list of all the available presets.

autoeq2camilladsp init

The resultin JSON output will have this structure:

{
"autoeqList": [
    {
      "name": "onkyo ie-fc300",
      "link": "/jaakkopasanen/AutoEq/blob/master/results/referenceaudioanalyzer/referenceaudioanalyzer_siec_harman_in-ear_2019v2/Onkyo%20IE-FC300.txt"
    },
    {
      "name": "tozo nc7",
      "link": "/jaakkopasanen/AutoEq/blob/master/results/rtings/rtings_harman_in-ear_2019v2/TOZO%20NC7.txt"
    },
],
"crossfeedPresets": [
    "None",
    "PowChuMoy",
    "Mpm",
    "Natural"
]
}

create

Create a config file based on the options selected in the provided JSON input like so:

autoeq2camilladsp create '{"headphone":"{"name":"some headphone", "link":"some link"}, "crossfeed":"Mpm"}'

Make sure to only use values which exist in the output created with the init command.

Devices Section

The CamillaDSP configuration starts with a devices section which will be specific to the equipment you are using. In order to include this section just put it in a .yml file and it can be read and added to your configuration.
Please refer to the CamillaDSP Readme for more information about this section. If you do not include your own devices file, the configuration will be built with a default which works as is in moOde.

Crossfeed

You can include Crossfeed in your configuration file.
The basic principle of this is to reduce the channel separation of the stereo signal by feeding a little amount of the lower frequency range from left to right and vice versa.

Basic Crossfeed

graph LR
A[Left IN]--> G[Attenuation / Filters]--> B[Left OUT]
A --> E[Attenuation / Filters] --> D
C[Right IN]-->H[Attenuation / Filters]-->D[Right OUT]
C --> F[Attenuation / Filters] -->B

General Information

Two my knowledge there are two main publications most implementation of crossfeed are based on:

The most widely used DSP implementation of crossfeed might be Boris Mikhaylov's Bauer stereophonic-to-binuaral DSP / bs2b or bs2b. Mikhaylov also provides a lot of interesting background, research and explanation on his design decissions for bs2b.

Two CamillaDSP related crossfeed projects worth looking into are Yue Wang's camilladsp-crossfeed and CamillaDSP-Monitor.

I can also highly recommend Mikhail Naganov's Electronic Projects blog which provides a lot of in depth information on various audio topics.

Pow Chu Moy Crossfeed

graph LR
A[Left IN]-- -2 dB --> G[Highshelf Filter 950 Hz +2 dB]--> B[Left OUT]
A -- -6 dB --> E[Lowpass Filter 700 Hz] --> D
C[Right IN]-- -2 db -->H[Highshelf Filter 950 Hz +2 dB]-->D[Right OUT]
C -- -6 dB --> F[Lowpass Filter 700 Hz] --> B

This preset is based on the analogue implementation by Pow Chu Moy who designed An Acoustic Simulator For Headphone Amplifiers which in turn is based on the implementation by Siegfried Linkwitz which was published as Improved Headphone Listening 1973 in Audio.

The DSP version of this draws from Boris Mikhaylov's Bauer stereophonic-to-binuaral DSP / bs2b implementation in the widely used bs2b.

MPM Crossfeed

graph LR
A[Left IN]-- -2.3 dB --> G[Highshelf Filter 200 Hz +2.3 dB]--> B[Left OUT]
A -- -9.9 dB --> E[Highshelf Filter 750 Hz -0.3 dB] --> I[Peaking EQ 180 Hz +0.5 dB Q 0.55] --> D 
C[Right IN]-- -2.3 db -->H[Highshelf Filter 200 Hz +2.3 dB]-->D[Right OUT]
C -- -9.9 dB --> F[Highshelf Filter 750 Hz -0.3 dB] --> J[Peaking EQ 180 Hz +0.5 dB Q 0.55] --> B

This preset is based on research and "reverse engineering" done by Mikhail Naganov and published on his blog Electronic Projects in Reconstructing SPL Phonitor Mini Crossfeed with DSP in 2017.
I reached out to Mikhail who was so kind to contribute this implementation and also provide a lot of insight to my hobbyist research on the crossfeed topic in general. Thanks!

Natural Crossfeed

graph LR
A[Left IN]-- -1.5 dB --> G[Highshelf Filter 900 Hz +1.5 dB]--> B[Left OUT]
A -- -9.5 dB --> E[Lowpass Filter 650 Hz] --> D
C[Right IN]-- -1.5 db -->H[Highshelf Filter 900 Hz +1.5 dB]-->D[Right OUT]
C -- -9.5 dB --> F[Lowpass Filter 650 Hz] --> B

This preset is roughly modeled after some publications by Jan Meier and is still work in progress.

autoeq2camilladsp's People

Contributors

ebert-hanke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

janix520 rex2501

autoeq2camilladsp's Issues

Generic issue notified by autoeq2camilladsp

I built autoeq2camilladsp with rustup 1.26.0 on a NUC6CAYH running ubuntu 23.04 with no problems.
Then I launched the executable file and selected the headphone. I received the following diagnostics:
"...Something went wrong unfortunately :(
The eq data could not be parsed. "

The same happens when selecting other headphones and other options (e.g. device section, crossfeed filter type, etc.).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.