SourceForge.net

Create account Help
Search   Advanced
 

Project of the Month RSS

July 2004 - Audacity


Audio on PC's has improved dramatically during the past 10 years. Bleeps and bongs have been replaced with 5.1 surround sound. While it's easy to import sound into one's PC by using a USB microphone or ripping a CD, it's not as easy to modify the sound once it's on the hard drive. Enter Audacity. Audacity is an Open Source sound editing program that makes changing complex sounds as easy as using a word processor. Import the sound, view the sound wave, edit the sound and save. It's that easy. Audacity works on Linux, Windows and Mac OS X. It's a great application that has a true global audience -- it has been translated into over 16 languages. During the past 4 years, there have been 2.4 million downloads of Audacity on SF.NET. The SF.net team is proud to make Audacity, SourceForge.net, July 2004 project of the month.

Project Name: Audacity
Founded / Started:
May, 2000

URL: http://audacity.sourceforge.net/
Project page: https://sourceforge.net/projects/audacity/

Description of project:
Audacity is a free cross-platform (Linux, Windows, Mac OS X) audio editor. You can record sounds, play sounds, import and export WAV, AIFF, Ogg Vorbis, and MP3 files, and more. Use it to edit your sounds using cut, copy, and paste (with unlimited undo), mix tracks together, or apply effects to your recordings. It also has a built-in amplitude envelope editor, a customizable spectrogram mode, and a frequency analysis window for audio analysis applications. Built-in effects include Echo, Change Tempo, and Noise Removal, and it also supports VST and LADSPA plug-in effects.

Trove info:
Operating systems: runs natively on Linux, Windows (98 and higher), and Mac OS X (older versions ran on Mac OS 9), thanks to wxWidgets.

Version 1.2.x is available in 16 languages, with partial translations in at least two other languages.

Audacity is written in C++. Many of the sublibraries (some of which are being developed by the same developers) are written in C.

Audacity is licensed under the GPL. Some of the sublibraries use LGPL, BSD, or other GPL-compatible licenses.

Why and how did you get started?
Dominic: I started writing Audacity in 1999 while I was a graduate student in computer science at Carnegie Mellon University. While I was trying to visualize pitch transcription algorithms, I started developing my own tool. Since there weren't any other audio editors for Linux that I liked, and I couldn't afford any good editors for the Mac (my two preferred platforms), I thought it would be fun to turn my tool into a complete editor. My advisor, Roger Dannenberg, was very supportive of the project, and convinced me to turn the editor into a research project.

I came up with an interesting data structure that could do editing operations quickly and wrote a paper on it. By the end of that year, though, I was having a lot of fun with the audio editor and was spending more and more time on it outside of my official research. I came up with the name Audacity and released it on SourceForge.net.

Josh: I got involved right before Christmas 2000. I had been using Linux and open source software for several years, but my skills were just maturing to the point that I could work on a real project. When I came across Audacity I was interested as a user, because at the time there were no good general-purpose audio editors around. When I emailed Dominic volunteering to make a Debian package, he asked if I was interested in helping with general development. I was very excited about the idea, and spent a lot of that Christmas break working on my first two contributions, an Ogg Vorbis importer and the Preferences Dialog.

What is the intended audience?
Dominic: Everyone who works with digital sampled audio. My goal is first for Audacity to do everything that most average users want -- for example converting an LP or cassette to a CD, or recording and mixing their garage band. For people who are more serious about audio, Audacity might not do everything they want, but it's free, so if Audacity does just one thing better than any other tool, it's worth keeping it around. Over time, I hope that Audacity will meet the needs of more and more people.

How many people do you believe are using your software?
Dominic: As lower bounds, there are 650+ people on the audacity-users mailing list, and 11,500+ on our announcement list. As an upper bound, SourceForge.net stats show that Audacity has been downloaded about 2.4+ million times (but that includes some users downloading multiple versions of Audacity). The actual number of users might be somewhere closer to 100,000, then, based on those estimates.

