rbpitch 2.0

02/10/10 | by Tiyuk Quellmalz | Categories: Uncategorized

See the commit message here for a detailed description of what changed. http://tiyukquellmalz.org/cgit/rbpitch/commit/?id=e181d35b2086720493aa504e6e5dfadda97e84f9

I forgot to add, though, that I finally got the "st" and "%" text to show up on the SpinButtons. Not a major thing, but it probably helps new users.

Have at it, and post comments or send me mail if it doesn't work for you.

rbpitch Updates

02/06/10 | by Tiyuk Quellmalz | Categories: Uncategorized

OK, here is a run-down of the past, present, and future developments of rbpitch:

Past:
1. I was maintaining only my plugin code itself, related automake macros and data, and my hand-coded Vala bindings for the pieces of the RB Shell and Plugin API that I needed. But alongside that I was also maintaining patches against various release versions of Rhythmbox. To compile rbpitch cleanly, it has to be integrated in the autoconf/automake build system. So my patches were basically a hack, allowing you to download a certain version of rhythmbox (usually a tarballed release) and apply my patches to build rhythmbox using the regular ./configure && make pattern.

2. I was displaying “absolute percentages” for pitch, tempo, and speed. Since the underlying Gstreamer plugin, libgstsoundtouch, has a setting range of 0.1 ~ 10.0 for all three controls, I simply multiplied each underlying value by 100 for display purposes, and divided by 100 when pushing UI updates to the backend.

Present:
1. I now maintain a complete Rhythmbox master tree, cloned from git://git.gnome.org/rhythmbox – but with rbpitch and all of its changes integrated into it. That way, when rbpitch is finally done and polished, I can just make a “pull request” to James Livingston or Jonathan Matthew to get the plugin integrated into Rhythmbox proper. This is easier for them, and guarantees that I keep up with the latest developments in Rhythmbox.

2. I now display “natural percentages” for tempo and speed. Natural percentages are centered on 0.0%; that is, setting the slider to 0.0% means that the Pitch/Tempo Shifting plugin is not currently applying any modification to your sound. This is more intuitive, I think, and it’s how other pitch/tempo shifting apps work. Pitch is a special case: most people want pitch displayed in semitones. Olli Parviainen kindly gave me a formula for translating absolute percentages to semitones, so I now display semitones in the UI. This has the side effect that the pitch scale is on a logarithmic (base 2) scale, while the other scales are on a linear scale. This means that the zero point (no modification of the sound) is at a different position on the slider for pitch than tempo/speed. This is something I’ll have to work on to perfect.

Future:
1. I want to get rbpitch integrated into Rhythmbox upstream eventually. For now, I am fine with developing it separately, because there is still a lot more work to do, and more testing needs to be done.

2. I need to have “st” displayed in the GtkSpinButton for the pitch control, and “%” displayed in the GtkSpinButton for the tempo/speed control. This should be a simple event hook-up but I’m trying to debug this now. Also, as I said in the “present” section, I need to set the default ranges so that the zero point for all three sliders is at the same position on the HScale (this looks more natural to the human eye and follows HIG guidelines better).

3. I’m going to add a “Configure…” popup dialog for rbpitch. Many other plugins in Rhythmbox use the rb plugin config interface; my plugin will do this as well. In the configuration dialog will be the ability to set the range (upper bound and lower bound) of each of the three controls. I have a decent UI developed for this already, but I need to hook up the internals (which seems like it’s going to be a lot of code). This will be one of the last things I do after I knock out item 2, but before I attempt item 1 again.

Anything I’m forgetting? I’ll follow up in a few weeks after I have found enough spare time to hammer out most of these challenges.

rbpitch Needs Testing!

11/12/09 | by Tiyuk Quellmalz | Categories: Uncategorized

Now that rbpitch has been in the wild for a few days, the code has begun to settle down. I found a few bugs since I first blogged about it, but those bugs are squashed.

Only one minor issue remains, and it is really a bug in the GStreamer 'pitch' plugin (libgstsoundtouch), a part of gst-plugins-bad. There is absolutely no way I can work around this bug within the rbpitch code, so when I have some time I will try to address the bug at the source of the problem, no pun intended. Hint: if you don't normally seek within songs (that is, change the current playback position), you won't notice this bug at all.

I have greatly simplified the instructions for building rbpitch on Ubuntu, and these instructions may also work on recent versions of Debian, but are untested there. I have tested these instructions on Ubuntu 9.10 and found them to work.

You can find my instructions post and call for testing on the Ubuntu Forums.

rbpitch Is Here!

10/28/09 | by Tiyuk Quellmalz | Categories: Uncategorized

rbpitch is a new plugin for Rhythmbox that provides pitch, tempo, and speed shifting during music playback. It is in an early beta stage; I am trying to solicit user feedback, determine whether people are interested in this, and generally build a case for including it as an official plugin in the vanilla Rhythmbox source tree. Failing that, I’d like to get it contributed to distros as a patch set.

So far I’ve started a few IRC discussions about it, a mailing list post on rhythmbox-devel, and a forum thread on ubuntuforums. I’m open to both technical and non-technical discussion about this plugin. This has been occupying quite a bit of my time.

I have begun wondering why I spend so much time on this at all. Does anyone really care? Will anyone actually use it? Will the Rhythmbox maintainers ever pick up this plugin? Will distros ever include it by default?

As these questions race through my mind, I begin to question whether I should bother to promote this project further. I guess I will give it a few weeks in the hopes that people will pick up on my various outreach attempts and reply. If I really get zilch in response after a month or so, I’ll probably give up my pursuit of fame and mass deployment and just use it locally for my own purposes. Either way, it is an interesting success story of the Vala programming language; it took me less than 400 lines of Vala to implement the plugin, and it is fairly robust. About 100 lines of that are just comments, and another 100 lines of whitespace. So the program itself is really quite simple, especially if you discard all the checks I perform, some of which may be logically impossible to trigger the failure mode of. Although the program is short, concise, elegant and well-documented, it’s not a masterpiece of engineering: it’s almost too simple to be considered a meritorious software contribution.

But the experiences I gain from working on rbpitch will serve me well in the future, as will the plugin itself. So I am ultimately satisfied with my efforts on this project, even if it goes no further than it already has by my own doing.

Obligatory screenshots:

PulseAudio 0.9.13 on DamnSmallLinux (Not)

12/05/08 | by Tiyuk Quellmalz | Categories: Uncategorized

Earlier today, I got an email in the pulseaudio-discuss mailing list from a nice-sounding guy looking for help compiling PulseAudio on a rather challenging platform. He has some specific requirements that are rather odd, but despite my trying to break through some of the problems making the requirements what they are, I conceded that his “box in a box in a box” solution may be the best available, for performance reasons. I decided at that point that I would help him.

Read more »

March 2010
Sun Mon Tue Wed Thu Fri Sat
 << <   > >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Search

XML Feeds

powered by b2evolution