Older blog entries for ensonic (starting at number 52)

buzztard 0.1 "genesis" released

Finally! We did release 0.1 "genesis". In June 2002 we registered the project and started thinking. For more than year nothing big happened. In February 2004 the first GStreamer example code landed in CVS. That was using GStreamer 0.8. Then the metamorphosis began: using GObject, adding unit tests, API docs, user docs and so on. In August 2005 came the switch to GStreamer 0.10. In summer 2006 our team grew from 2 to 4 developers. The whole project already contains 139000 lines of code. Downloads are available on the sf.net project page. Instructions for building are on the project wiki.

Even though the current code is maybe a bit rough and the applications are not that usable yet, we're confident that new releases will follow quickly and bring the missing pieces. If you want it happen faster, join the project. We have lots of tasks, some with a fleshed out concept, some merely ideas, some suitable for not so experienced developers, so quite tricky. Give us a visit on irc://irc.quakenet.org/buzztard.

distributed gstreamer pipelines

Zeenix posted his ideas a few days agao. Here are mine. The idea is to have a proxy element for remote elements so that you can treat the whole pipeline as a local one. The proxy element creates the real instance by talking to GOD (GStreamer Object Daemon, GObject Daemon, ...) on the respective machine.

At runtime when the proxy-element receives data it sends it to the remote element and after processing it gets it back and forwards it to the element. The challenge is to optimize links when multiple conected elements are on the same remote machine so that the data gets passed directly there.

proxy creation

In addition to

GstElement* gst_element_factory_make (const gchar *factoryname, const gchar *name);

we need:

GstElement* gst_element_factory_make_remote (const gchar *factoryname, const gchar *name, GstRemoteFactory *remote);

and some API to get a remote factory handle via hostname lookup, ip address lookup or even zeroconf (avahi).

So how does this sounds like. Anything in here that definitely wont work?

how to lock you out of sf.net CVS

In the past I was using the freedesktop.org syncmail script for my repositories on sf.net. The advantage over the sf.net one is, that it also sends a mail with links for viewcvs. Now since May when sf.net changed the cvs infrastructure the scripts stopped sending mail.