What are a couple of notable examples of how people are using your software?
Dominic:

  • Most touching: someone told me he used Audacity to record a final interview with his father in the last few days before he died.
  • Most inspirational: a teacher in Alaska had her high school students record interviews with their personal heroes and edit them using Audacity.
  • Most politically correct: one parent said that he uses Audacity to bleep out naughty words in popular songs so that he feels comfortable letting his kids listen to them.
  • Most unusual: one person looks for subliminal messages by taking famous recordings and playing them backwards with Audacity.
James: Firework display sequencing. A closed source sound editor would be harder to adapt to this role!

Audacity is also used to prepare self-hypnosis "tapes." Audacity gives a great deal of fine control of the edited recording, changes in the pacing, changes in synchronisation between the music and sound track, "marking out," and placement of hidden commands.

What gave you an indication that your project was becoming successful?
Josh: There was a point in July 2002 where everything seemed to happen at once: in the span of a week, Audacity hit 1 million downloads, version 1.0 was reviewed in the Washington Post, and we were mentioned on TechTV. I was amazed and flattered to see such wide recognition, and I knew that Audacity was really catching on.

What has been your biggest surprise?
Dominic: Getting email from Eric S. Raymond praising Audacity was a happy surprise!

Josh: Finding Audacity on sale at eBay.com under a different name.

What has been your biggest challenge?
Dominic: Tech support. We get dozens of questions a day, and unfortunately very few people have the knowledge and time to answer questions on the mailing list. I answer as much as I can when I have time, and I'm extremely grateful to the other developers and users who have been answering thousands and thousands of questions.

Josh: For me, the biggest challenge is reconciling all the development I want to do and the things that I want to improve with the demands of life -- first school, and now that I'm graduated, my job. I'm one who looks at bugs and limitations and thinks "the real problem here is that our design doesn't handle this issue gracefully; this system needs to be redesigned." However, the reality is that I don't have the time to redesign everything all the time (though I'm trying -- see my progress as I attempt to rewrite a lot of Audacity's back end).

James: A mysterious tool-tip bug (or that's what I believe it to be) under Windows 98 has been a big headache. It seems that Windows 98 gets into trouble if there are too many tool-tips flying around -- but even now I'm unsure exactly why it fails.

Why do you think your project has been so well received?
Dominic: I think that a really big factor is that it's cross-platform. I think that this is a bigger deal than most people realize at first -- how many multimedia applications can you think of that run natively on Mac OS X, Windows, and Linux? The only other ones I can think of are Mozilla/Netscape and RealPlayer. (Huge thank-you to wxWidgets and PortAudio, the main libraries Audacity depends on to run natively on so many platforms.) Anyway, because Audacity is cross-platform, that means that people can recommend it to everyone they know, rather than just people who use the same platform. Besides that, I think that Audacity's easy-to-use interface, decent documentation, and pretty good mailing lists have helped its popularity a lot.

Josh: Audacity has been well-received for the same reason that any project is well-received, I think: It does what people need it to do, with an interface they can figure out. Being cross-platform is definitely another element that gives it wider appeal. Also, the responsiveness of the help list keeps people from walking away just because there's some small thing they can't figure out.

James: It is the Swiss Army Knife for sound. Also it scales well as the size of project increases, rather than getting quagmired or falling over.

Where do you see your project going?
Josh: I am in the midst of rewriting a lot of Audacity's audio back end, along with Dominic and whoever else decides to join in. We're calling this new engine Mezzo. One benefit users will see from this is our first serious venture into real-time capabilities. For the first time, you will be able to use plug-ins in real time without having to apply the effect to disk first. Mezzo should also pave the way for more multichannel capabilities. From a developer's perspective, Mezzo will be completely GUI-independent, making it possible to use parts of the engine with different GUI front ends or without a GUI at all!

James: Audacity's GUI and the wave-form manipulating code it drives will no longer be closely tied to each other -- an improved design that also meets a commonly made request to the Audacity lists, the ability to drive Audacity from an external script.

As the underlying code becomes more generic, Audacity's GUI code will start being used in other projects (e.g. Audacity's history/do/undo mechanism). One route by which code reuse will happen is through backporting generic Audacity features to wxWidgets, the general purpose GUI library on which Audacity is built. GUI code reuse in turn will increase the number of developers contributing to the GUI code. So -- anticipate a period of rapid innovation in the GUI, a more Web-like, more configurable GUI with a plug-in architecture for new components, and with it more new GUI components, such as surround-sound controls, diff displays (for graphically comparing different takes of the same sound), and phonetic diagrams (vowel sound formant analysis).

