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.
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.
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?
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
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.
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.