<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for ensonic</title>
    <link>http://www.advogato.org/person/ensonic/</link>
    <description>Advogato blog for ensonic</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 10 Feb 2012 18:01:57 GMT</pubDate>
    <item>
      <pubDate>Fri, 13 Jan 2012 07:57:04 GMT</pubDate>
      <title>13 Jan 2012</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=125</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=125</guid>
      <description>&lt;b&gt;buztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
Finally after a long time, I managed to release a 0.6 of buzztard. So far only one regression was found and bml-0.6.1 was released to fix it.&lt;br/&gt;
&lt;br/&gt;
A few things happened before the release still. At first after updating my distro, I made a lot of changes to avoid deprecated gtk+ api. For now we ship a copy of the ruler widget (that got removed in 3.0). The internal ruler widget&lt;br/&gt;
is a lot saner than the upstream one too. &lt;br/&gt;
&lt;br/&gt;
Another big change was to move from string parameter for notes to an enum. This is faster and lets us do things like blending of note ranges or transposing.&lt;br/&gt;
&lt;br/&gt;
I also made quite a few bug-fixes - laspa effects work again, fluidsynth fixes, etc.&lt;br/&gt;
&lt;br/&gt;
Now I look forward to a lot of new changes in 0.7.X.&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Sun, 25 Dec 2011 10:56:25 GMT</pubDate>
      <title>25 Dec 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=124</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=124</guid>
      <description>&lt;b&gt;buzztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
hi,&lt;br/&gt;
&lt;br/&gt;
The buzztard team has released version 0.6.0 "black beats blue" of its&lt;br/&gt;
buzz-alike music composer. All modules got extensive improvements over the last&lt;br/&gt;
release from more than two years ago. Give it a try, join hacking and report bugs.&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;bml&lt;/b&gt;&lt;br/&gt;
Improved machine compatibility.&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;bsl&lt;/b&gt;&lt;br/&gt;
Several bug fixes and better compatibility.&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;buzztard&lt;/b&gt;&lt;br/&gt;
Main feature of this release is full undo/redo support. Related to it is the&lt;br/&gt;
journaling of edit action and the crash recovery. This way chances of losing&lt;br/&gt;
changes in the song are quite low. Other UI improvements are: tip of day,&lt;br/&gt;
improved spectrum analyzer, clipboard support, more commands in context menus&lt;br/&gt;
and many more). This release features a gstreamer decoder that enables playback&lt;br/&gt;
of buzztard songs in any gstreamer based media player.&lt;br/&gt;
We also kept the buzztard codebase clean and ported from deprecated APIs to the&lt;br/&gt;
successors (gnomevfs-&gt;gio, hal-&gt;gudev). The libraries and the applications got&lt;br/&gt;
performance improvements in many areas.&lt;br/&gt;
Also the docs have been improved a lot with tutorials, keyboard shortcut tables,&lt;br/&gt;
better coverage and man-pages.&lt;br/&gt;
&lt;br/&gt;
&lt;b&gt;gst-buzztard&lt;/b&gt;&lt;br/&gt;
Lots of code cleanups. Get rid of the temporary help interface. Switch from&lt;br/&gt;
liboil to orc.  Performance improvements.&lt;br/&gt;
&lt;br/&gt;
project-page: &lt;a href="http://www.buzztard.org" &gt;http://www.buzztard.org&lt;/a&gt;&lt;br/&gt;
screenshots: &lt;a href="http://wiki.buzztard.org/index.php/Screenshots" &gt;http://www.buzztard.org/index.php/Screenshots&lt;/a&gt;&lt;br/&gt;
downloads : &lt;a href="http://sourceforge.net/projects/buzztard/files/" &gt;http://sourceforge.net/projects/buzztard/files/&lt;/a&gt;&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Fri, 2 Dec 2011 21:31:03 GMT</pubDate>
      <title>2 Dec 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=123</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=123</guid>
      <description>&lt;b&gt;gstreamer &amp; buzztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