Recentry I stated to analyse the problem. Wayne Davison of sf.net pointed out that the email system changed and the fdo script was using sendmail directly. Okay, with my nearly non-existent python skills I rewrote the fdo one to send mails to the smtp on a given port. I tested the script on a local cvs repository and it worked. Still on the sf.net site it didn't. Its not easy to debug it if you can't see the output :(

This was when I had the smart, but lethal idea. I've added 2>commitinfo.log to the hookscript invokation in commitinfo (and the same for loginfo). Then I've added the logs to the checkoutlist file. The plan was that by checking out CVSROOT I get the logs. Unfortunately CVS tries to be smart and quotes the stderr redirect and passes this as the first arg to the hookscript. This then fails to parse it and aborts. CVS in turn interprets this as hookscript check failed and thus rejects the commit. Bang!

Fortunately the sf.net admins commented out the broken entries, so that now I can commit stuff again. Had anyone more succes with adapting the fdo syncmail script?


Finally I found some time to work one one thing that was getting on my nerves. For the unit tests we now have a BtTestSettings class. This allows us to simulate all sort of settings. The other benefit is that we don't need to make sure that we don't modify user settings during test runs. And we get not hit by my favourite GConf nastyness anymore [1].

Next I did a lot more bugfixing in the UI - or lets call it implementing previously unimplemented stuff. Added some more tooltips here and there, syncing data displays and so on.

Waffel spend some time so set up a buildmaster and a buildslave. This way our code gets rebuild every 6 hours. The 6 hours cycle has two reasons - our cvshook-script (from fdo) does not run on sf.net and the sf.net anon-cvs has a big delay. Anyway even the current setup revealed some bugs, where some of them are already fixed.

Tommi fights with cairo to build a real pattern editor widget for us. Hope we can post some screenshots from it soon.

[1] http://bugzilla.gnome.org/show_bug.cgi?id=316331


I really hope Advogato remains online. I checked some blog software packages, but none was convincing. I would need one that is multi-user capable and imports the rss-0.82 feed happily.


Lots of news this time. Also this time I welcome another team member on board - Tommi 'nbd' Sakari Uimonen. His first action was a code review of the core lib and a big patch that const'ified it more. By giving him a quick demo of the application we also uncovered a lot of bugs. Next nbd will work on a pattern editor widget.

Berzerka implemented song-length changing. The list will be dynamically expanded as one scrolls down. Also keyboard shortcuts are coming to set Length and move the loop area.

While we were working on the sequence display, we fixed the step filtering for different rhythms and also implemented many details for rhythm support (other than 4/4). Speaking of the GUI - lots of changes there. The machine view looks a bit nicer and has some zoom and layout fixes. Zoom fit was a bit harder than expected and seems to be still not always be correct. The context menu to add machines is now hierarchical. In the status bar we now show CPU usage. At least during development this is quite useful.

Lots of code has been added to handle error situations better. If you load songs with missing machines or samples, these components will be tracked. After loading we present a report of missing elements. Later we can add machine download or to specify a new location if the sample has been moved or renamed.

Many task were done to prepare a first release. We now have a nice about dialog. It also shows the latest release notes. This dialog will always be shown once after updating. The user guide is more complete. German language catalogues are complete. Finally a lot of cruft code has been removed.

I also worked a bit on the buzz machine emulation. It now also support stereo machines (need more work on the application side). The example buzz songs have been fixed. The now all play again. The gstreamer buzzmachine plugin generates better parameter names. It also maps some parameters to enums. Instead with a slider, they are presented as a dropdown then.


The last month were quite busy for me. But now I've settled down in Finland an can finally spend more time working on the project. So what happened since May?

At first lets welcome a new team member - Patric 'Berzerka' Schmitz. He joined a just a few days ago. Together we looked into several build problems - most fixed in CVS already. With his first commit he fixed some layout problems in the sequence view, made it look a bit nicer and prepared for new features.

I worked on several things during the last month. The goal is to get closer to what Buzz was offering. We now also have volume popups on wires. This wasn't very easy to implement. The current behaviors is, that the popups appear, one can adjust them and the disappear if one clicks elsewhere. This way we can also add level meters to the popup to easy live adjustments. Buzz uses a click-and-drag approach instead - the popup appear on mouse-down, one can adjust and the popup disappear once one lets the mouse-button go. Not sure which is better. If you care, drop by in irc://irc.quakenet.org/#buzztard and tell us. The other new feature is a wire-analysis dialog. Unlike in buzz it is not modal, so you can have several of them open. This is still work in progress. In didn't expect the GtkRuler class to be so limited. We might need to rip it out, move it to out namespace and add some features. Anyway, here is a new screenshot (click for bigger one):

I also moved from the file-selection to the file-chooser-dialog in the GUI, fixed lots of ref-count issues (hopefully) and did some gcc-4.1 fixing. The later was quite tricky - this 'dereferencing void pointers breaks strict alias rules' blabla is quite annoying, now we have to use anonymous unions in the code. Don't know it this warning really makes sense, especially if you can't easily fix the code.

Finally Tommi Sakari Uimonen and Waffel also help testing the build and files reports.

Whats next? We started a 0.1 release planning page. We will now try to stabilize what we have and then push out a 0.1 release. It won't do all that Buzz can do yet, but it should make it easier for people to try it. Stay tuned!

17 Jul 2006 (updated 18 Jul 2006 at 06:25 UTC) »
GSmartMix Google SoC project

Marc-Andre is making good progress and to give some proof head over to his blog and watch the screencast. The blog gives some report of whats done and whats next. We kindly ask everyone who is interested to leave comments. It would be good to get some feedback to ease making decissions about the next steps.

opensuse progress

Got most of the stuff in shape. I'll use Gentoo and Ubuntu on my other machines and it was amazing how much stuff I had to install from source on opensuse (bzr, hddtemp, sensors-applet, ...). One very annoying thing is: 192928. Hope it can be fixed.


I am also back hacking on my pet project. Still alone :( Got some GUI bugs fixed and working on analyzer windows. That means you can tap into wires and see levels and frequency charts.

one day later

Got some replies from JP and via bugzilla.

#1: Until now I've got the display driver via YOU. So this has changed. Anyway it works now.

#3: I am not sure about ssk-askpass. I've not put it into my gnome-session again, but its not taken effect anymore. It does come up, I enter the password, but the key isn't keps (ssh-add -L does not show it). Seems that the way those processes are spawned has changed.

#4: sorted out via #191189.

#5: magically disappeared.

Still some problems with sound, but I won't complain about that, as I have rather unusual audio-cards. Also some packages had troubled with installation from the net - will try again later. This beagle thingie is a bit disturbing. In 10.0 it was eating all my memory, so I disabled it. Now it spins my hard-disk since at least an hour ...

upgrading opensuse 10.0 to 10.1

Oh shit. Just upgraded one of my linux boxes on which I still have suse linux running for testing. I wonder if there will ever be a working update. Okay its well known that they somehow have "forgotten" to update the gnome-packages. So what else went wrong.

#1: If you have an nvidia/ati card you manually need to update the display driver, otherwise your X just crashes. Can't they atleast mention that in the release notes?

#2: Mozilla is just silently gone. Discovered that there is seamonkey, but it gets not installed as a replacement. wtf.

#3: Ssh-askpass was removed from my session.

#4: libtheora package is broken (all files were gone, devel package is missing).

#5: xgl is broken (was working in 10.0). xgl-settings just crash if you do not run under xgl.

I can't imagine they release without testing on live systems. But if they like to become a serious distro they realy should try harder.

moving into my own appartment in finland

Its now my first weekend in my own appartment here. Still quite messy. Its amazing how much stuff I have. Internet was easy to get in Finland. The rest isn't that easy. First I seem to need an adapter for the water connector of my washing machine. Next problem is that its not so easy to mount the lamps on the ceiling. Don't know what the ceiling consists of, but I can't drill holes in there. Also need to figure if they have DIY store in Finnland at all, haven't spotted one so far.

I really hope that I can soon get back to do some hacking on OS projects.

43 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!