<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog of Tim Janik &#187; Beast</title>
	<atom:link href="http://blogs.gnome.org/timj/category/beast/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/timj</link>
	<description>Technical ramblings by Tim Janik</description>
	<lastBuildDate>Tue, 15 Sep 2009 07:59:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>21.09.2007 Beasty Bits (final spurt)</title>
		<link>http://blogs.gnome.org/timj/2007/09/21/21092007-beasty-bits-final-spurt/</link>
		<comments>http://blogs.gnome.org/timj/2007/09/21/21092007-beasty-bits-final-spurt/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 22:09:38 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2007/09/21/21092007-beasty-bits-final-spurt/</guid>
		<description><![CDATA[ We&#8217;ve been fairly busy recently with resolving the milestone bugs of the next Beast release. The good news is that pretty much all of the hard issues are sorted out by now, the bad news is that according to the release plan some essential release features are still missing ;)
It&#8217;s the large recent work [...]]]></description>
			<content:encoded><![CDATA[<p> We&#8217;ve been fairly busy recently with resolving the <a href="http://bugzilla.gnome.org/buglist.cgi?product=beast&amp;target_milestone=m0.7">milestone bugs of the next Beast release</a>. The good news is that pretty much all of the hard issues are sorted out by now, the bad news is that according to the <a href="http://mail.gnome.org/archives/beast/2007-August/msg00000.html">release plan</a> some essential release features are still missing ;)</p>
<p>It&#8217;s the large recent work that Stefan Westerfeld (who btw finally decided to start his <a href="http://blogs.gnome.org/stw">own blog</a>) has put into shaping up the remaining bits of bsewavetool <a href="http://bugzilla.gnome.org/attachment.cgi?id=87958">(man page draft)</a>.<br />
This is a very handy tool, that&#8217;ll finally be installed for public consumption in the upcoming release (it has been <a href="http://svn.gnome.org/viewcvs/beast/trunk/tools/bsewavetool.cc">developed in SVN</a> since 2004!). It can clip/normalize/ogg-encode/highpass/lowpass/upsample/downsample/etc chunks from the BSE multi sample files, and is normally used for shell-scripting the construction of sample kits from an unsorted pile of raw unprocessed sample data (<em>note to self: blog some example use cases after the release</em>).</p>
<p>Another addition are <a href="http://svn.gnome.org/viewcvs/beast/trunk/library/instruments/kf-synth-string-sweep.bse">interesting</a> new <a href="http://svn.gnome.org/viewcvs/beast/trunk/library/instruments/kf-growl-bass.bse">instruments</a> by <a href="http://www.linkedin.com/in/kfoltman">Krzysztof Foltman</a>.</p>
<p>Oh &#8211; and before i forget, the synthesis link section on the website got some new updates as well: <a href="http://beast.gtk.org/synthesis-links">Beast Synthesis Links</a>,</p>
<p>Also, Stefan pointed me at a YouTube video of Beast the other day:<br />
<a href="http://www.youtube.com/watch?v=hVFDsOpt5cA"> </a></p>
<p align="center"><a href="http://www.youtube.com/watch?v=hVFDsOpt5cA"><img src="http://testbit.eu/~timj/blogstuff/beast-hVFDsOpt5cA.jpg" /></a></p>
<p>The video is very nicely done, but it has the usual YouTubeish low quality artefacts.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2007/09/21/21092007-beasty-bits-final-spurt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>26.03.2006 Beasty Bits</title>
		<link>http://blogs.gnome.org/timj/2007/03/25/26032006-beasty-bits/</link>
		<comments>http://blogs.gnome.org/timj/2007/03/25/26032006-beasty-bits/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 19:17:54 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2007/03/25/26032006-beasty-bits/</guid>
		<description><![CDATA[ I will quickly roll up some of the interesting bits that happened around Beast in the last couple of weeks.  Stefan Westerfeld sat down and put up a collection of the various instruments and loops he is producing with Beast. Nicely described BSE files along with Ogg previews are available in his music [...]]]></description>
			<content:encoded><![CDATA[<p> I will quickly roll up some of the interesting bits that happened around <a href="http://beast.gtk.org">Beast</a> in the last couple of weeks. <br /> <a href="http://space.twc.de/~stefan/">Stefan Westerfeld</a> sat down and put up a collection of the various instruments and loops he is producing with Beast. Nicely described BSE files along with Ogg previews are available in his music collection: <a href="http://space.twc.de/~stefan/music/">STW Music Archive</a>. </p>
<p> <a href="http://pebbles.schattenlauf.de/">Hanno Behrens</a> had been fairly active in pushing the <a href="http://beast.gtk.org">Beast</a> project before the last release. In particular he has been stirring up the <a href="http://mail.gnome.org/archives/beast/2006-November/author.html">mailing list</a> with feature requests. One of the things we managed to get in in response to these efforts is a list of commonly used <a href="http://mail.gnome.org/archives/beast/2006-December/msg00004.html">musical tuning systems</a>. Besides the already supported <a href="http://en.wikipedia.org/wiki/Equal_temperament">12-TET</a> which is the 12 note per octave equal temperament used in all western contemporary music, this includes further TET variants, <a href="http://en.wikipedia.org/wiki/Just_intonation#Indian_scales">Indian tuning</a>, <a href="http://en.wikipedia.org/wiki/Pentatonic_scale">pentatonic tunings</a>, <a href="http://en.wikipedia.org/wiki/Meantone_temperament">meantone tunings</a> and various <a href="http://en.wikipedia.org/wiki/Well_temperament">well tempered tunings</a> mostly intended for organs. </p>
<p> Hanno also published a very well written C64-retrospective article about Beast synthesis in the <a href="http://www.lotek64.com/main/fileretriever.php?extended=0&amp;issue=20">20th Issue (german)</a> of the <a href="http://www.lotek64.com/main/mainframe.php">Lotek64 Magazine</a>. And additionally, the technical backgrounds for this article are described in the Beast wiki: <a href="http://beast.gtk.org/wiki:SidSynthesizer">SID Vicious (english)</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2007/03/25/26032006-beasty-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>27.12.2006 BEAST v0.7.1 out of the door</title>
		<link>http://blogs.gnome.org/timj/2006/12/27/27122006-beast-v071-out-of-the-door/</link>
		<comments>http://blogs.gnome.org/timj/2006/12/27/27122006-beast-v071-out-of-the-door/#comments</comments>
		<pubDate>Wed, 27 Dec 2006 20:34:46 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/12/27/27122006-beast-v071-out-of-the-door/</guid>
		<description><![CDATA[ It really has been a long way to get this release out of the door. It fixes some serious crashers that i intend to blog about later, but more importantly it fixes a security vulnerability issue, here&#8217;s the related advisory: artswrapper vulnerability 2006-2916  Upgrading from any older Beast version is thusly strongly recommended. [...]]]></description>
			<content:encoded><![CDATA[<p> It really has been a long way to get this release out of the door. It fixes some serious crashers that i intend to blog about later, but more importantly it <strong>fixes a security vulnerability</strong> issue, here&#8217;s the related advisory: <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2916">artswrapper vulnerability 2006-2916</a> <br /> Upgrading from any older Beast version is thusly strongly recommended. I&#8217;ll not get into too many boring details here, so let me just say that Beast now supports different musical tuning systems and also ships with new and extended modules (BseQuantizer). All the g(l)ory details can be found in the original announcement: <br /> <strong><a href="http://mail.gnome.org/archives/beast/2006-December/msg00025.html">ANNOUNCE: BEAST/BSE v0.7.1</a></strong> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/12/27/27122006-beast-v071-out-of-the-door/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>23.10.2006 Beast and unit testing</title>
		<link>http://blogs.gnome.org/timj/2006/10/23/23102006-beast-and-unit-testing/</link>
		<comments>http://blogs.gnome.org/timj/2006/10/23/23102006-beast-and-unit-testing/#comments</comments>
		<pubDate>Mon, 23 Oct 2006 12:38:52 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/10/23/23102006-beast-and-unit-testing/</guid>
		<description><![CDATA[ There&#8217;s been quite some hacking going on in the Beast tree recently. Stefan Westerfeld kindly wrote up a new development summary which is published on the Beast front page. 
 In particular, we&#8217;ve been hacking on the unit tests and tried to get make check invocations run much faster. To paraphrase Michael C. Feathers [...]]]></description>
			<content:encoded><![CDATA[<p> There&#8217;s been quite some hacking going on in the Beast tree recently. <a href="http://space.twc.de/~stefan/">Stefan Westerfeld</a> kindly wrote up a new development summary which is published on the <a href="http://beast.gtk.org">Beast front page</a>. </p>
<p> In particular, we&#8217;ve been hacking on the unit tests and tried to get <code>make check</code> invocations run much faster. To paraphrase Michael C. Feathers from his very interesting book <a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052/">Working Effectively with Legacy Code</a> on unit tests:<br />
<blockquote><em>Unit tests should run fast &#8211; a test taking 1/10th of a second is a <strong>slow</strong> unit test.</em></p></blockquote>
<p> Most tests we had executed during <code>make check</code> took much longer. Beast has some pretty sophisticated test features nowadays, i.e. it can render BSE files to WAV files offline (in a test harness), extract certain audio features from the WAV files and compare those against saved feature sets. In other places, we&#8217;re using tests that loop through all possible input/output values of a function in brute force manner and assert correctness over the full value range. Adding up to that, we have performance tests that may repeatedly call the same functions (often thousands or millions of times) in order to measure their performance and print out measurements. </p>
<p> These kind of tests are nice to have for broad correctness testing, especially around release time. However we did run into the problem of <code>make check</code> being less likely executed before commits, because running the tests would be too slow to bother with. That of course somewhat defeats the purpose of having a test harness. Another problem that we ran into were the intermixing of correctness/accuracy tests with performance benchmarks. These often sit in the same test program or even the same function and are hard to spot that way in the full output of a <code>check</code> run. </p>
<p> To solve the outlined problems, we changed the Beast tests as follows: </p>
<p> * All makefiles support the (recursive) rules: <code>check</code>, <code>slowcheck</code>, <code>perf</code>, <code>report</code> (this is easily implemented by including a <a href="http://svn.gnome.org/viewsvn/beast/trunk/Makefile.decl?view=markup">common makefile</a>). </p>
<p> * Tests added to TESTS are run as part of <code>check</code> (automake standard). </p>
<p> * Tests added to SLOWTESTS are run as part of <code>slowcheck</code> with <code>--test-slow</code>. </p>
<p> * Tests added to PERFTESTS are run as part of <code>perf</code> with <code>--test-perf</code>. </p>
<p> * <code>make report</code> runs all of <code>check</code>, <code>slowcheck</code> and <code>perf</code> and captures the output into a file <code>report.out</code>. </p>
<p> * We use special test initialization functions (e.g. <code>sfi_init_test(argc,argv)</code>) which do argument parsing to handle <code>--test-slow</code> and <code>--test-perf</code>. </p>
<p> * Performance measurements are always reported by the <code>treport_maximized(perf_testname,amount,unit)</code> function or the <code>treport_minimized()</code> variant thereof, depending on whether the measured quantity is desired to be maximized or minimized. These functions are defined in <a href="http://svn.gnome.org/viewsvn/beast/trunk/birnet/birnettests.h?view=markup">birnettests.h</a> and print out quantities with a magic prefix that allows grepping for performance results. </p>
<p> * <code>make distcheck</code> enforces a successful run of <code>make report</code>. </p>
<p> Together, these changes have allowed us to easily tweak our tests to have faster test loops (<code>if !test_slow</code>) and to conditionalize lengthy performance loops (<code>if test_perf</code>). So <code>make check</code> is pleasingly fast now, while <code>make slowcheck</code> still runs all the brute force and lengthy tests we&#8217;ve come up with. Performance results are now available at the tip of: <code>
<pre>	$ make report
	[...]
	$ grep '^#TBENCH=' report.out
	#TBENCH=mini:         Direct-AutoLocker:      +83.57            nSeconds
	#TBENCH=mini:         Birnet-AutoLocker:     +104.574           nSeconds
	#TBENCH=maxi:  CPU Resampling FPU-Up08M:     +260.4562325006    Streams
	#TBENCH=maxi:  CPU Resampling FPU-Up16M:     +184.19598452754   Streams
	#TBENCH=maxi:  CPU Resampling SSE-Up08M:     +399.04229848364   Streams
	#TBENCH=maxi:  CPU Resampling SSE-Up16M:     +338.5240352065    Streams </pre>
<p></code> The results are tailored to be parsable by performance statistics scripts. So writing scripts to present performance report differences and to compare performance reports between releases is now on the TODO list. ;-) </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/10/23/23102006-beast-and-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>16.07.2006 BEAST/BSE v0.7.0 finally out</title>
		<link>http://blogs.gnome.org/timj/2006/07/16/16072006-beastbse-v070-finally-out/</link>
		<comments>http://blogs.gnome.org/timj/2006/07/16/16072006-beastbse-v070-finally-out/#comments</comments>
		<pubDate>Sun, 16 Jul 2006 18:05:39 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/07/16/16072006-beastbse-v070-finally-out/</guid>
		<description><![CDATA[ After next Friday, Stefan Westerfeld and me are leaving for a 3 week vacation. So in order to not let the Beast release slip even more, we&#8217;ve been working hard over the last couple weeks to get a new tarball out of the door. After much fiddling and an SVN-migration hick up in the [...]]]></description>
			<content:encoded><![CDATA[<p> After next Friday, <a href="http://space.twc.de/~stefan/">Stefan Westerfeld</a> and me are leaving for a 3 week vacation. So in order to not let the Beast release slip even more, we&#8217;ve been working hard over the last couple weeks to get a new tarball out of the door. After much fiddling and an SVN-migration hick up in the last minute (<a href="http://svn.gnome.org/viewsvn/beast/trunk/">Beast is in SVN</a> now and will stay there), it&#8217;s finally accomplished:</p>
<p><a href="http://beast.gtk.org/news-file">Beast-0.7.0 NEWS</a><br />
<a href="http://beast.gtk.org/beast-ftp/v0.7/beast-0.7.0.tar.bz2">beast-0.7.0.tar.bz2</a></p>
<p>We really hope people are going to have fun with this release and report all bugs they encounter in <a href="http://bugzilla.gnome.org/buglist.cgi?query=product:beast">Bugzilla</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/07/16/16072006-beastbse-v070-finally-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>17.05.2006 The Beast Documentation Quest (3)</title>
		<link>http://blogs.gnome.org/timj/2006/05/16/17052006-the-beast-documentation-quest-3/</link>
		<comments>http://blogs.gnome.org/timj/2006/05/16/17052006-the-beast-documentation-quest-3/#comments</comments>
		<pubDate>Tue, 16 May 2006 19:23:48 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/05/16/17052006-the-beast-documentation-quest-3/</guid>
		<description><![CDATA[ Faced with the documentation system requirements outlined in the last episode (The Beast Documentation Quest (2)) it took a while to figure that there really was no single documentation tool fulfilling all the needs outlined. So writing a new documentation tool for the Beast project looked like the only viable solution. I wasn&#8217;t ready [...]]]></description>
			<content:encoded><![CDATA[<p> Faced with the documentation system requirements outlined in the last episode (<a href="http://blogs.gnome.org/view/timj/2006/02/24/0">The Beast Documentation Quest (2)</a>) it took a while to figure that there really was no single documentation tool fulfilling all the needs outlined. So writing a new documentation tool for the Beast project looked like the only viable solution. I wasn&#8217;t ready to start out rolling a new full fledged C++ parser though&#8230; <br /> Fortunately, <a href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</a> includes an XML generation back-end, that will dump all the C/C++ structure after the parsing stage, including comments, into a set of XML files. Unfortunately it unconditionally preprocesses the source code comments. So it required some trickery to circumvent complaints about unknown or invalidly used Doxygen macros when combined with a newly developed macro processor&#8230; <br /> To get the macro processor going, i wrote a recursive descend parser for &#8220;<code>@macro{arguments} more text&#92;n</code>&#8220;-style constructs in Python. Added up a syntax facility for new macro definitions, an algorithm to detect and generate sections plus a rudimentary HTML generation back-end, and voila &#8211; a new documentation generator was born: <a href="http://cvs.gnome.org/viewcvs/beast/doxer/">Doxer</a>. That was around last summer. </p>
<p> In response to my last blog entry on this topic, one commenter wrote:<br />
<blockquote><em>I think that starting another documentation project would be totally useless.</em></p></blockquote>
<p> I don&#8217;t think i can agree here. For any software solvable problem you have, you can only write your own tool if you don&#8217;t find an existing one that covers your needs or could be extended to do so. Admittedly, i didn&#8217;t know about <a href="http://synopsis.fresco.org/">Synopsis</a> back then, and i intend to investigate more of its innards at some point to figure whether it can be integrated with Doxer nicely. Until then, Beast does again have a working documentation tool, re-enabling us to keep documenting the source code and updating the website. <br /> At this point, the CVS version of Beast has been fully migrated to generate and display HTML runtime documentation, using a browser according to the users preferences. Also all source code documentation was converted and the website is fully generated from Doxer. All of this is driven by circa 6k lines of code, made possible only by the expressiveness of <a href="http://python.org/">Python</a> and by using Doxygen as a source code parsing backend. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/05/16/17052006-the-beast-documentation-quest-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>23.02.2006 The Beast Documentation Quest (2)</title>
		<link>http://blogs.gnome.org/timj/2006/02/24/23022006-the-beast-documentation-quest-2/</link>
		<comments>http://blogs.gnome.org/timj/2006/02/24/23022006-the-beast-documentation-quest-2/#comments</comments>
		<pubDate>Fri, 24 Feb 2006 05:18:55 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/02/24/23022006-the-beast-documentation-quest-2/</guid>
		<description><![CDATA[ In order to look for a new documentation tool for Beast, i set out a list of requirements that had to be matched: 
 a) We need to generate reference documentation from C and C++ source code comments.  b) Since we also need to process ordinary documentation files (say an FAQ) that involve [...]]]></description>
			<content:encoded><![CDATA[<p> In order to look for a new documentation tool for Beast, i set out a list of requirements that had to be matched: </p>
<p> a) We need to generate reference documentation from C and C++ source code comments. <br /> b) Since we also need to process ordinary documentation files (say an FAQ) that involve lots of text and occasionally graphics, Tex-info syntax is to be preferred over XML-style markup (well &#8211; actually *anything* is preferable over XML-style markup for lots of human digestible text) if at all possible. <br /> c) We need to generate documentation from introspection tools (e.g. <a href="http://cvs.gnome.org/viewcvs/beast/bse/bseautodoc.c?view=markup">bseautodoc.c</a> spews out documentation for object properties, signals and channels). <br /> d) The source code comments should use the same markup style that is used for ordinary documentation and design documents (e.g. the <a href="http://beast.gtk.org/faq.html">Beast FAQ</a> or the <a href="http://beast.gtk.org/quickstart.html">Beast Quick Start Guide</a>). <br /> e) We need to be able to generate decently looking HTML for the <a href="http://beast.gtk.org">Beast website</a>. <br /> f) We need to be able to generate manual pages &#8211; nothing too sophisticated, covering roughly the feature set of <a href="http://man.linuxquestions.org/index.php?query=man&amp;section=7&amp;type=2">man(7)</a> on Linux is more than sufficient. <br /> g) We need a runtime documentation format with support for &#8220;live documentation&#8221;, this was one of the reasons to go with <a href="http://developer.gnome.org/doc/API/2.0/gtk/GtkTextView.html">GtkTextView</a> in the original documentation. Basically &#8220;live&#8221; here means, runtime documentation displayed by a running Beast instance, e.g. triggered from the &#8220;Help&#8221; menu, should be able to provide links/buttons/activators that can trigger the running Beast instance to play back documentation example songs. <br /> h) Taking (b) to the extreme, writing documentation should be as easy as possible, maybe even as easy as writing documentation with <a href="http://www.openoffice.org/product2/writer.html">OpenOffice Writer</a> and exporting it as HTML. Of course, this would conflict with (g)&#8230; or &#8211; would it? <br /> i) Automatic external cross-linking should be supported, e.g. to all the documentation sections offered at <a href="http://developer.gnome.org/doc/API/">http://developer.gnome.org/doc/API/</a>. Especially within the reference documentation, automatic link markup would be good to have, without authors having to dig up links or add markup to the relevant keywords. <br /> j) The tool-chain required to build documentation should be available from a reasonably standard system, such as the current <a href="http://www.debian.org/releases/stable/">Debian stable</a>. <br /> k) Something similar to the custom macro definition feature of Tex-info as described in <a href="http://blogs.gnome.org/view/timj/2006/02/22/0">The Beast Documentation Quest (1)</a> should be offered by the new documentation system as well if at all possible. </p>
<p> The above requirements at hand, i looked around quite a bit to find a documentation tool that would allow me to fulfil all or most of them. <br /> It turned out that (a) and (g) definitely were amongst the harder ones, while (i) was mostly solved already by the old documentation system with regards to link indexing. There, we used a Perl script to extract various kind of (source code identifier, developer.gnome.org/doc/API/-link) tuples from developer.gnome.org. This scrip even covered enum values, something that gtk-doc does not generate own index lists for. <br /> One of the next things i was to find out, was that many tools don&#8217;t deliver HTML output as nice as that generated by gtk-doc. But then, even the very long-term plans for gtk-doc do not include extension towards C++ parsing&#8230; <br /> In general, C++ parsing isn&#8217;t one of the tasks easily covered. As far as i could figure, there is no decent free C++ parser (including comments) usable for documentation purposes other than <a href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</a>. Luckily, Doxygen is a reasonably standard tool (j) and also supports &#8216;@&#8217;-style markup that looks Tex-info alike (b) and generates documentation in multiple output formats (amongst them HTML and manual pages). Unfortunately i could not get the Doxygen HTML output to look anywhere close as decent as gtk-doc generated HTML pages. That included attempts at sophisticated CSS modifications and even hacking it&#8217;s documentation generation abilities. At closer inspection, Doxygen also did not fully fit what i had in mind for a general purpose documentation tool to cover, i.e. (b), (c) and (k). It should be noted however that Doxygen supports link index imports in a Doxygen specific format that can be used to enable automatic external linking (i) with some effort. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/02/24/23022006-the-beast-documentation-quest-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>21.02.2006 The Beast Documentation Quest (1)</title>
		<link>http://blogs.gnome.org/timj/2006/02/22/21022006-the-beast-documentation-quest-1/</link>
		<comments>http://blogs.gnome.org/timj/2006/02/22/21022006-the-beast-documentation-quest-1/#comments</comments>
		<pubDate>Wed, 22 Feb 2006 08:04:52 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2006/02/22/21022006-the-beast-documentation-quest-1/</guid>
		<description><![CDATA[ Around 2002, we (the beast project) started to put together the various bits and pieces for a makeinfo based documentation system. We ended up using texinfo markup because it&#8217;s not as hard to read and write for humans as XML is, and you can easily define your own macros to aid you in semantic [...]]]></description>
			<content:encoded><![CDATA[<p> Around 2002, we (the <a href="http://beast.gtk.org">beast project</a>) started to put together the various bits and pieces for a makeinfo based documentation system. We ended up using texinfo markup because it&#8217;s not as hard to read and write for humans as XML is, and you can easily define your own macros to aid you in semantic markup. <br /> E.g. if you wanted to markup a menu item path as such, you simply define @menu{} to mark things up as desired and then use it like: <br /> <code>Use @menu{/File/Save As...} to save a files with arbitrary names.</code> <br /> Documentation was needed mainly in three formats: HTML for the website, manual pages for the executables, and in a specific (.markup) format for a <a href="http://developer.gnome.org/doc/API/2.0/glib/glib-Simple-XML-Subset-Parser.html#GMarkupParser">GMarkup</a>-based parser that served as a front end to GtkTextBuffer text and tags. This <code>.markup</code> format is actually what Beast used (and currently still uses) as its primary documentation which can be displayed by <a href="http://developer.gnome.org/doc/API/2.0/gtk/GtkTextView.html#GtkTextView">GtkTextView</a> widgets (<code>.markup</code> files contain tag definitions that define <a href="http://developer.gnome.org/doc/API/2.0/gtk/GtkTextTag.html#GtkTextTag">GtkTextTags</a> with specific property settings and tag spans that apply these to text regions). So to generate documentation, we basically did (simplified for brevity): <br /> 1) write doc.texi with texinfo markup, <br /> 2) generate XML markup from doc.texi with <code>makeinfo --xml</code>, <br /> 3) generate the target formats with <code>xsltproc [markup.xsl|html.xsl|man.xsl]</code>. <br /> And for display, we did: <br /> 4) parse <code>.markup</code> file at runtime with <a href="http://developer.gnome.org/doc/API/2.0/glib/glib-Simple-XML-Subset-Parser.html#GMarkupParser">GMarkupParser</a>, <br /> 5) create GtkTextTags and adjust their properties from the parsed tag definitions, <br /> 6) create a GtktextBuffer to be displayed by a GtktextView, and apply the GtkTextTag spans. <br /> On top of all this, we parsed our source files with a perl script to extract source code documentation, and generated <code>.texi</code> files from that. We used a perl script instead of using <a href="http://www.gtk.org/gtk-doc/">gtk-doc</a>, because it was hard to use back then and because we wanted to use texinfo markup instead of SGML markup for our documentation (the escaping required by SGML/XML really sucks for source code sequences). <br /> So far so good. <br /> But then, roughly 2 years ago, we started to get serious problems with our documentation system, basically due to instabilities of the <code>--xml</code> mode of <code>makeinfo</code>. Other annoyances were that we couldn&#8217;t document our newly added C++ code, and that GtkTextView/GtkTextBuffer, albeit having a rich set of markup facilities, has no support for &lt;table/&gt; markup in any form (and probably never will). That, and a bit of maintenance lack in our <code>.xsl</code> files led me to look around for suitable alternatives&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2006/02/22/21022006-the-beast-documentation-quest-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>14.06.2005</title>
		<link>http://blogs.gnome.org/timj/2005/06/20/14062005/</link>
		<comments>http://blogs.gnome.org/timj/2005/06/20/14062005/#comments</comments>
		<pubDate>Mon, 20 Jun 2005 21:14:06 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2005/06/20/14062005/</guid>
		<description><![CDATA[ Sat down with stefan today to evaluate GarageBand to get some ideas for improvements and neccessary additions in beast. The number and types of loops it offers out of the box (actually we also had Jam Pack 1) is simply thrilling. Cooking up a rich dance music background is a matter of minutes. We [...]]]></description>
			<content:encoded><![CDATA[<p> Sat down with <a href="http://space.twc.de/~stefan/">stefan</a> today to evaluate <a href="http://www.apple.com/ilife/garageband/">GarageBand</a> to get some ideas for improvements and neccessary additions in <a href="http://beast.gtk.org">beast</a>. The number and types of loops it offers out of the box (actually we also had Jam Pack 1) is simply thrilling. Cooking up a rich dance music background is a matter of minutes. We got lots of new GUI ideas out of it, most of which ended up in the <a href="http://cvs.gnome.org/viewcvs/beast/TODO">beast TODO</a>, and we got more dedication for extending the stock instrument set shipped with beast.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2005/06/20/14062005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>26.05.2005</title>
		<link>http://blogs.gnome.org/timj/2005/06/20/26052005/</link>
		<comments>http://blogs.gnome.org/timj/2005/06/20/26052005/#comments</comments>
		<pubDate>Mon, 20 Jun 2005 20:25:48 +0000</pubDate>
		<dc:creator>Tim Janik</dc:creator>
				<category><![CDATA[Beast]]></category>

		<guid isPermaLink="false">http://blogs.gnome.org/timj/2005/06/20/26052005/</guid>
		<description><![CDATA[ BEAST/BSE version 0.6.6 is out, managed to throw it out before GUADEC despite the long list of must-fix items i had for this release. Will be heading to stuttgart for GUADEC6 tomorrow.
]]></description>
			<content:encoded><![CDATA[<p> <a href="http://beast.gtk.org">BEAST/BSE</a> version 0.6.6 is out, managed to throw it out before GUADEC despite the long list of must-fix items i had for this release. Will be heading to stuttgart for <a href="http://2005.guadec.org/">GUADEC6</a> tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.gnome.org/timj/2005/06/20/26052005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
