GNOME Bugzilla – Bug 76522
Add equalizer support
Last modified: 2018-05-24 08:41:45 UTC
Add equalizer support to MonkeySound
This is Debian bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=229030
This should be easy enough to do with GStreamer, as there is an equaliser element.
Remove target milestone 0.4 is long past...
Well, I was about to add a similar bug to bugzilla. This would be a very nice feature.
Would probably be now done as a plugin. Changing component.
*** Bug 342453 has been marked as a duplicate of this bug. ***
Bug 342453 also mentioned the idea of mapping genres to particular equalizer settings.
Created attachment 71022 [details] Implementation of an equalizer widget Attached an implementation of a widget that could control an equalizer filter in the playback backend. It can load presets from a file, edit them and save them back. There is a support for localization. Feel free to try it out and send comments and patches.
Marking this as dependent on bug 345181.
Looks sensible enough to me. However: - how does one create a new preset? - I don't think the checkbox label should change; it should just be 'enabled' or something For this to be useful, there'd need to be a 'band-changed' signal on the RBEqualizer class, so the plugin (or whatever) using it could modify the gst equalizer element's settings when the user changes the EQ.
*** Bug 354635 has been marked as a duplicate of this bug. ***
Created attachment 72382 [details] Screencast of the equalizer widget Attached a screencast showing the equalizer widget in action. iTunes does something different to create a new preset. As soon as the user changes a band, the combo box switches to "user defined". Then when she hit "save" she's asked to enter a name. A list view of all presets allows to rename or delete them. I think what's important is to avoid confirmation dialogs (do you want to overwrite ? do you want to delete ? do you want to discard changes ?) that are quickly annoying in this context.
*** Bug 387375 has been marked as a duplicate of this bug. ***
*** Bug 398147 has been marked as a duplicate of this bug. ***
Created attachment 82638 [details] [review] patch for an equalizer plugin So here is a plugin for adding an equalizer widget to RB, which itself will control a GStreamer filter inserted into the pipeline. That means the plugin needs the patch found in Bug 345181, which works but is not yet complete. One limitation for the equalizer is that it's always active (even when turned off in the UI). The plugin is done to work with the 3 gst elements: equalizer (currently in gst-bad CVS), ladspa-tap-equalizer and laspa-Eq (formerly in gst-good, now in gst-bad). It detects which ones are present on the system and a particular one can be forced by editing the eq-config.ini file (the preferences dialog actually does nothing for this). At the moment, each filter is associated with a default configuration (in terms of number of bands and frequencies setting), but the plan is to make it configurable (the boilerplate code for that is there, I'm still thinking about the UI).
Created attachment 83536 [details] [review] various minor updates Fixes various build problems and some code style things, removes the marshaller list (just use rb-marshal.list). I also changed the plugin name from "Equalizer Plugin" to just "Equalizer" - that only appears in the plugin list, where it's already obvious that it's a plugin.
Created attachment 83636 [details] [review] more minor fixes - use gtk_window_set_transient_for rather than watching the main window's visibility - change the 'show equalizer' action into a toggle
Hmm, got it to build but it crashes rhythmbox when I attempt to enable the plugin. I'm using CVS of gstreamer and plugins. System: Linux 2.6.19-1.2911_1.fc6.cubbi_suspend2 #1 SMP Thu Feb 15 09:43:48 CET 2007 i686 X Vendor: The X.Org Foundation X Vendor Release: 70101000 Selinux: No Accessibility: Disabled Memory status: size: 244244480 vsize: 0 resident: 244244480 share: 0 rss: 49205248 rss_rlim: 0 CPU usage: start_time: 1172842618 rtime: 0 utime: 726 stime: 0 cutime:697 cstime: 0 timeout: 29 it_real_value: 0 frequency: 23 Backtrace was generated from '/home/alex/bin/rhythmbox' Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1209215264 (LWP 15511)] [New Thread -1320608880 (LWP 15564)] [New Thread -1362568304 (LWP 15561)] [New Thread -1352078448 (LWP 15530)] [New Thread -1341588592 (LWP 15529)] [New Thread -1331098736 (LWP 15528)] [New Thread -1275376752 (LWP 15527)] [New Thread -1299158128 (LWP 15526)] [New Thread -1310119024 (LWP 15523)] 0x00959402 in __kernel_vsyscall ()
+ Trace 115192
Thread 1 (Thread -1209215264 (LWP 15511))
----------- .xsession-errors (535211 sec old) --------------------- localuser:alex being added to access control list warning: /etc/X11/xinit/xinitrc.d/sonypid does not end in .sh extension, ignoring non-network local connections being added to access control list --------------------------------------------------
debug output: (06:42:53) [0x8638410] [rb_module_init] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/rb-module.c:132: RBModule 0x8a69b80 initialising (06:42:53) [0x8638410] [rb_module_load] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/rb-module.c:64: Loading /usr/local//lib/rhythmbox/plugins/equal izer/libequalizer.so (06:42:53) [0x8638410] [register_rb_plugin] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/equalizer/rb-equalizer-plugin.c:108: Registering plugin RBE qualizerPlugin (06:42:53) [0x8638410] [rb_module_new_object] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/rb-module.c:117: Creating object of type RBEqualizerPlugi n (06:42:53) [0x8638410] [rb_equalizer_plugin_init] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/equalizer/rb-equalizer-plugin.c:137: RBEqualizerPlugi n initialising (06:42:53) [0x8638410] [rb_plugin_find_file] /home/alex/src/remote-cvs/gnome.org/rhythmbox/plugins/rb-plugin.c:255: found '(null)' when searching for file 'e q-config.ini' for plugin 'equalizer'
OK works now, problem was, .ini files weren't being installed to <prefix>/lib/rhythmbox/plugins/equalizer
(In reply to comment #17) > Created an attachment (id=83636) [edit] > more minor fixes > > - use gtk_window_set_transient_for rather than watching the main window's > visibility > - change the 'show equalizer' action into a toggle > Thanks for the cleanups. By the way, why did you exported the GtkTreeStore columns enum to the rb-equalizer.h ? It's really only use in the widget implementation.
Created attachment 83768 [details] [review] Merging with current advancements - add updated rb-marshall.lst - some preference UI refinements - more on gstreamer filter configuration UI (still far from finished)
> By the way, why did you exported the GtkTreeStore columns enum to the > rb-equalizer.h ? It's really only use in the widget implementation. It was already like that in the first version of the patch I looked at.
(In reply to comment #23) > > By the way, why did you exported the GtkTreeStore columns enum to the > > rb-equalizer.h ? It's really only use in the widget implementation. > > It was already like that in the first version of the patch I looked at. > ok I'm stupid :). Moving it to the .c
Created attachment 83775 [details] [review] Merging with current advancements - take 2 Forgot a file, a line and that: - on/off check box is functionnal, but it makes RB hangs (on removal). It's related to Bug 345181 (or the way I use it)
before you rely too much on the equalizer as it is in -bad. the interface will change (see #415627).
Make this bug dependent on bug #415627.
(In reply to comment #26) > before you rely too much on the equalizer as it is in -bad. the interface will > change (see #415627). > yes, of course. In the meantime, the plugin can also use the ladspa equalizers (thought they may also be moving targets since they are in -bad too).
It would be nice if you could comment on bug #415627. The plan is to have a 3band and 10band versions which has normal gobject properties. Is that something the would fit rb (e.g. the 10 band one)? And before you think about adding preset support for the eq, have a look a bug #396779.
(In reply to comment #29) > It would be nice if you could comment on bug #415627. The plan is to have a > 3band and 10band versions which has normal gobject properties. Is that > something the would fit rb (e.g. the 10 band one)? With the current design of the plugin I don't think having those 2 elements will bring anything. Indeed, I would have to add 2 more specific callbacks (to link gst element to the UI) for something that I can have by simply parameterizing the general version of the filter. What would help (for the beauty of the client code), would be a way to retrieve the bands frequencies onccec the number of bands has been given. Right now I mimick what is done internally by the filter. > And before you think about adding preset support for the eq, have a look a bug > #396779. > The UI part of the plugin was started last summer and I then didn't know there was a plan for adding presets right in the gstreamer elements. So it's already there. I think centralizing preset is a good idea, it will remove some burden off my code. I'll look into bug #396779 to see if the proposal can fit this use case.
*** Bug 439650 has been marked as a duplicate of this bug. ***
Something moving about? There's no way to have a sound equalizer for the next release of gnome? Good work!
Unfortunately I have no time atm to bring the plugin to the quality required for shipping it with RB. There's not much left to do, mainly: - verify that it's up to date wrt current gstreamer. - handle deactivation. - store the configuration in gconf instead of an ini file.
I propose two options for equalizer: SRS WOW (echo like) and TruBass (just bass). http://bugzilla.gnome.org/show_bug.cgi?id=473193
Jakub, I don't think the SRS WOW effect is related to equalizer support. The TrueBass sounds like its just a presets that attenuates the bass a bit.
Created attachment 99005 [details] [review] updated version of the EQ I just tried out the patch and made some adjustments to get it working again with the current svn version of rhythmbox and GStreamer 0.10.14. I had to replace the old gst plugin 'equalizer' with the new 'equalizer-nbands' and fixed the corresponding 'equalizer_band_changed_cb' method. It is working like this, but the sound is not to great when playing around with the EQ. And the EQ 'on' check box crashes the whole RB... So I hope this motivates someone to continue working on this. At least now you can use this patch and get a 'working' EQ again... As it looks from the gstreamer bug mentioned on this page, the gst equalizer plugin will be move from 'bad' to 'good' in the next release package! So hopefully the API will stay stable now. Really looking forward to see this fully working soon ;-) Unfortunately I don't have the time to finish this right now... Good Luck
The equalizer API is meant to be stable now and hopefully the equalizer will be in gst-plugins-good 0.10.7 soonish.
Got several things not working as they used to. I'll try to investigate this week.
Ok, I looked at it. It seems that either Rhythmbox or Gstreamer has a problem, because even removing an "identity" element while playing hangs RB; E.g if I do that in the python console: [first start a song] >> import gst >> i = gst.element_factory_make ("identity") >> shell.props.shell_player.props.player.add_filter(i) >> shell.props.shell_player.props.player.remove_filter(i) RB hangs. From early investigation, it seems the call to incriminate is gst_element_set_state() (setting the filter-bin state to NULL, see function rb_player_gst_remove_filter() from rb-player-gst.c). It might indicate a gstreamer bug, but I don't really know or have much time to go further along. I'm using gstreamer 0.10.14. Also the RB playbin doesn't like adding any LADSPA filters while playing (I would add: anymore, but again it might be gstreamer's fault).
Christophe, in buzztard I have a tee element for dynamicanalyzers (like spectrum analyzer). To be able to insert a element while playing one has to follow the rules in http://webcvs.freedesktop.org/gstreamer/gstreamer/docs/design/part-block.txt?view=markup This is unfortunately. I made a first attempt to provide a dynamic linking API in Bug 435487, but it has not been reviewed/tested :(.
I have a crash when activateing plugin. Gentoo Linux, Gnome 2.20, Rhythmbox 0.11.3, Gstreamer 0.10.17, gst-plugins-good 0.10.7. Crash message (not very helpfull) (rhythmbox:9139): Rhythmbox-WARNING **: could not load equalizer config file Segmentation fault
(In reply to comment #41) > Crash message (not very helpfull) > (rhythmbox:9139): Rhythmbox-WARNING **: could not load equalizer config file > > Segmentation fault Could you run Rhythmbox to get some output, something like 'rhythmbox -d' (which will probably generate a LOT of extraneous output) or 'rhythmbox -D equalizer' or similar ("equalizer" should be the name of the plugin, but I'm not sure what that is). If you get a lot of output, maybe you could attach it as a text file to the bug?
It's a bogus error. The warning is causing the crash, because G_FATAL_WARNINGS is turned on. It should use g_printerr() instead of a g_warning for something that's not a programming error.
(23:19:55) [0x80c4028] [rb_module_load] rb-module.c:64: Loading /usr/lib/rhythmbox/plugins/equalizer/libequalizer.so (23:19:56) [0x80c4028] [register_rb_plugin] rb-equalizer-plugin.c:112: Registering plugin RBEqualizerPlugin (23:19:56) [0x80c4028] [rb_module_new_object] rb-module.c:117: Creating object of type RBEqualizerPlugin (23:19:56) [0x80c4028] [rb_equalizer_plugin_init] rb-equalizer-plugin.c:141: RBEqualizerPlugin initialising (23:19:56) [0x80c4028] [rb_plugin_find_file] rb-plugin.c:255: found '(null)' when searching for file 'eq-config.ini' for plugin 'equalizer' (rhythmbox:17812): GLib-CRITICAL **: g_key_file_load_from_file: assertion `file != NULL' failed (rhythmbox:17812): Rhythmbox-WARNING **: could not load equalizer config file (23:19:56) [0x80c4028] [make_equalizer_element] rb-equalizer-plugin.c:492: Trying to make filter element: (null) (23:19:56) [0x80c4028] [get_available_filters] rb-equalizer-plugin.c:476: Equalizer filter equalizer-nbands present (23:19:56) [0x80c4028] [get_available_filters] rb-equalizer-plugin.c:476: Equalizer filter ladspa-tap-equalizer not present (23:19:56) [0x80c4028] [get_available_filters] rb-equalizer-plugin.c:476: Equalizer filter ladspa-Eq not present Segmentation fault I just installer ladspa gstreamer support but nothing changed.
Same problem with Rhythmbox 0.11.4. Damn it...
The problem is in the equalizer plugin code. You're welcome to fix it.
I would if i could :) I am not a coder. Any help?
I have an update in the pipeline for the plugin, if you can wait a little hopefully it'll solve the problem (and others).
...would be great. Thanks.
Stefan (comment #35): but TrueBass is independent from equalizer, allowing to increase bass few times more even when EQ enabled.
Created attachment 111195 [details] [review] Now with less crashing Tweaked version. Instead of just crashing when the config file can't be loaded, defaults to the "equalizer-nbands" filter element. Also, disable the "Configure" button if the plugin can't be loaded. Is there any way to return an error value from a C plugin's loading function?
Created attachment 115461 [details] [review] Updated for SVN 5823 An argument to g_key_file_get_groups() needed to be a gsize instead of a guint.
Has anyone compared this equalizer patch with the one attached to bug 550820?
*** Bug 550820 has been marked as a duplicate of this bug. ***
What about this bug? Will be developed/inserted into rythmbox on 2.26 or 2.28?
It's being now a long time since the plugin for gstreamer was implemented. Does anybody keeps working on this for RB? What is needed to finish it? Can I help anyhow? Best regards, Manuel.
*** Bug 590935 has been marked as a duplicate of this bug. ***
+1 An equalizer would be a huge addition to Rythmbox and make it usable by many.
Any time-line as to when we get this equalizer support on RB?
Move to an other media player. Rhythmbox is dead.
(In reply to comment #59) > Any time-line as to when we get this equalizer support on RB? When there is an equalizer plugin that actually works and has a suitable UI, I'll consider it. I'm probably not going to work on it myself as it's very low on my list of priorities. (In reply to comment #60) > Move to an other media player. Rhythmbox is dead. If you're dissatisfied, the classy thing to do would be to quietly remove yourself from the cc list. Comments like this don't help anyone.
(In reply to comment #61) > (In reply to comment #60) > > Move to an other media player. Rhythmbox is dead. > > If you're dissatisfied, the classy thing to do would be to quietly remove > yourself from the cc list. Comments like this don't help anyone. And consider this a first warning before you're barred from the GNOME Bugzilla, you should know better than making this sort of comment here.
http://cornerofseven.com/blog/2010/02/rbeq-1-3-now-with-presets/ Looks like this guy has built it. If it is good enough can it be added to rb by default?
(In reply to comment #63) > http://cornerofseven.com/blog/2010/02/rbeq-1-3-now-with-presets/ > > Looks like this guy has built it. If it is good enough can it be added to rb by > default? This one is using a self cooked preset mechanism. I left this comment on the blog: "Any reason, you are not using the presets shipped with the gstreamer plugin? Look at /usr/share/gstreamer-0.10/presets/GstIirEqualizer10Bands.prs and the GstPreset interface. Users can install own presets to $HOME/.gstreamer-0.10/presets/"
*** Bug 646598 has been marked as a duplicate of this bug. ***
*** Bug 649744 has been marked as a duplicate of this bug. ***
For people who are interested to try out, I just finished improving+updating one of the plugins that has been lying around the web. Highlights: -Works with RB 2.98 -Updated to use dconf -Uses gstreamer presets -Added the ability to save/add/remove custom presets -Ability to auto select a preset based on playing song's genre. Feature can be disabled from the configuration window. Download here: http://mehmet.giritli.eu/en/programming/
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/rhythmbox/issues/1.