Professional Sound Editing with Audacityby Howard Wen
Need to do sound recording or editing, but find most audio software daunting due to complicated interfaces or price? Then take a look at Audacity: it's free, open source, and packs a bunch of professional-level sound editing features, all under a very intuitive, friendly user interface (Figure 1). By design, Audacity is a user-friendly but still powerful alternative to other sound editors that tend to be complicated to use. What's more, it comes in Linux, Mac OS X, and Windows versions.
"Many other editors use nonstandard GUIs or require you to understand terms and concepts from analog mixing boards. A lot of people use Audacity simply because they gave up trying to get other tools to work," claims the 27-year-old founder and lead developer of Audacity, Dominic Mazzoni, who works for the Jet Propulsion Laboratory in Pasadena, California, as a research programmer and develops Audacity in his spare time.
While a graduate student of computer science at Carnegie Mellon University in 1999, Mazzoni started writing what would evolve into Audacity: he created a program to visualize pitch transcription algorithms, then later decided to expand this tool into an audio editor.
Easy to Use, but Still Powerful
Audacity is different than other music composition programs in that the designers planned from the start to make a cross-platform program (Figure 2); its code runs natively on Linux, Mac OS X, and Windows. (The Mac and Windows versions don't require X11.) Few applications can run natively on all three of these platforms, especially multimedia programs. This works to Audacity's advantage: professional musicians and audio engineers tend to prefer working in a cross-platform environment, because they often need to collaborate with people who use software running on different platforms.
In the Linux world, Audacity may not be as advanced or powerful as other audio editors (which also function as music composers), but it does stand out as one of the easiest to use. Mazzoni and other developers on the Audacity team borrow the best ideas and features from several audio editors and digital audio workstations, but with the goal of presenting everything under an interface accessible even to inexperienced users.
"Several other applications support the same features as Audacity: multitrack recording, nondestructive editing, LADSPA effects. But most of them are designed for audio professionals and take time to learn," says Matt Brubeck, a programmer in Seattle who contributes to the Linux side of development for Audacity. "Audacity's interface is very easy for new users, but it still has many of the key features found in [more] professional applications." (See Figure 3.)
Here are some highlights of Audacity's many features:
- Records directly to the hard drive, with no limit on the recording time
- VU meters help you monitor recording and playback levels
- Dozens of built-in effects and generators
- Commands and tools for cutting, pasting, splicing, mixing, and sample editing
- Unlimited undo feature, with a history dialog
- No limits on the number of tracks or the sample rate of an audio project; any such limitation depends on the capability of your system's hardware
- Imports practically any uncompressed audio format (including WAV, AIFF, and raw headerless) and compressed format (MP3 and Ogg Vorbis); Audacity exports to most of those formats, too
- Allows you to split a project into multiple pieces and save them to several files simultaneously
- Supports multiple plugin formats; this includes plugin effects written in the Nyquist language, a sound and synthesis composition programming language based on Lisp
- All but a few small features have total support across the Windows, Mac OS X, and Linux versions
Crossing Platforms Without Compromises
Mazzoni wanted to design an application that would look and feel like it was native on whatever platform it ran, so he selected C++ as the language in which to write Audacity.
"We wanted the application to be fast and responsive. This ruled out every other high-level language at the time I started development," Mazzoni says. "Today, if I was starting from scratch, I would consider using wxPython, but it would still require tens of thousands of lines of C/C++ code in order to achieve comparable speed and responsiveness."
The team uses the wxWidgets library to build the cross-platform user interface for Audacity. "Thanks to wxWidgets, it is possible to write great cross-platform programs without compromising on anything. I wish more people would go this route," Mazzoni says.
To achieve cross-platform audio input/output, Audacity incorporates PortAudio, chosen because of its powerful and robust design, and the fact that it runs on Linux, Mac, and Windows. In comparison, similar cross-platform libraries, such as Simple DirectMedia Layer and OpenAL, are optimized for playback but not recording.
"I believe that Audacity shows that today there really is no reason anymore to code just for one OS, and that free software tools are a real alternative to company-owned technologies like .NET or Java," says Markus Meyer, one of the Audacity development team's members. Meyer is a 25-year-old freelance programmer in Nuremberg, Germany.
Technical and Nontechnical Limitations
There are, however, a few technical limitations with Audacity:
- Each track can have only one "clip," though this has improved in the program's unstable release
- Aside from volume automation and resampling, Audacity does not support real-time effects; all effects are applied when you choose them
- It supports only stereo output; for example, you can work with multiple tracks, but you can't mix down to Dolby 5.1 surround and listen to it directly from Audacity
- Similarly to the above, effects can operate on only one track at once
"Audacity shouldn't really have built-in limitations. Things like the maximum number of tracks or the size of the project are practically unlimited, and even special provisions exist in the code to allow data to scale beyond limits of the OS," Meyer says.
Perhaps the biggest limitation is not technical but stems from licensing and patent issues. For example, the official release of Audacity does not include VST support because the licensing of the VST SDK, the Audacity developers feel, is "most unclear."
More Feedback, More Features
For future versions of Audacity, Mazzoni and his team have added support for Audio Units (an effects plugin format for Mac OS X) and have started to consider VST support. This will make a much larger library of plugin effects available for Audacity. For the Linux version, the Audacity developers want to improve LADSPA support as the LADSPA community adds support for native GUIs.
Meyer himself is working on new additions to make audio production easier for people working at radio stations. Many of those elements will be of benefit to other users, too: support for multiple clips per track, a clipboard that can handle several clips, and enhanced undo functionality.
"Audacity may not do everything you need in an audio program yet, but if it does just one thing better than any other tool, then why not keep it around along with your other tools?" Mazzoni asks rhetorically. "Keep giving us feedback, and maybe Audacity will eventually surpass these other tools."
Return to the Linux DevCenter.