The buzztard team has release version 0.2
"sunrise" of its buzz-alike music composer.
This version has lots of UI usability improvements, bug fixes, more instant apply settings and introduces some interactivity features (interaction controller and upnp playback controller).
The gstreamer extension modules got two new interfaces for presets and help. A Fluidsynth generator plugin has been started.
Lots of commit and bug tracker activity this month. As we're heading for the 0.2 release I spend most time doing bugfixing. Berzerka discovered that song-saving was flawed. Editing the patterns did not always took effect. Removing machines had leaks and ref-count problems. There were some long-standing gtk-warnings. All fixed in CVS. Finally that loop-playing problem got on my nerves. I was trying to fix that several times in the past already. Finally I found that it was a small issue with GStreamers adder element. Many thanks also to Henri Valta, who contributed several patches. All the new testing also lead to some new and some re-enabled unit tests.
Beside fixing, I was also working a bit on the features. The interaction controller now works for input devices (via evdev). I've tested it with a USB joystick and the harddisk in my laptop (via hdaps). Control devices are detected via HAL and shown in the menus. One can assign those to effect parameters. Using the accelerometer in the harddisk, one can control e.g. filter-cut of and resonance by tilting the laptop - how useless. There is one flaw to mention - the bindings aren't yet persistent, close the window and there gone.
Finally in gst-buzztard we have a first working version of a fluidsynth GStreamer source. Josh Green the author of swami made the initial port.
I will now start to prepare the release. Should be out in the coming weeks.
gstreamer
We got some data mutation suites for media files at nokia. We're currently test and fix gstreamer elements using them. This is really great, there are quite a lot of issues that would have been hard to discover otherwise. Unfortunately sometimes I can't fix issues. Since a while gst-plugins-bad has two midi-renderers - timidity and wildmidi. They wrap the libraries of the same name. Both libs are easy to crash and both projects seem to be dead :/ No replies to mails and patches are sitting uncommented in the tracker.
I also spend some time with working on the various build configurations switches for gstreamer. Most of them work again. Two issues left. First is generating bindings accordingly. I wrote some m4 macros for this, now they need to be used. Second issue is that building docs would fail if subsets are disabled. I'll ignore that for now :)
LAC 2007 was great. Was nice to meet all these people. The buzztard demo was well received. I will try to make a screencast of the upnp remote control feature. I could only demo it there at a second attempt as I didn't received the wifi router which was needed for the demo. I have put the slides online (if someone knows how the get rid of the stripes that openoffice 2 produces when exporting slides with a gradient in the background to pdf, I am listening). For the slides I updated the architecture picture and put it on the wiki too. The time there was good to fix a lot of small issues. I belive its a good time to try the project now. If everything goes right we try to release a 0.2 end of april.
First bigger change is the settings UI. We have icons there for the subpages and there are two new subpages - for the playback controller (upnp via coherence) and for the coming interaction controller. The settings of the playback device is instant apply now (except when playing, it will be switched after stopping). Speaking of the interaction controller - implementation has started there. This is one thing I would like to get into 0.2 still. I'll explain in more detail once it is done.
I also spend lots of time doing maintenance - the api docs have been updated, extended and uploaded, thanks to some valgrinding sessions some memleaks have been found and fixed and refdbg helped to track down more ref-count issues. Also now 'make distcheck' runs through for the first time. Finally I could fix one xlib warning, which broke playback when playing with realtime effects.
During and after LAC I also spend time to work one small, but annoying things. First I refactored the missing machines dialog so that it can remember elements it already warned about. Next items was the level meters, they now are more reactive and show current as well as peak level. The ui should be a bit more usable too. The keyboard shortcut for switching between patterns and sequence (ctrl-enter) was broken. When adding a new src-machines it also creates a track in sequence automatically. In pattern and sequence view bt-edit shows unused patterns in gray color (in the menu/list).
Altogether a nice list of fixes and enhancements.
I am very disappointed too. We collected some really nice ideas for GStreamer, we have students that wanted to do them and several appliactions, even several desktops would benefit from them. I hope that Google could at least provide some feedback to us what caused the decission.
February passed really quickly. I was quite busy preparing the FOSDEM talk. Still I found some time to work on the project. Again I had to hunt some refcount leaks and it took me days to track them down and fix them. We also had more testers in the channel and could fix some build problems. Right now I am working on some features for the LAC 2007 demo in Berlin. For those who can't be there - I will write more about these new things next month.
GStreamer
Slomo and me are improving the audio plugins in GStreamer. He writes more elements (like a compressor/expander) and I improved the existing ones to better support float audio (32 and 64 bit). We now can play some more files and also need to less often convert.
It was nice to see some more faces behind the nick names and talk to the people. At the end of the conference we collected the notes from the feedback wall. I've posted the 'dislike' items already, the other will follow soon. Obviously some are not serious. But some of them are. Please look over them and comment.
Borked ATM
On sunday morning I had a nice experience with this ATM in belgium. I inserted my card and it could not read it. I've tried again and this time a dos-terminal came to front with '8' digits printed in a loop. Then it rebooted.
After it came up again. Playing the window login sounds etc. The startup was horrible. They tried to cover some scripts that were running in two dos-windows with a fullscreen picture that they periodically forced to be on top. It failed and flickered. Then the application was started and it prompted to insert the card. So far so good, if only my card wouldn't be still in there. I pressed 'cancel' and behold! It rebooted again. Wow! Btw. the manufacturer is Diebold - yes the ones that also make the oh-so-secure voting machines. To cut the story, I was using my N800 to surf to my banks homepage, call them and lock my card. They also said that quite likely the bank will sent to card to my bank and hey in turn to me.
I really wonder why someone uses windows for an atm. you can't lock it down and it costs money. Next question is why the bank pays so little interest in the actual configuration and application. the diebold setup is horribly unprofessional. Guys mind the fortis atm for now.
Marc-Andre Lureau, Zeeshan Ali currently rework the GObject documenation a bit.
I posted a call for feedback on the gtk-app-devel list. Please let us know what is missing, outdated or can be improved. Thanks!
Last month I started to offer extensions from the buzztard project for gstreamer inclusion [1] [2] [3] [4]. I believe that the idea behind is generic enough to support them. The discussion and interest has been relative low so far :( I'll probably interpret this then as agreement and commit the changes. The preset handling has been improved. The buzz presets can be saved now too and meta data (comments) can be edited as well. The generic implementation also shapes up.
As my solution for [5]
seems to be disliked I went for a hack :( I now hide the
treeview headers and simulate my own. Now the header widgets
work. As some extra sweetness the header have per track
volume meters. While working on this I also made the
label-browser function. It allows to jump to labels in the
timeline.
I also started to add some functionality to the wavetable page. Its now possible to browse the files and preview the selected entry.
I was curious how well the buzz song import now works. Especially with the better handling of missing machines. So I added a test script, similar to the unit test in core, that runs over all your buzz songs, imports them and dumps basic info into text files. Then it greps the text files to generate most wanted machine top 10 :).
Last weekend I did a first rough port of buzztard for the N800. I have some of the UI changes in place already. The GStreamer side was pleasant - no changes needed. Unfortunately the gstreamer on the device is not the most up to date and thus the app does not work too well.
gstreamer
A lot of action on the GStreamer front too. Dozen interesting elements ranging from midi-song rendering to new audio fx landed in bugzilla and partially already in CVS.
In last month news I wrote about the gst element check. Now we also have the respective UI parts. The apps check if the have mandatory and optional elements available. If elements are missing the user will see an explanation which are missing and what for they are needed. For optional elements its up to the user to decide if that is okay or if they should be installed. In the future we can make use of the new gstreamer libgimmicodec mechanism, to download and install missing elements on the fly.
I also continued working on the preset support. The interface got some default implementation, e.g. to generate a randomized preset. The buzzmachine wrapper implements most of the interface. We can load presets, rename and remove them. The later two actions are not yet persistent - I need to implement saving still. On the UI side I implemented the preset pane for the machine settings window. I decided not to copy the buzz UI here. I should post a screenshot soon.
I also went over the todo: comments in the source once again and implemented things here and there. Now one can add/removed tracks for polyphonic machines. Also adding/removing tracks in the sequence is now working fine and updates all UI items properly.
Right now I am also giving the dialogs an overhaul. All got a default action (e.g. press enter to dismiss). They also get moved into a separate object each. This helps to test them standalone and to auto-screen-shot them during the test runs.
Finally I spend some time configuring our buildbot. For the first time all steps are green. The machine the test run on does not have X11 running. Still we can run UI tests and do screenshots of all windows. The magic can be found in a few helper methods that pick a free display number, spawn a Xvfb server and setup a GdkDisplay for gtk+. The buildbot stuff definitely rocks! I hope we can extend this in the future - anyone found a way to trigger builds from sourceforge.net cvs commits (via commit hook)? Make me happy and mailto: ensonic (at) users (dot) sf (dot) net.
life
Over new year I've been back in germany with my girl friend for a week. Finland is not bad, but still we miss quite a lot of things:
This month we fleshed out the planning for 0.2. From now on we like to release often and regularily. We defined a lot of small gtk ui tasks. If you like to help, we welcome you with open arms on irc://irc.quakenet.org/#buzztard.
First changes after the release are already in CVS. I worked on the buzzmachine emulation. I can now handle some more plugins. We need to update and re-run the coverage tests to get a clear picture. Regarding wrapper gst-elements we have a bug in gstreamer bugzilla that needs some work.
I also worked on the UI a bit more. The machine preferences and properties now have some reasonable size. Its not easy to get a default size for generated UIs. Right now I clamp the height to the screen-height minus some extra. Would be nice to have some way to figure how much space one should leave for upper/lower panels. I also needed to add a workaround for the window-width wobble. If you had sliders with labels in the UI, the width was dependent on the label with.I can't really know the maximum width beforehand easily, so I had to set a default width. Good enough for now.
I also started two new inerfaces for gstreamer elements. First one is about the help documentation of the element. Buzztard can show the docs of buzzmachines or the gtk-doc of native element already. The second iface is about the preset handling. Implementing that for the buzzmachines is next on the todo list.
Finally I also started to put some gstreamer element check into the core lib. During configure we can check for installed elements and it would't make sense anyway. So we are going to check for mandatory and optional elements at application start. Checking works fine already. Now I need to add the UI dialog for the missing elements report.
Have a nice christmas month - we'll get back to you next year.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
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!