What's on your project wish list?
Dominic: I'm going to just refer you to our Feature Requests page, because there are far too many ideas for me to mention.

James: 1 -- A feature that allows text and sound to be edited in tandem, in particular allowing easier navigation in a lengthy sound file by navigating the corresponding text.
2 -- An organiser for very large numbers of short sound clips.

What are you most proud of?
Dominic: The features I'm the most proud of are things that 99% of users don't care about. I think I did a really great job with "Import Raw" -- Audacity can open any uncompressed audio file and correctly guess its format 95% of the time by analyzing the bits in the file and figuring out what encoding is the most likely to be an audio signal. I'm also really happy with the interface for some of the effects dialogs, like Noise Removal, Change Pitch, and Change Tempo. They take rather difficult concepts and make them easy enough for beginning users to figure out, while still remaining powerful enough for advanced users to do quite a bit with them.

If you could change something about the project, what would it be?
Dominic: It seems silly, but the worst design decision I think I made was to make the list of tracks a linked list in memory instead of a dynamic array. Changing it at this point would require rewriting thousands of lines of code and I just haven't had the patience to do it yet.

Josh: The legacy of our changing file format. An Audacity project is a directory of small data files and a file that describes how they all fit together. For Audacity 1.0 it was a line-oriented text file with no structure, making it highly implementation-dependent. Then we started using an XML file in 1.2, but it is nothing more than a dump of Audacity's internal object model, so it will change whenever the internals do -- whether they be small changes like adding the ability to make fades linear, or large changes like moving to Mezzo for the back end.

James: I'd have all the developers living in the same city so that we could meet easily. I'd also have a philanthropist donate large sums of money to the project to fund onward development.

How do you coordinate the project?
Dominic: I learned over time that delegating tasks doesn't work. Things work best when people do what they enjoy, and volunteer to do things that need to get done. Sometimes I'll ask for volunteers, but I only get a positive response maybe half the time.

Do you work on the project full-time, or do you have another job?
Dominic: I work full-time for the Jet Propulsion Laboratory, doing machine learning research.

Josh: I have a full-time job that involves programming, and it's sometimes hard to come home and program even more. I am motivated by my intense desire to see Audacity work as I have envisioned it. One trick I've used several times when I am trying to get sound playback working is to use a song that I really like as my source material. That way, hearing the song is my goal and my reward. When it finally works, I take a break and let the song play, and it feels like my victory lap down the Champs-Elysees.

If you work on the project part-time, how much time would you say you spend, per week, on it?
Dominic: I guess it averages out to 10-15 hours a week, but it really varies a lot.

Josh: I would guess 5-15 hours per week.

James: When I have full-time work I lurk on the email lists and contribute next to nothing to development. Between contracts, and when on a roll, I can be putting in 40+ hours per week on it.

What is your development environment like?
Dominic: I've always had both a Mac and a PC. I recently upgraded everything, so I have a Power Mac G5 with dual 2.0GHz processors, and a generic-brand PC with a 2.8GHz Pentium 4. My main audio device is an M-Audio USB Quattro. I used to develop Audacity for all three platforms, but recently I've given up on Windows development and left that up to other developers who use Windows more regularly.

