Audio on PC’s has improved dramatically during the past 10 years. Bleeps and bongs have been replaced with 5.1 surround sound. Whileit’s easy to import sound into one’s PC by using a USB microphone orripping a CD, it’s not as easy to modify the sound once it’s on thehard drive. Enter Audacity. Audacity is an Open Source sound editingprogram that makes changing complex sounds as easy as using a wordprocessor. Import the sound, view the sound wave, edit the soundand save. It’s that easy. Audacity works on Linux, Windows and MacOS X. It’s a great application that has a true global audience — ithas been translated into over 16 languages. During the past 4 years,there have been 2.4 million downloads of Audacity on SF.NET. TheSF.net team is proud to make Audacity, SourceForge.net, July 2004project of the month.
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.
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 andopen source software for several years, but my skills were just maturingto the point that I could work on a real project. When I came acrossAudacity I was interested as a user, because at the time there were nogood general-purpose audio editors around. When I emailed Dominicvolunteering to make a Debian package, he asked if I was interested inhelping with general development. I was very excited about the idea, andspent 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?
- 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 beharder to adapt to this role!
Audacity is also used to prepare self-hypnosis “tapes.” Audacity gives agreat deal of fine control of the edited recording, changes in thepacing, changes in synchronisation between the music and soundtrack, “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 wasamazed and flattered to see such wide recognition, and I knew thatAudacity 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 todo and the things that I want to improve with the demands of life — firstschool, and now that I’m graduated, my job. I’m one who looks at bugs andlimitations and thinks “the real problem here is that our design doesn’thandle this issue gracefully; this system needs to be redesigned.”However, the reality is that I don’t have the time to redesign everythingall 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 ifthere are too many tool-tips flying around — but even now I’m unsureexactly 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 doeswhat people need it to do, with an interface they can figure out. Beingcross-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 thesize of project increases, rather than getting quagmired or fallingover.
Where do you see your project going?
Josh: I am in the midst of rewriting a lot of Audacity’saudio back end, along with Dominic and whoever else decides to join in.We’re calling this new engine Mezzo. One benefit users will see fromthis is our first serious venture into real-time capabilities. For thefirst time, you will be able to use plug-ins in real time without having toapply the effect to disk first. Mezzo should also pave the way for moremultichannel capabilities. From a developer’s perspective, Mezzo will becompletely GUI-independent, making it possible to use parts of the enginewith different GUI front ends or without a GUI at all!
James: Audacity’s GUI and the wave-form manipulating code it driveswill no longer be closely tied to each other — an improved designthat also meets a commonly made request to the Audacitylists, the ability to drive Audacity from an external script.
As the underlying code becomes more generic, Audacity’sGUI code will start being used in other projects(e.g. Audacity’s history/do/undo mechanism). One routeby which code reuse will happen is through backporting genericAudacity features to wxWidgets, the general purpose GUI library onwhich Audacity is built. GUI code reuse in turn willincrease the number of developers contributing to the GUIcode. So — anticipate a period of rapid innovation in the GUI,a more Web-like, more configurable GUI with a plug-inarchitecture for new components, and with it more newGUI components, such as surround-sound controls, diffdisplays (for graphically comparing different takes of thesame sound), and phonetic diagrams (vowel sound formantanalysis).
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 bynavigating 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 adirectory of small data files and a file that describes how they all fittogether. For Audacity 1.0 it was a line-oriented text file with nostructure, making it highly implementation-dependent. Then we startedusing an XML file in 1.2, but it is nothing more than a dump of Audacity’sinternal object model, so it will change whenever the internals do –whether they be small changes like adding the ability to make fadeslinear, 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 couldmeet easily. I’d also have a philanthropist donate large sums of moneyto 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 sometimeshard to come home and program even more. I am motivated by my intensedesire to see Audacity work as I have envisioned it. One trick I’ve usedseveral times when I am trying to get sound playback working is to use asong that I really like as my source material. That way, hearing the songis my goal and my reward. When it finally works, I take a break and letthe 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 andcontribute next to nothing to development. Between contracts, and whenon 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 PowerBooklast Christmas. Now my PowerBook and I are inseparable, and I am using thesame tools (gcc, gdb, etc.) but on Mac OS X. From time to time I boot intoDebian 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 XP99% of development done in Microsoft Visual C
- 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.xseries, with bug fixes and minor new features. We’re also busy workingon all sorts of amazing new things for the 1.3 branch, which will probablyresult 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.