Hello, I have started work on a new plugin for Rhythmbox. I have written it in Vala, and developed it on / tested it against a Fedora 12 Beta x86_64 system with Rhythmbox 0.12.5 and Vala 0.7.7.
The current project status is that it works on my system, and the primary features I wanted are implemented and functional. There is no tarball release; instead, use git: http://tiyukquellmalz.org/cgit/rbpitch <--- CGit web ui. git clone git://tiyukquellmalz.org/rbpitch <--- git command to check out the source. First, pictures are worth a thousand words. Here are some screenshots -- I couldn't get window borders to show up, but each screenshot is of a toplevel window. Addition to Rhythmbox Shell is visible in a red box (the box is not rendered in the GUI): http://tiyukquellmalz.org/rbpitch-icon.png Clicking the icon in the rb shell pops up this window. First, with the sliders in the default position: http://tiyukquellmalz.org/rbpitch-ui-1.png Second, with the sliders moved around a bit: http://tiyukquellmalz.org/rbpitch-ui-2.png Addition to Rhythmbox Plugin configuration page: http://tiyukquellmalz.org/rbpitch-configure.png ***I am soliciting community feedback on this plugin!*** I personally find it very useful, but eventually I'd like to have it become part of Rhythmbox proper, as an official plugin bundled with the stable release. This greatly simplifies the installation procedure, and increases the chance that distros will pick it up. If any of the Rhythmbox maintainers read this message, please carefully consider the next two paragraphs before deciding whether to pick this up as an official plugin. Now that I am happy with the functionality of the plugin, my new goal is to help it reach the largest audience possible. I have chosen the most favorable license possible by using the same one as the Rhythmbox core, and I offer my help and perpetual maintainership of this plugin. The RB maintainers can choose to help me reach the largest audience possible, or not -- either way, I am still happy using the plugin myself. I do believe it is of some general use, and there is precedent for other media players including this functionality by default. As a completely separate issue, I observe that there is currently no way to build an out-of-tree Rhythmbox plugin written in C or Vala. Has anyone thought about making a rhythmbox-devel package (which, for the rb sources, entails writing a pkgconfig file and shipping headers into /usr/include/rhythmbox) so that plugins can be developed out-of-tree? I know that API/ABI stability is not guaranteed, but this would greatly simplify integration for plugins for which it is decided that it will _not_ be bundled as an official plugin. In the case that the RB maintainers evaluate my plugin and decide they definitely do not want it in the official plugin set, I will have a need for an out-of-tree plugin SDK (but I'll still have to work with individual distros to get them to adopt my plugin and stick it in a separate package, grr). If no one else has plans to make one, I may choose to investigate doing it myself. The short term result would be the aforementioned files installed when you `make install'; the long term result would be a librhythmboxcore-dev or rhythmbox-devel package becoming available in distros' package managers. I might work on this external SDK even if my plugin is accepted as an official in-tree plugin (hint: save me some effort and I might do you a favor in return ;)) Now I'm copying and pasting the readme file into this message, which should answer any more questions you have: rbpitch v0.1 Readme/FAQ Document Last Modified: October 27, 2009 Sean McNamara <smc...@gmail.com> Q: Describe rbpitch in one sentence! A: rbpitch is a plugin for Rhythmbox that lets you change the pitch, tempo, and speed in real-time while playing a song. Q: What are the main features of rbpitch? A: *Change the pitch and tempo of your music independently of each other. *Change the "speed", which is pitch+tempo scaled together without aliasing. Q: Are there other programs like rbpitch? A: Yes, rbpitch closely resembles PaceMaker: http://surina.net/pacemaker/ J. River Media Jukebox 12 also contains similar functionality. I am currently not familiar with any Free Software programs like rbpitch. Q: What are the possible uses of rbpitch? A: Borrowed from http://surina.net/pacemaker by Olli Parviainen (no infringement intended): *Slower music tempo eases practicing music *Change the music key to match the singer's voice (karaoke, singing practice) *Dancers can change the music tempo suitable for dancing *Adjust music key instead of retuning instrument for each song *Listen 78 RPM vinyl singles with a usual 33/45 RPM disc player *Transcribe tunes *Write down dictations These are the uses of PaceMaker according to Olli Parviainen. However, since rbpitch is almost identical in functionality and feature, I claim the same uses apply to rbpitch. Q: What are rbpitch's dependencies? A: For compiling: *A Rhythmbox 0.12.5 or later source tree (links against librhythmboxcore) *Gtk 2.16 or later *Gstreamer core 0.10 or later *Gstreamer-plugins-bad 0.10.4 or later with the optional `pitch' plugin enabled *As a clarification of the above: $(libdir)/gstreamer-0.10/libgstsoundtouch.so must exist. Q: How do I compile rbpitch? A: Almost like you do any other rhythmbox plugin written in C: in-tree. See http://live.gnome.org/RhythmboxPlugins/WritingGuide However, this is not an officially bundled plugin. For that reason, I have some temporary measures available to assist the compilation and installation process. I have included a helper script, local-install, that does the following things: 1. Builds the plugin. 2. Copies the required dist files to the system plugins folder, using the root account. TODO: Change this to sudo on Debian systems. Please edit the script and change the OUTDIR variable to correspond to your libdir. For instance, you may want to change /usr/lib64 to /usr/lib. Please also make sure that your rbpitch distribution is in the plugins/ directory of the Rhythmbox source tree. For example, if rhythmbox is unpacked to "/tmp/rhythmbox-0.12.5", rbpitch is in "/tmp/rhythmbox-0.12.5/plugins/rbpitch". Once you've done that, run this sequence of commands from the base directory of a Rhythmbox 0.12.5 or later source tree: ./autogen.sh ./configure --prefix=/usr --enable-vala --enable-uninstalled-build make -j2 cd plugins/rbpitch ./local-install Q: What is the future / TODO for rbpitch? A: In no particular order (some of these are external changes that would benefit rbpitch immensely, so I may do them myself): *Do what's necessary to get it integrated as an official Rhythmbox plugin. *Refactor to use the (not-yet-existing) rhythmbox-devel out-of-tree plugin devel headers. *Improve the vala-rhythmbox bindings a lot more. *Create a pkg-config file for rhythmbox. *Include patches to configure.ac and plugins/Makefile.am so the plugin will build using ./configure directly. *Continue to maintain the program when Rhythmbox, Gtk or Gstreamer APIs change. *Solicit user feedback to fix bugs and implement missing features. Q: What is rbpitch's license? A: All files in the rbpitch distribution are under the GNU GPL v2 or later, with the Rhythmbox Exception. For details on what that means, open up a source file, or read the file named COPYING that should be included in the documentation. _______________________________________________ rhythmbox-devel mailing list rhythmbox-devel@gnome.org http://mail.gnome.org/mailman/listinfo/rhythmbox-devel