seek bar reflects audio time, untied to stretched time

Bug #830886 reported by Terry Hamel on 2011-08-22
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Sean McNamara

Bug Description

Changing tempo is not reflected in seek bar. E.g. 100% time = 4 minutes, 50% time = 4 minutes. Cannot seek (with mouse or kbd) past 100% time length when stretched to < 100%.

Terry Hamel (thpublic+nospam) wrote :

Ubuntu 10.10 32-bit, rhythmbox 0.13.1

Sean McNamara (smcnam) on 2011-12-17
Changed in rbpitch:
status: New → Triaged
importance: Undecided → Wishlist
assignee: nobody → Sean McNamara (smcnam)
Terry Hamel (thpublic+nospam) wrote :

Thanks for looking at this, Sean. Since this was assigned to a wishlist, I'd like to clarify what this bug does and what the plugin is expected to do.

The seek bar is supposed to choose the start, end, and everything in between. However, when rbpitch tempo is set < 100%, the seek bar doesn't reflect the increased song time. Try dropping the tempo 10%, then put the seek bar near the end. You'll find the song plays back somewhere near the middle instead of the end.

Sean McNamara (smcnam) wrote :

This bug has been known to me since the very early iterations of rbpitch in 2009. It's "wishlist" because I haven't been able to find out the exact cause of the bug. I have spoken to several core developers on gstreamer and Rhythmbox projects, and the consensus is that the bug is most probably within the 'pitch' element code within gstreamer-plugins-bad, which is basically "glue" code that integrates the libsoundtouch library into the gstreamer pipeline.

In other words, gstreamer is the overall media *architecture* that Rhythmbox uses; the pitch element is one component of that architecture that combines the low-level library for manipulating pitch/speed/tempo (libsoundtouch) with the gstreamer architecture, yielding a pluggable "element" that you can insert into a gstreamer pipeline for pitch shifting, etc.

Because of the high-level way that I interact with the pitch element in rbpitch, there's no way that this bug is directly related to the code I wrote in rbpitch. It's just not possible due to the architecture. The only places that the bug could be -- even in principle -- are: Rhythmbox, gst-plugins-bad, or libsoundtouch. And the core developers who have taken a look at this *think* that it's in gst-plugins-bad.

The reason I haven't gone off and fixed this myself is primarily due to lack of time. The internals of gstreamer are extremely complicated, and tracking down a bug like this is bound to take a lot of time. Also, while I understand GLib-based C code fairly well, as a general statement this type of code is extremely difficult to follow because of the way that GLib tries to emulate object-oriented programming in a language that isn't really object-oriented. This is one of the primary reasons why I wrote rbpitch in Vala, a language designed specifically to integrate GLib concepts into the very syntax of the language.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers