deadbeef icon indicating copy to clipboard operation
deadbeef copied to clipboard

More EQ bands/parametric EQ needed

Open dikonov opened this issue 7 years ago • 22 comments

My headphones have irregular frequency responce curve (I have measured it). This issue plagues all headphones except some super-expensive Hi-End ones. The sound quality can be improved greatly by using tailored eq presets.

Existing deabeef EQ is too simple to achieve good results. The number of frequency bands is inadequate for this task. For example it cannot fix a sharp hole at 12000Hz, beacuse there is no 12000 band control and both 10000 & 14000hz frequencies are OK and should not be changed.

Please, add more frequency bands (30+ band eq) or, better, implement parametric EQ presets from Audacity (http://www.audacityteam.org/).

Audacity has an advanced parametric EQ editor, which allows drawing a frequency responce curve by hand. The curve can be saved as an XML preset file. The code to edit, load and apply such curves is freely available from audacity.

See example-parametric.XML.txt

Deadbeef version: 7.02 OS: Linux

dikonov avatar Nov 06 '17 19:11 dikonov

It's not as simple as taking the code from Audacity.

There are many reasons why this is not possible -- licensing, a different UI toolkit which could not be used in deadbeef, a different programming language, different performance requirements, and many other things.

The feature request itself is fine, but with 240 other feature requests in front of you, I wouldn't count on this to become available anytime soon. It's probably easier to buy another pair of headphones etc.

Oleksiy-Yakovenko avatar Nov 06 '17 20:11 Oleksiy-Yakovenko

README at https://github.com/JoeyZheng/deadbeef/tree/master/plugins/supereq says taht SuperEq can be PARAMETRIC. Is it the same SuperEq already bundled? If yes, there must be a way to load parametric presets created outside of deadbeef. Audacity can be used as an external curve editor than.

dikonov avatar Nov 06 '17 21:11 dikonov

I've no idea why you're looking in some unofficial fork for deadbeef source code.. the same folder is right here: https://github.com/DeaDBeeF-Player/deadbeef/tree/master/plugins/supereq

It is indeed parametric. However, I think what you understand under this term is different from what DSP developers mean, including the developer of SuperEQ.

Oleksiy-Yakovenko avatar Nov 06 '17 21:11 Oleksiy-Yakovenko

I am looking for another/alternative EQ plugin for Deadbeef but not the player itself.

The term "parametric equalizer" (as "graphic" vs "parametric" mode in Audacity) means an EQ, where the curve can be modified at any frequency rather than only at fixed points and independently for different audio channels. Comparing .ddbeq preset files with the audacity XML preset tells the difference as I see it.

dikonov avatar Nov 06 '17 21:11 dikonov

Supereq is not alternative -- that's the one that ships with deadbeef. I'm not aware of any 3rd party equalizers developed specifically for deadbeef. You might have some luck with equalizers developed for musicians / DAWs, which plug into JACK, or LASPA, or whatever else is the current trend on Linux.

Oleksiy-Yakovenko avatar Nov 06 '17 21:11 Oleksiy-Yakovenko

I have no idea how to use a LADSPA plugin with Deadbeef. It has no LADSPA host in the DSP plugin chain. Perhaps, supereq can be modified to import "parametric" curves like: arbitrary freq point1 - offset arbitrary freq point2 - offset ... Even if the number of points is still limited by 18 the problem will be solved.

dikonov avatar Nov 06 '17 21:11 dikonov

ALSA itself is supposed to have LADSPA support.

And yes, it's quite likely that supereq code can be modified to support center frequency adjustment (not sure about bandwidth adjustment though).

It just needs another adjustment table alongside the bands in Equ.cpp.

99% of the work is to add this stuff to UI, change the eq file format, implement backwards compat, test it, and make it shippable. Which might not seem like a lot, but unfortunately it is.

And unless someone volunteers to do that work - I'm afraid that you don't have many options.

Oleksiy-Yakovenko avatar Nov 06 '17 21:11 Oleksiy-Yakovenko

To hell the EQ UI. An alternative patched supereq as a DSP plugin without UI, that would just load parametric presets might solve the problem.

LADSPA in ALSA is too complicated to use. I tried and failed to make it work before. Besides, there must be a GUI to turn equalization on and off quickly, when the headphones are unplugged. DSP presets in Deadbeef do it.

dikonov avatar Nov 06 '17 22:11 dikonov

Yep.. just hold on while I'm going through the rest of 240 feature requests :-)

Oleksiy-Yakovenko avatar Nov 06 '17 22:11 Oleksiy-Yakovenko

Yeah Alexey has done a supreme work maintaining the current supported plugins and code, and it's way too much for one man alone.

For those who know how to contribute code or have the potential to contribute something, forget about all the other players and focus on deadbeef alone, it's the only universal audio player worthy of your attention and effort..

wdlkmpx avatar Nov 07 '17 02:11 wdlkmpx

You can script that functionality with the use of JACK audio and an LADSPA or LV2 plugin. That bash script will do the following:

  • start JACK (e.g. via qjackctl)
  • start DeaDBeeF (JACK output plugin must be selected first, as DeaDBeeF does not automatically recognize audio servers)
  • disconnect deadbeef from system:playback (via jack_connect, as it automatically connects on startup)
  •      jack_disconnect 'deadbeef:deadbeef_1'  'system:playback_1'
    
  •      jack_disconnect 'deadbeef:deadbeef_2'  'system:playback_2' 
    
  • start your favorite plugin host (jalv for LV2 and jackrack for LADSPA plugins for example), with your favourite eq (like x42-plugins' Eq or Eq10q )
  • connect your DeaDBeeF outputs to the inputs plugin, e.g.
  •     jack_connect 'deadbeef:deadbeef_1'  'EQ10Q Stereo:input1
    
  •     jack_connect  'deadbeef:deadbeef_2'  'EQ10Q Stereo:input2'
    
  • connect the Plugin's output to your system output:
  •    jack_connect 'system:playback_1' 'EQ10Q Stereo:output1'
    
  •    jack_connect 'system:playback_2'  'EQ10Q Stereo:output2'
    

For knowing what specifically to type for the plugin (like EQ10Q Stereo:...) you load the plugin into the plugin host, and read the corresponding status change messages in the qjackctl messages window.

revast avatar Feb 12 '18 15:02 revast

@dikonov, you may use bmc0/dsp as a system-wide equalizer with pulse or alsa. System-Wide-DSP-Guide is a way to go. Не благодари :)

tgpro avatar Jul 15 '18 01:07 tgpro

I've configured the dsp equalizer and it is pretty good. https://github.com/bmc0/dsp/wiki/System-Wide-DSP-Guide/

nilejsph avatar Nov 30 '18 00:11 nilejsph

wow, good find, I am gonna try this!

revast avatar Nov 30 '18 10:11 revast

A parametric equalizer is really a necessary function for a player with an emphasis on sound.

nBalykin avatar Feb 06 '20 11:02 nBalykin

For PulseAudio there's great PulseEffects (available on FlatHub so it's very easy to install) which is the EQ suggested by AutoEq (the project that helps to neutralise frequency response of many headphones).

