<?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>penguin sounds &#187; ardour</title>
	<atom:link href="http://penguinsounds.org/category/ardour/feed/" rel="self" type="application/rss+xml" />
	<link>http://penguinsounds.org</link>
	<description>programming blog</description>
	<lastBuildDate>Mon, 12 Jan 2009 01:34:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ardour releases 2.0!</title>
		<link>http://penguinsounds.org/2007/05/01/ardour-releases-20/</link>
		<comments>http://penguinsounds.org/2007/05/01/ardour-releases-20/#comments</comments>
		<pubDate>Tue, 01 May 2007 11:26:38 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[ardour]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/05/01/ardour-releases-20/</guid>
		<description><![CDATA[After two years of work, Ardour has released version 2.0. I&#8217;ve been working with Paul Davis on and off for about six years now, and I am enormously happy.]]></description>
			<content:encoded><![CDATA[<p>After two years of work, <a href="http://ardour.org">Ardour</a> has released <a href="http://ardour.org/node/895">version 2.0</a>.  I&#8217;ve been working with Paul Davis on and off for about six years now, and I am enormously happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/05/01/ardour-releases-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>smart counting with dynamic_bitset and boost.framework</title>
		<link>http://penguinsounds.org/2007/04/07/smart-counting-with-dynamic_bitset-and-boostframework/</link>
		<comments>http://penguinsounds.org/2007/04/07/smart-counting-with-dynamic_bitset-and-boostframework/#comments</comments>
		<pubDate>Sat, 07 Apr 2007 14:28:05 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[ardour]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/04/07/smart-counting-with-dynamic_bitset-and-boostframework/</guid>
		<description><![CDATA[In Ardour, we have numbered audio tracks named Track 1, Track 2, and so on. Most software when faced with what to name the next created track will just use a static int that is incremented with each track. With Ardour, we wanted to make it smarter. We wanted to be able to re-add Track [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://ardour.org">Ardour</a>, we have numbered audio tracks named Track 1, Track 2, and so on.  Most software when faced with what to name the next created track will just use a static int that is incremented with each track.</p>
<p>With Ardour, we wanted to make it smarter.  We wanted to be able to re-add Track 1 if the first track was deleted.  But not if the first track had just been renamed.  We use C++ for the libardour backend, so we were in luck.</p>
<p>The <a href="http://www.sgi.com/tech/stl/">STL</a> includes <a href="http://www.sgi.com/tech/stl/bitset.html">bitset</a>, a very handy wrapper for what&#8217;s essentially an array of booleans, but optimized for space.</p>
<p>The technique is: look for the first false slot in the bitset.  The index is the number of the new track.  When a track is deleted, mark the slot as false.  This lets the user rename a track and it won&#8217;t interfere with the counting.</p>
<p>The one problem with this is the size of a bitset is set at compile time.  You could use <a href="http://www.sgi.com/tech/stl/bit_vector.html">vector&lt;bool&gt;</a>, but its use is <a href="http://www.informit.com/guides/content.asp?g=cplusplus&#038;seqNum=98&#038;rl=1">discouraged</a>.  Luckily, <a href="http://boost.org">boost.org</a> has an implementation of <a href="http://boost.org/libs/dynamic_bitset/dynamic_bitset.html">dynamic_bitset</a> which can be grown during runtime.</p>
<p>This smart counting gives Ardour a polish and the users love it.</p>
<p>I&#8217;ve created a <a href="http://files.penguinsounds.org/frameworks/boost.framework.zip">boost.framework</a> for those of you lucky enough to be using C++ on OS X.  It&#8217;s all header files, so you only need to include it in the frameworks path.  It doesn&#8217;t need to be linked in.  It unzips to a large size, but you only pay for what you use.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/04/07/smart-counting-with-dynamic_bitset-and-boostframework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
