| « rbpitch 2.0 | rbpitch Needs Testing! » |
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.