saaj avatar Jun 06 '20 16:06 saaj

For PulseAudio there's great PulseEffects

Yeah, but Pulseaudio itself is an evil malware that unexpectedly degrades hifi sound quality AND it is getting phased out in favor of :shrug: Pipewire.

Normally, I try to always have straight bit-perfect PCM transfer from file to external DAC. An EQ is great only with some headphones and should be turned off as soon as they are unplugged, rather than silently work every time you forget to edit obscure settings in a 3rd party piece of software.

I would suggest to just hide the EQ UI if a "parametric" eq preset is loaded leaving only the EQ "on"/"bypass" button and preset selector. It would be cool to display the curve, though.

dikonov avatar Feb 22 '22 22:02 dikonov

For PulseAudio there's great PulseEffects

Yeah, but Pulseaudio itself is an evil malware that unexpectedly degrades hifi sound quality AND it is getting phased out in favor of 🤷 Pipewire.

Normally, I try to always have straight bit-perfect PCM transfer from file to external DAC. An EQ is great only with some headphones and should be turned off as soon as they are unplugged, rather than silently work every time you forget to edit obscure settings in a 3rd party piece of software.

I would suggest to just hide the EQ UI if a "parametric" eq preset is loaded leaving only the EQ "on"/"bypass" button and preset selector. It would be cool to display the curve, though.

project now renamed to easyeffects and targeting pipewire.

revast avatar Jun 07 '22 17:06 revast

Since most headphone listeners, who're aware of EQ use AutoEq for settings, an elegant and simple solution is to create 18-band Custom Parametric EQ and use the values for Deadbeef's SuperEQ. That's 5-munute task using their instructions.

@Oleksiy-Yakovenko: Does SuperEQ can be configured for either 10 or 31 bands, that have same frequencies as in AutoEq? - That can be perfect solution, IMO.

vkx86 avatar Nov 26 '23 07:11 vkx86

@vkx86 I doubt it. Probably not.

Oleksiy-Yakovenko avatar Nov 26 '23 10:11 Oleksiy-Yakovenko

Thanks, @vkx86!
The AutoEq site is a nice tool but it isn't as world-famous as you say. Nevertheless it is the only solution that actually wors to some extent. The problem is that custom 18-band parametric EQ settings it can generate still leave great dents and peaks in the mid and high frequencies, e.g. around 2300 Hz. It can lessen the sound distortion introduced by earphones, but cannot fix it. 18-band is too little. A 180-band Eq would be a better approximation.

Easyeffects is completely useless because it relies on pulse/pipewire, which in turn is an unwelcome middleman. Besides pipewire does not work in my system. I get only silence through it, while both alsa and pulse work well.

dikonov avatar Dec 31 '23 14:12 dikonov

@dikonov , In Head-Fi, AutoEq nowadays is a starting point for folks, who want to fine-tune their cans. Totally agree - nothing can beat Parametric EQ, especially for headphones. I'd compared MathAudio Headphone EQ for Foobar2K with same 18-band Graphic EQ used both in F2K and Deadbeef - Parametric EQ wins. At end, after some tinkering, when I do work on Ubuntu - I'm either using:

  1. Audacious, that has LADSPA host within the app with ACDf LADSPA plugin for DSP chain and with some Python script to load configurations to configure it for my 2 cans.
  2. F2K in Wine with MathAudio Headphone EQ feed thru gmrender directly to DAC to bypass crappy Wine audio.

vkx86 avatar Dec 31 '23 15:12 vkx86