Out of some irc conversation, I gave implementing synced meters a go. Until so
far level and spectrum meters in buzztard were ahead of time. The reason is that
gstreamer tells me about the values once they are computed, but that's not when
the actual data segment gets played. Luckily the message has a timestamp. So all
it needs is to sync drawing with the audio sink. MikeS gave me some good
pointers on irc. It wasn't that straight forward. I found and fixed a bug in
level meter plugin so that it now puts useful timestamps on messages when it
play loops. It works really great now.
gtk_widget_grab_focus() is a nasty function. It asserts when the widget is not
mapped/realized and steals the focus in any case. This is problematic if you
have tabs and update widgets when things changed. I now have a wrapper added
that does the extra checks. Wonder if that would be a good change for upstream.
I did lot of testing with real buzz songs and machines. I have now about 80
original plugins in use. Real testing always leads to some good fixes :) We now
add an empty pattern by default when adding new source machines (like buzz did).
I also noticed that bpm/tpb information was not loaded from buzz songs. This is
now fixed (also master volume was missing). After that I spotted that most bpm
tempi did not work well. Now timing precision is much better.
A big recommendation to everyone. Pick a decent prefix for your project. I've
been a bit blue eyed and had chosen 'bt'. Part of my package is a core library
called libbtcore. Now unfortunately ktorrent did the same mistake and have a
libbtcore (bt stands for bittorrent there). As neither of them are really
general purpose they should be uniquely named. I analyzed all files I install
and went thought the great pains of renaming everything - libs, binaries, docs
includes, pkg-config files, desktop files and so on. Hope I never have to do
that ever again. I also filed a bug for ktorrent  so that they can fix it
before its causing problems. Interesting how they dealt with the report - "I was
first with libbtcore - RESOLVED AS WONTFIX". Interestingly I was 1.5 years
earlier, but that wasn't the point at all.
buzztard core developer team