Josh: I was working pretty much exclusively in Linux until I got a PowerBook last Christmas. Now my PowerBook and I are inseparable, and I am using the same tools (gcc, gdb, etc.) but on Mac OS X. From time to time I boot into Debian Linux to make sure all the stuff that's supposed to be portable is. I still have my old x86 box, but I don't turn it on much any more.

James: Good development machine (3GHz); poor internet access (56K modem) SUSE Linux, Windows 98, Windows 2000, Windows XP 99% of development done in Microsoft Visual C

Milestones

  • 2000-05-28 Audacity 0.8 released on SourceForge.net
  • 2002-06-11 Audacity 1.0 (final) and 1.1 (beta) released
  • 2003-08-04 Audacity 1.2.0-pre1 released
  • 2004-03-03 Audacity 1.2.0 released
  • 2004-05-08 Audacity 1.2.1 released
I hope that we'll release at least a couple more versions in the 1.2.x series, with bug fixes and minor new features. We're also busy working on all sorts of amazing new things for the 1.3 branch, which will probably result in a public release in a year or so.

How can others contribute?
Dominic: If you're an experienced Audacity user and you have some time, join the audacity-users and audacity-help mailing lists, and help us answer questions!

Am I allowed to beg for money? There are several experienced Audacity developers who would love to get paid to work on Audacity. If you have a commercial project that could benefit from a custom version of Audacity or know someone who might be able to sponsor us in some way, please contact us!

There are also several other ways to help. We always welcome new developers, and I think we could particularly use some more people interesting in GUI programming. We also welcome translators, documentation writers, testers, and any other way you want to help.

Background of Project Leaders:

Name: Dominic MazzoniDominic Mazzoni
Age: 27
Education: M.S. in Computer Science
Location: Pasadena, CA USA

Name: Joshua HabermanJoshua Haberman
Age: 22
Education: B.S. in Computer Science and Music, University of Puget Sound in Tacoma, WA
Location: Tacoma, WA USA

Name: Matt BrubeckMatt Brubeck
Age: 24
Education: B.S. in Computer Science and Mathematics, Harvey Mudd College
Location: Seattle, WA USA

Key Developers:

James Crook (jamescrook)
Age: 40
Occupation or experience: Real-time software developer
Education: Ph.D. (Software for DNA Analysis
Location: Dublin, Ireland

Vaughan Johnson (vjohnson)

Markus Meyer (msmeyer)

Quote about SF.net?
SourceForge.net is the best place to be if you're working on an open source project. Not only does it offer an amazing array of free services that make it much easier to collaborate on development, but it also associates you with the largest community of open source developers in the world. When I discover a new program, I love finding out it's on SourceForge.net, because that means I immediately know it's really open source, I know exactly where to find the files, I know exactly how to access the CVS repository, and I know exactly how to contact the authors.

Why did you place the project on SF.net?
I wanted others to contribute. Putting a project on SourceForge.net is one of the best ways to make your software truly collaborative, by opening it up to the largest community of open source developers in the world to join and contribute.

How has SourceForge.net helped you?
By bringing so many open source projects under one roof, SourceForge.net has made it easier to see why some open source projects fall at the first hurdle while others go from strength to strength. The primary resources we use are the download server, CVS server, Web server, and mailing lists. SourceForge.net has saved us the trouble of maintaining all of those services, not to mention paying for the enormous bandwidth costs. There have been so many intangible benefits, too, like linking us up with other developers and giving our project credibility.

The number one benefit of using SourceForge.net is:
Associating yourself with the largest community of open source developers in the world.



(Interested in having your project be Project of the Month? Here's how to apply, it's easy: Write a note to staff@sf.net with the subject line: POTM. Mention your project name and why you think your project should be selected.)

Check out our previous projects of the month.