Over the last 2 month I did quite a bit of work on the GStreamer side. Right now we're working on 0.10 and 0.11 in parallel. I worked on the audiovisualizers and opencv elements in 0.10. I added a freeverb port to 0.10. In 0.11 I updated the controller susbsystem. If is now a lot easier to use and faster too. I also ported the audiovisualizers and fixed a few elements here and there.&lt;br/&gt;
&lt;br/&gt;
&lt;a href="http://buzztard.org/wp-content/uploads/ToneMatrix.png" &gt;&lt;img src="http://buzztard.org/wp-content/uploads/ToneMatrix-150x150.png" alt="" title="Tone matrix toy" width="150" height="150" align="left" hspace="10" vspace="5"/&gt;&lt;/a&gt;In the beginning of November I gave a seminar about mobile multimedia using GStreamer. For that I wanted to have a few more examples. I have been polishing some examples in GStreamer and adding some more (simple audio-mixer with xfade). One example is a nice showcase for how easy you can do some things. It is called &lt;a href="http://buzztard.svn.sourceforge.net/viewvc/buzztard/trunk/buzztard/design/gst/tonematrix.c?view=markup" title="tonematrix" &gt;tonematrix&lt;/a&gt;. It is 497 lines of c, including comments, a GTK ui with an own widget and the whole GStreamer handling. The toy supports different sounds, different speeds and different scales.&lt;br/&gt;
&lt;br/&gt;
Buzztard allows live control of audio elements. Right now can use midi and hid devices. The software that exposes the wiimote as a hid device uses uinput. This is a kernel device with a simple api that allows user-space apps to create hid devices. I wrote a small toy (280 lines of c) that can use different GStreamer pipelines containing analyzer elements and map the detected features to &lt;a href="http://buzztard.svn.sourceforge.net/viewvc/buzztard/trunk/buzztard/design/input/gstinput.c?view=markup  " title="virtual joystick controls" &gt;virtual joystick controls&lt;/a&gt;. The simplest example is to map the loudness of the mic-input to the x-axis. A similar example is to map the brightness of the&lt;br/&gt;
camera input to a joystick axis. Then you can control e.g. the filter-cutoff of a synthesizer by shielding the light from the camera sensor. Now the fun starts with the recently improved facedetect plugin in GStreamer. This can not only detect the faces, but also the positions of eyes, nose and mouth within the face. Unfortunately the detection is not very stable when drawing faces. The idea here obviously is to make grimaces and control sound with that. A very expressive performance :)&lt;br/&gt;
&lt;br/&gt;
I also spend a lot of time to track down issues with dynamic linking. A few more fixes are done on buzztard side and GStreamer side. I think on the buzztard side things are good for a release. Everything is reviewed (docs, demo-songs, ...) and make distcheck passes :)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 4 Oct 2011 11:03:05 GMT</pubDate>
      <title>4 Oct 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=122</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=122</guid>
      <description>&lt;b&gt;buzztard, valgrind and ...&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
This month I focused on testing for the next release. My free time for the project was a big short anyway, as my family move to our new home and I had quite some janitorial work to do.&lt;br/&gt;
&lt;br/&gt;
One lesson learned for the start. Some time ago I had problems with tests going crazy and eating memory. This can bring down the whole system which is bad. My solution at this time setrlimit(RLIMIT_AS,&amp;rl) to cap the memory usage. While that works, that is also one way to shoot yourself in the foot. I was wondering why tests that work flawlessly on 32bit systems fail with "mmap() failed: Cannot allocate memory". Doh, 64bit platforms need more memory than 32bit ones. Now I raised the limits unconditionally and everything is working again. Would be good to check the difference to see how much more memory 64bit apps that in average - its not twice as much I think.&lt;br/&gt;
&lt;br/&gt;
I did lots of valgrinding and obviously found and squashed a few leaks. It would be really nice if each library would ship a suppression file as part of the dev package. The file could be installed to /usr/lib/valgrind/&lt;package&gt;.supp. The pkg-config file would have two variables: 'vg_supp' pointing to the suppression file and 'vg_env' setting extra environment variables easing valgrinding. This way one could just collect these from the libraries an application uses and be done. GObject based libs could suppress their singletons to improve the valgrind experience.&lt;br/&gt;
&lt;br/&gt;
From time to time potential users show up on irc and get scared when I ask them to build the latest version from the sources. In the need for having an easy way to offer testers and translators the latest version, I took a look at &lt;a href="http://people.gnome.org/~alexl/glick/" &gt;glick&lt;/a&gt;. It is actually pretty straight forward. The resulting glick files where initially somewhat large, but after pruning development files, they are just about 6 Mb. I have two of them online - one for &lt;a href="http://www.hora-obscura.de/~ensonic/buzztard.x86_32.glick" &gt;32bit&lt;/a&gt;  and one for &lt;a href="http://www.hora-obscura.de/~ensonic/buzztard.x86_64.glick" &gt;64bit&lt;/a&gt; systems. How to use them? Just download and run them - they don't install anything. The only downside I can see so far is, that the glick bundle would use the same settings as the properly installed one, which could be harmful if different versions are run. Also the path to the example songs in the bundle is somewhat cryptic - /proc/self/fd/1023/share/buzztard/songs :/. Having better desktop integration of such bundles would be great too, but less see how glick evolves.&lt;br/&gt;
&lt;br/&gt;
50 files changed, 836 insertions(+), 373 deletions(-)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 14 Sep 2011 17:42:26 GMT</pubDate>
      <title>14 Sep 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=121</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=121</guid>
      <description>&lt;b&gt;buzztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
