Tag Archives: ardour

smart counting with dynamic_bitset and boost.framework

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 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.

The STL includes bitset, a very handy wrapper for what’s essentially an array of booleans, but optimized for space.

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’t interfere with the counting.

The one problem with this is the size of a bitset is set at compile time. You could use vector<bool>, but its use is discouraged. Luckily, boost.org has an implementation of dynamic_bitset which can be grown during runtime.

This smart counting gives Ardour a polish and the users love it.

I’ve created a boost.framework for those of you lucky enough to be using C++ on OS X. It’s all header files, so you only need to include it in the frameworks path. It doesn’t need to be linked in. It unzips to a large size, but you only pay for what you use.

I love it when a plan comes together

With some help from Daniel Jalkut, Dave Dribin, Chris Hanson, and of course Andy Matuschak’s Sparkle and Reinvented Software’s Feeder, I finally have a system for pushing Gusto updates that are tied to SVN revision numbers. Once it works, it works pretty good. I might run into some trouble in the future if I were to use a different tree than trunk, but that’ll be a good ways away.

I’m not too worried either because:
a) agvtool will let me set whatever version and marketingversion I want
b) Sparkle will let me explicitly name the next version

GSoC 2006 writeup

The conference went great. It was an “unconference” were people reserve rooms to talk about whatever they want. If other people are interested, they’ll show up. I gave a talk called Rewarding Contributors that was about the various project management tricks I’ve done to pay back people who volunteer on Ardour. Sixteen people showed up and the following discussion, mostly with the Drupal team was very rewarding. There was applause afterwards. It was great.

Google’s campus was large and showed signs of rapid growth. They had over 40 buildings, I think. Their security guys were just dudes who sat under umbrellas in lawnchairs at the entrance to the driveway.

I had a good conversation with a couple of the Subversion developers, who work at Google. Their Poisoness People talk was particularly entertaining.

The whole thing really got me excited to work on Ardour again.

Also, the hotel was pretty nice. It had this late 50s intellectual motif. Lots of Jackson Pollock style paintings and such.

Google Summer of Code conference!

I’m going to the Google Summer of Code conference this Saturday. I’m flying out to San Jose tomorrow morning.

I’m pretty excited. I’ll be leading a discussion of cheap, homegrown ways to reward contributors to open source projects.

Then, I’ll fly to LA to visit some friends. And since I’ve never been to California before, this is all new to me. Too bad I won’t have time to check out San Francisco. Oh well.

The Mother of All Dubbers

From Harrison’s marketing materials:

The recording software behind the X-Dubber is an open-source, highly scalable program called Ardour. The stable, full-featured Ardour workstation has the capabilities you would expect from a state of the art workstation. By focusing on the specific needs of the post-production community, Harrison has packaged the Ardour workstationinto a robust, streamlined re-recording product that meets the needs ofour world-class customers.

Pretty awesome. Go Team Ardour.