Alsa graphic equalizer

It’s been a year since I last asked this question, so…

Does anyone know of an alsa based software multi-band (10 or more) graphic audio frequency equalizer that works with Suse 11.x? To be clear, I don’t mean an equalizer within an audio or video player. One that can be used with any sound application, that works between the output of the player and the output plugs on a motherboard or sound card.

AFAIK that could be achieved using JACK. JACK | connecting a world of audio

I tried to use JACK last year, failed miserably, and found others on Google who were having the same failures. But I see that there is a new version out, and if nobody else comes up with an alternative I will try it again. I am perplexed by the fact that we (Suse/KDE) don’t have a built in solution for such commonly used hardware (in audio equipment). Especially since sound quality varies so widely in commercial video. In particular older English movies which I believe used different equalization than Hollywood.

Thanks for the reference.

Is this thread relevant ?
Cant find Pulse Audio equalizer ? - openSUSE Forums

I found the CAPS audio plugin suite: The CAPS Audio Plugin Suite

It has a 10 band EQ, which is available as a LADSPA plugin. The EQ is available in mono and stereo versions.

Some playback software will host LADSPA plugins directly. Otherwise, you could use JACK, and set up JACK rack to host the plugin.

Otherwise, Jamin (requires JACK) will give you both a 30 band EQ and a free-form hand drawn EQ, for ultimate EQ goodness!

Maybe this will help?

Paul

Feel free to delete it.

Many thanks.