After lots of changes I have switched the code permanently to the new sequence model. It saves about 170 lines of code in the sequence-page source. There is some potential to save more though.&lt;br/&gt;
&lt;br/&gt;
I also did more work on state persistence. A song now contains more information (selected machines, pattern, options) and these things are restored when loading a song.&lt;br/&gt;
&lt;br/&gt;
Another good change was moving the song-unsaved flag from the song (core-library) to the edit application. This make the core library more light-weight. The editor application can now determine whether there is something to save by combining the unsaved-flag and the undo/redo stack. The unsaved-flag is still needed as I feel not everything needs to go to the undo/redo stack (like selecting a machine). Undo/redo looks quite complete now. I found a solution for my last issue, although I am still not entirely happy with it.&lt;br/&gt;
&lt;br/&gt;
I also made a few startup time improvements. Found a weird issue with the interaction-controller library probing joystick devices. One ioctl on joy devices for hdaps devices is hanging for quite a bit.&lt;br/&gt;
&lt;br/&gt;
Finally I did a huge cleanup on or somewhat uncommon header file setup. We always had a header declaring the types and one the methods. This helped with include conflicts. But now we have 50% less files to care and I just needed 2 forward declarations.&lt;br/&gt;
&lt;br/&gt;
Again several bugs were fixed. I will check remaining reported bugs and hope that everything is fine to consider releasing 0.6.&lt;br/&gt;
&lt;br/&gt;
253 files changed, 27205 insertions(+), 26602 deletions(-)</description>
    </item>
    <item>
      <pubDate>Tue, 2 Aug 2011 21:07:40 GMT</pubDate>
      <title>2 Aug 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=120</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=120</guid>
      <description>&lt;b&gt;buzztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
Another month with good progress. I've started with the undo/redo parts in the sequencer view. Most of the edits are handled now. I am still stuck with one problem though. So far the order of signal handler on object removal did not matter. Now it does :/ There are things that when they get removed remove other things. And that causes chains of modificatins that in the change log would overwrite (shadow) the save data. Not yet sure how to solve that. I'll probably confront someone at the &lt;a href="http://www.desktopsummit.org" &gt;desktop summit&lt;/a&gt; with the problem over some beer in the hope that I find a solution while I am explaining the issue :) As a good side effect of the undo/redo work, I could remove the warning dialogs that I was showing when removing things. Makes the editor more pleasant to use.&lt;br/&gt;
&lt;br/&gt;
&lt;a href="http://buzztard.org/wp-content/uploads/20110802_001.jpg" &gt;&lt;img src="http://buzztard.org/wp-content/uploads/20110802_001-150x150.jpg" alt="" title="buzztard and the korg nano kontrol" width="150" height="150" align="left" hspace="7" vspace="3"/&gt;&lt;/a&gt;During my july trip to mountain view I brought two cheap midi controlers - &lt;a href="http://www.amazon.de/Korg-NANOKONTROLB-nanoKONTROL-schwarz/dp/B001J8LJWK" &gt;korg nanokontrol&lt;/a&gt; and &lt;a href="http://www.thomann.de/gb/korg_nanokey_2_black.htm" &gt;nanokeys 2&lt;/a&gt;. The  nanokeys 2 is not so nice, but the nanokontrol seems to be okay. Unfortunately I didn't notice is is the old model, the &lt;a href="http://www.thomann.de/gb/korg_nanokontrol_2_black.htm" &gt;nanokontrol 2&lt;/a&gt; has more keys. I have played quite a bit with the nanokontrol in buzztard. Found and fixed a few bugs. One thing I definitely needed to do is to store the keys one has trained. Thanks to my long train journeys between munich and leipzig these days, that got implemented. For the nanokeys I need to still do a couple of things and those will have to wait for the next version.&lt;br/&gt;
&lt;br/&gt;
As I was blocked on the undo/redo I did more small mini-songs. As usual found a couple of bugs. Buzztard stores timestamps in the song (like when it was created and when it was saved the last time). When closing a song with changes it warns you about loosing the changes for the last n hours/minutes. Thas was completely off if one loads a song and makes some changes. I need to set the last-saved to the time of the first change. A few other bugs were related to 64bit arch and using wrong int types in varargs functions. I also made some ui improvements. The settings hide more unusable audiosinks (apexsink, sfsink), especially probing apexsink caused long delays as I don't have the hardware for it.&lt;br/&gt;
&lt;br/&gt;
One issue that I had no good explanation for but that was quite apparent when doing demos was small breaks when the song loops. Especially at the first loop it caused a bad glitch and later it sometimes played a bit too much or skipped something when wrapping around. I had made some test apps for it, but could not reproduce it there so far. Finally I looked at it again and found a small self-contained testcase that was reproducing it. On that case I could narrow it down to a combination of two gstreamer elements causing it. Still it was not straight forward to fix it, after all it is not crashing or such. I decided that the only way forward was to get a good picture of what is happening and verifying the events step by step. Voila, we now have a improved gst-tracelib and a gnuplot script for plotting event over time. Would be nice to have a more interactive UI for gnuplot though. I filed a &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=655204" &gt;bug&lt;/a&gt; and put the data there, if you are curious about the graphs. After some more nights I found the issue and the fix for the adder plugin is now upstream. A simillar change needs to be done for the videomixer elements (will look into that soon). &lt;br/&gt;
&lt;br/&gt;
43 files changed, 2779 insertions(+), 496 deletions(-)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Sat, 2 Jul 2011 04:16:23 GMT</pubDate>
      <title>2 Jul 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=119</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=119</guid>
      <description>&lt;b&gt;buzztard&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
This month I made great progress. I have been making several small demo songs and found+fixed quite many bugs and glitches along with that.&lt;br/&gt;
&lt;br/&gt;
After a little break I took up undo/redo work and could make good progress. Now also pattern property changes (name and length) are tracked. In the sequence the boilerplate code is there, single edits, track and property changes are handled. In the machine view the initial machine position is tracked in the change-log.&lt;br/&gt;
&lt;br/&gt;
In the middle of the month I did doc updates - api docs had some stuff missing and the user help finality has more beef and short-cut tables for all the keyboard accelerators.&lt;br/&gt;
&lt;br/&gt;
OmniMancer on irc gave me some good first perspective usage experience. I added a blacklist filter to hide gstreamer elements from the menu that are known to be not useful for buzztard (e.g. dtmfsrc). Also some machines used GTypes not yet supported by the UI - this is now fixed. With that came some fixes in&lt;br/&gt;
pattern editing (blending parameters wasn't working in all cases). I also added a flip operation to the patterns. Also to make a few things easier for new users I added two items to help menu - file a bug and goto irc. The later fires up the freenode webirc as xdg-open seems to be unable to launch e.g. xchat for irc://&lt;br/&gt;
urls.&lt;br/&gt;
&lt;br/&gt;
I have started to write the missing treemodel for the sequence view and used that changed to overhaul a few things. Even without the new model its quite a bit faster as we do less model rebuilds  (e.g. when expanding the length). Also the row-shading code is simpler and with that the cell-data functions. Finally&lt;br/&gt;
the pattern usage tracking is now using a hashtable instead of rescanning the sequence.&lt;br/&gt;
&lt;br/&gt;
With all those changes comes a bag of bug fixes - I'll skip listing them here - it is all in the change log. Also I did a bit of code cleanups and reorgs. Like using macros for the GType handling to save lines of code. Or bump the gtk+ version (2.10.12) to get rid of fallback code. Finally I rechecked a glib bug regarding mime-matching. It's fixed since a while, but I still saw it, as the .recently-used.xbel file had the wrong mime type from the time when glib had the bug in there. Maybe it would be good to trim that file from time to time. Imho&lt;br/&gt;
it should also be in $XDG_CACHE_DIR and not $HOME, but that is a different story.&lt;br/&gt;
&lt;br/&gt;
48 files changed, 2712 insertions(+), 1250 deletions(-)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Sun, 19 Jun 2011 10:20:26 GMT</pubDate>
      <title>19 Jun 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=118</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=118</guid>
      <description>&lt;b&gt;This is not Helsinki&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;img src="http://www.hora-obscura.de/~ensonic/IMG_0816.JPG"&gt;&lt;br/&gt;
&lt;br/&gt;
Yes, that means 'bye bye Nokia'. The recent events have killed the last remains of trust in the companies leadership. It is quite sad to see how things get ramped down.&lt;br/&gt;
&lt;br/&gt;
The new chapter is called Google Germany. I just started in the office in Munich three days ago. So far everything sounds cool. I'll write about it when there is something to tell :)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 13 Jun 2011 08:46:56 GMT</pubDate>
      <title>13 Jun 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=117</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=117</guid>
      <description>&lt;b&gt;buzztard &amp; gstreamer&lt;/b&gt;&lt;br/&gt;
&lt;br/&gt;
In the begining of the month I finished the new treeview models. There were a couple of corner cases I did not handled yet. I did some thinking about the remaining model, but did not yet write any code for it. Instead I did some code review of the whole project leading to numerous small cleanups and fixes. I also got rid of some holes in the api docs.&lt;br/&gt;
&lt;br/&gt;
Otherwise I worked more on GStreamer and gtk-doc. In GStreamer I mostly hacked on a baseclass for audio-visualizers which is now in gst-plugins-bad (together with 4 elements using it).&lt;br/&gt;
&lt;br/&gt;
There are some other reasons for not having so much time to hack on, of which I will shortly speak about :)&lt;br/&gt;
&lt;br/&gt;
32 files changed, 1848 insertions(+), 444 deletions(-)&lt;br/&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 9 May 2011 17:55:03 GMT</pubDate>
      <title>9 May 2011</title>
      <link>http://www.advogato.org/person/ensonic/diary.html?start=116</link>
      <guid>http://www.advogato.org/person/ensonic/diary.html?start=116</guid>
      <description>&lt;b&gt;buzztard&lt;/b&gt;&#xD;