There is no reason to delete that thread >:(

Check this out:

the digital machine

This will take the ladspa equalizer plugin and let you control it in real-time using either “alsamixer” or “alsamixergui”. You just need to add the appropriate entries to your .asoundrc file.

Is it a graphical equalizer? I mean is it a band-equalizer like “10 band equalizer” or “15 band equalizer” and so on, or do i have to config it by hand to adjust the sound?

Yes, it is a graphic equalizer. Follow the instructions given in the site that I referred to showing how to set up .asoundrc. Then run either “alsamixer -Dequal” or “alsamixergui -Dequal” and there it is—a graphic equalizer.

I did try to install that, first i ran “make” command and the terminal gave me this:

 # make
GCC pcm_equal.c
pcm_equal.c:21:28: error: alsa/asoundlib.h: File or catalog doesnt exist 
pcm_equal.c:22:22: error: alsa/pcm.h: File or catalog doesnt exist 
pcm_equal.c:23:31: error: alsa/pcm_external.h: File or catalog doesnt exist 
pcm_equal.c:24:26: error: alsa/control.h: File or catalog doesnt exist 
pcm_equal.c:31: error: expected specifier-qualifier-list before ‘snd_pcm_extplug_t’
pcm_equal.c:58: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘equal_transfer’
pcm_equal.c:94: error: expected ‘)’ before ‘*’ token
pcm_equal.c:112: error: expected ‘)’ before ‘*’ token
pcm_equal.c:141: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘equal_callback’
pcm_equal.c:148: warning: return type defaults to ‘int’
pcm_equal.c: In function ‘SND_PCM_PLUGIN_DEFINE_FUNC’:
pcm_equal.c:149: error: ‘snd_config_iterator_t’ undeclared (first use in this function)
pcm_equal.c:149: error: (Each undeclared identifier is reported only once
pcm_equal.c:149: error: for each function it appears in.)
pcm_equal.c:149: error: expected ‘;’ before ‘i’
pcm_equal.c:150: error: ‘equal’ redeclared as different kind of symbol
pcm_equal.c:147: note: previous definition of ‘equal’ was here
pcm_equal.c:151: error: ‘snd_config_t’ undeclared (first use in this function)
pcm_equal.c:151: error: ‘sconf’ undeclared (first use in this function)
pcm_equal.c:159: warning: implicit declaration of function ‘snd_config_for_each’
pcm_equal.c:159: error: ‘i’ undeclared (first use in this function)
pcm_equal.c:159: error: ‘next’ undeclared (first use in this function)
pcm_equal.c:159: error: ‘conf’ undeclared (first use in this function)
pcm_equal.c:159: error: expected ‘;’ before ‘{’ token
pcm_equal.c:203: error: ‘ENOMEM’ undeclared (first use in this function)
pcm_equal.c:205: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:205: error: ‘SND_PCM_EXTPLUG_VERSION’ undeclared (first use in this function)
pcm_equal.c:206: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:207: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:207: error: ‘equal_callback’ undeclared (first use in this function)
pcm_equal.c:208: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:211: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:212: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:216: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:216: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:217: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:222: warning: implicit declaration of function ‘snd_pcm_extplug_create’
pcm_equal.c:222: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:222: error: ‘name’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘root’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘stream’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘mode’ undeclared (first use in this function)
pcm_equal.c:228: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:228: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:229: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:234: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:234: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:236: warning: implicit declaration of function ‘SNDERR’
pcm_equal.c:239: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:239: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:246: warning: implicit declaration of function ‘snd_pcm_extplug_set_param_minmax’
pcm_equal.c:246: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:247: error: ‘SND_PCM_EXTPLUG_HW_CHANNELS’ undeclared (first use in this function)
pcm_equal.c:248: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:249: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:250: warning: implicit declaration of function ‘snd_pcm_extplug_set_slave_param’
pcm_equal.c:250: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:252: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:253: warning: implicit declaration of function ‘snd_pcm_extplug_set_param’
pcm_equal.c:253: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:254: error: ‘SND_PCM_EXTPLUG_HW_FORMAT’ undeclared (first use in this function)
pcm_equal.c:254: error: ‘SND_PCM_FORMAT_FLOAT’ undeclared (first use in this function)
pcm_equal.c:255: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:258: error: ‘pcmp’ undeclared (first use in this function)
pcm_equal.c:258: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c: At top level:
pcm_equal.c:264: warning: data definition has no type or storage class
pcm_equal.c:264: warning: type defaults to ‘int’ in declaration of ‘SND_PCM_PLUGIN_SYMBOL’
pcm_equal.c:264: warning: parameter names (without types) in function declaration
make: *** [pcm_equal.o] Rong 1

Then i ran the “make install” command and the terminal gave me:

# make install 
GCC pcm_equal.c
pcm_equal.c:21:28: error: alsa/asoundlib.h: File or catalog doesnt exist 
pcm_equal.c:22:22: error: alsa/pcm.h: File or catalog doesnt exist 
pcm_equal.c:23:31: error: alsa/pcm_external.h: File or catalog doesnt exist 
pcm_equal.c:24:26: error: alsa/control.h: File or catalog doesnt exist 
pcm_equal.c:31: error: expected specifier-qualifier-list before ‘snd_pcm_extplug_t’
pcm_equal.c:58: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘equal_transfer’
pcm_equal.c:94: error: expected ‘)’ before ‘*’ token
pcm_equal.c:112: error: expected ‘)’ before ‘*’ token
pcm_equal.c:141: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘equal_callback’
pcm_equal.c:148: warning: return type defaults to ‘int’
pcm_equal.c: In function ‘SND_PCM_PLUGIN_DEFINE_FUNC’:
pcm_equal.c:149: error: ‘snd_config_iterator_t’ undeclared (first use in this function)
pcm_equal.c:149: error: (Each undeclared identifier is reported only once
pcm_equal.c:149: error: for each function it appears in.)
pcm_equal.c:149: error: expected ‘;’ before ‘i’
pcm_equal.c:150: error: ‘equal’ redeclared as different kind of symbol
pcm_equal.c:147: note: previous definition of ‘equal’ was here
pcm_equal.c:151: error: ‘snd_config_t’ undeclared (first use in this function)
pcm_equal.c:151: error: ‘sconf’ undeclared (first use in this function)
pcm_equal.c:159: warning: implicit declaration of function ‘snd_config_for_each’
pcm_equal.c:159: error: ‘i’ undeclared (first use in this function)
pcm_equal.c:159: error: ‘next’ undeclared (first use in this function)
pcm_equal.c:159: error: ‘conf’ undeclared (first use in this function)
pcm_equal.c:159: error: expected ‘;’ before ‘{’ token
pcm_equal.c:203: error: ‘ENOMEM’ undeclared (first use in this function)
pcm_equal.c:205: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:205: error: ‘SND_PCM_EXTPLUG_VERSION’ undeclared (first use in this function)
pcm_equal.c:206: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:207: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:207: error: ‘equal_callback’ undeclared (first use in this function)
pcm_equal.c:208: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:211: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:212: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:216: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:216: error: ‘snd_pcm_equal_t’ has no member named ‘library’
pcm_equal.c:217: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:222: warning: implicit declaration of function ‘snd_pcm_extplug_create’
pcm_equal.c:222: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:222: error: ‘name’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘root’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘stream’ undeclared (first use in this function)
pcm_equal.c:222: error: ‘mode’ undeclared (first use in this function)
pcm_equal.c:228: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:228: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:229: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:234: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:234: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:236: warning: implicit declaration of function ‘SNDERR’
pcm_equal.c:239: error: ‘snd_pcm_equal_t’ has no member named ‘klass’
pcm_equal.c:239: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:246: warning: implicit declaration of function ‘snd_pcm_extplug_set_param_minmax’
pcm_equal.c:246: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:247: error: ‘SND_PCM_EXTPLUG_HW_CHANNELS’ undeclared (first use in this function)
pcm_equal.c:248: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:249: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:250: warning: implicit declaration of function ‘snd_pcm_extplug_set_slave_param’
pcm_equal.c:250: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:252: error: ‘snd_pcm_equal_t’ has no member named ‘control_data’
pcm_equal.c:253: warning: implicit declaration of function ‘snd_pcm_extplug_set_param’
pcm_equal.c:253: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:254: error: ‘SND_PCM_EXTPLUG_HW_FORMAT’ undeclared (first use in this function)
pcm_equal.c:254: error: ‘SND_PCM_FORMAT_FLOAT’ undeclared (first use in this function)
pcm_equal.c:255: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c:258: error: ‘pcmp’ undeclared (first use in this function)
pcm_equal.c:258: error: ‘snd_pcm_equal_t’ has no member named ‘ext’
pcm_equal.c: At top level:
pcm_equal.c:264: warning: data definition has no type or storage class
pcm_equal.c:264: warning: type defaults to ‘int’ in declaration of ‘SND_PCM_PLUGIN_SYMBOL’
pcm_equal.c:264: warning: parameter names (without types) in function declaration
make: *** [pcm_equal.o] Rong 1

And “caps” i installed through YaST. So why doesnt it work to install?

caps seems to be needed?: the digital machine

It looks like you don’t have the ALSA development package installed.

It will most likely be called alsa-devel

Paul

Well i installed everything that is needed to install the ALSA equalizer including the alsa-dev package, swh-plugins and caps. BUt when i try to install the ALSA equalizer the terminal gives:

# make install
Installing...

After that nothing happens?

And when i try to run the equalizer it tells:

# alsamixer -Dequal
ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL equal
cannot open mixer: File or catalog doesnt exist

# alsamixergui -Dequal
If 'alsamixergui' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf alsamixergui

What is the output when you type “make”?

Mine is the following:

GCC pcm_equal.c
GCC ladspa_utils.c
LD libasound_module_pcm_equal.so
GCC ctl_equal.c
LD libasound_module_ctl_equal.so

I don’t know why “make install” is freezing for you, and I’m not sure about this, but if you get the above output, I suspect that you can just copy (as root) the files “libasound_module_pcm_equal.so” and “libasound_module_ctl_equal.so” to your “/usr/lib64/alsa-lib/” folder (or “usr/lib/alsa-lib/” if your OS is 32-bit).

I think you might get help more easily by contacting the project developer. His email is provided on alsaequal website.

One possible hint: if you are using x86_64, then check where the ladspa plugins are being installed. Often, by default, they get installed to /usr/lib/ladspa whereas (at least on my x86_64 box, 11.2) they are expected in /usr/lib64/ladspa. I’ve resolved one issue like that by just copying the plugin files into /usr/lib64/ladspa. (There’s other ways to fix that, of course)

Paul

PS: I’ve just looked in the source tarball. The alsaequal plugin installs to /usr/lib. If necessary, you could change the makefile to install alsaequal to /usr/lib64
The above comments still hold.

Yes i had the same while running “make”, i tought i’d recognize that output.

Its when i try to install it freeze…

OK, then go to the folder with the source files for alsaequal, find the two files I mentioned above, and just copy them to the correct directory. You have to do that as root.

I presume you were root when you tried “make install”…

Also, “alsamixergui” is a separate package. It is not installed by default.

Yes i ran “make install” as su/root.
Shall i copy the files to /usr/lib64/ladspa? I run x64 bit KDE…

Copy the alsaequal plugin files to /usr/lib64

Make sure that the required ladspa plugins are copied to /usr/lib64/ladspa