&#xD;
&lt;p&gt; After last month spectrum analyzer work, I also looked at&#xD;
the volume meters again. Handling the updates is a bit&#xD;
tricky as I need to sync them to the audio playback. Now I&#xD;
have optimizations in place to skip updates when the meter&#xD;
is zero or maxed and has not changed. This is actually quite&#xD;
often the case.&#xD;
&#xD;
&lt;p&gt; I also fixed a small UI glitch; song-io plugins did not tell&#xD;
so far whether they support saving and/or loading. Thus one&#xD;
could end up selecting a format and then getting an error.&#xD;
Now one will see only the formats that plugins can handle.&#xD;
&#xD;
&lt;p&gt; Finally I got around catching up on the docs too. Now all&#xD;
dialogs have some docs including screenshots.&#xD;
&#xD;
&lt;p&gt; One refactoring I was actually considering to push for after&#xD;
the next release was getting rid of the GtkListStores and&#xD;
use real GtkTreeModels instead. The disadvantage of a&#xD;
ListStore is that it is static, if the underlying object is&#xD;
dynamic one needs to manually synchronize it. This enlarges&#xD;
the code and also the duplicated data storage uses memory.&#xD;
Writing own models was in the end not so difficult, it is&#xD;
quite some boilerplate code though. The first one I wrote is&#xD;
a &lt;a href="http://buzztard.svn.sourceforge.net/viewvc/buzztard/trunk/buzztard/src/ui/edit/object-list-model.c?revision=3350&amp;view=markup" &gt;object-list-model&lt;/a&gt;.&#xD;
It allows to bind object-properties to model columns. If&#xD;
e.g. a field changes, the model notifies and the view&#xD;
updates. The whole thing could become more generic if we&#xD;
would have an iterator interfaces and the collection types&#xD;
(list, array, ..) would be gobjects implementing the iface.&#xD;
Well, I am not the first to notice &lt;a href="http://pvanhoof.be/blog/index.php/2009/08/17/treemodel-zero-a-taste-of-life-as-it-should-be" &gt;that&lt;/a&gt;&#xD;
:). Next I made 2 specialized models and started to take&#xD;
them into use. As a bonus e.g. the machine model provides a&#xD;
nice logical sorting. One more model to implement and&#xD;
switch to.&#xD;
&#xD;
&lt;p&gt; 72 files changed, 6268 insertions(+), 1250 deletions(-)</description>
    </item>
  </channel>
</rss>

