As a long time musician, or so I like to call myself, and a free software enthusiast, I have personally found Audacity to be an indispensable tool for mastering mixes. Other people find a variety of uses for it, including deployment into public radio stations, restoring LPs for CD-burning, and more. Audacity has been in continuous development since 1990. It is a multi-track recorder, mixer, wave form visualization tool, and editor all rolled into one. It's the Free Software equivalent of Protools, Soundforge, and Cakewalk, albeit without the midi portion of any of those programs.
Recently I exchanged some email with Dominic Mazzoni, the Lead Developer and founder of Audacity. As a long-time lurker on the Audacity-devel mailing list, I've come to be familiar with Dominic as one of those kind, gentle spirits who leads first with his coding and second with his ideas, and is an inspiration to us all. Here, then, is the email interview with Dominic Mazzoni:
Q: In the Audacity FAQ, it says "Audacity was started in the fall of 1999 by Dominic Mazzoni while he was a graduate student at Carnegie Mellon University in Pittsburgh, PA, USA. He was working on a research project with his advisor, Professor Roger Dannenberg, and they needed a tool that would let them visualize audio analysis algorithms. Over time, this program developed into a general audio editor, and other people started helping out." Would you provide some information on the nature of the tool? How did it turn into a general audio editor? Was it a graded assignment, and if so, what grade did you get?
My advisor, Roger [DF: Roger Dannenburg is the mastermind behind the Nyquist scripting library which is now embedded in Audacity and is just one way to extend Audacity's sound processing capabilities], was very supportive of the project, and convinced me to turn the editor into a Computer Science research project. So I came up with an interesting data structure that could do editing operations quickly, and we 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. It was pretty limited at the time, but it was cross-platform, which was a big deal, and it worked well enough to generate interest. From that point on I worked on it mostly as a hobby, rather than as a part of my research, though I did find it useful for my research, too.
Q: Audacity has been gaining a lot of traction in the market, lately. How do you feel about that? Do you ever get the "15-minutes of fame" feeling, or is it something you ever really think about?
Q: How do you feel, and how do you respond when users show up that want specific features found only in specific commercial applications?
I've been a Mac user since the very beginning (my parents bought an original Macintosh in 1984) so I've always been a fan of intuitive, "discoverable" interfaces. My main complaint with other audio editors is that too often they are trying to emulate the interfaces of analog mixing boards, which I didn't think was very intuitive for the rest of us. I wanted to create an interface that anyone computer-literate could figure out how to use on their own.
Q: For that matter, even the digital mixing boards are trying to emulate the analog interfaces when they don't really have to. :) Are there any specific areas where you think Audacity could really take advantage of the fact that it's software for a general use computer to make some really nice interface?
If you look closely, you'll see lots of subtle differences in the way that Audacity operates. Unlike almost every other audio program I've seen, Audacity lets you have multiple tracks, each with a different sample format (16-bit/32-bit) and sample rate (44100 Hz, etc) - and Audacity automatically mixes them on the fly. It also has a rather unique built-in amplitude envelope editor, and one of the best frequency analysis views.
Q: How would you define Audacity's target market?
Audacity is a particularly good choice when it's helpful to have a truly cross-platform tool, such as in a mixed-operating-system school computer lab - or when the licensing cost of other tools is prohibitive, such as in third-world countries or at public radio stations.
Q: I understand that Audacity uses a block file approach, where instead of manipulating each track as one large file you guys have broken each track down into many small files. Would you tell us more about this setup? Why did you chose it over other methods? What are the benefits and drawbacks with using block files?
Q: How about some more information on Edit Decision Lists?
I knew I could do better using my Computer Science knowledge, and soon I had worked out a method that involves splitting each track into small pieces - say about 2 MB each. If you allow each piece to be any size from 1 MB to 2 MB, but no smaller or larger, then it turns out you can implement all of the basic editing operations (cut, paste, etc.) without ever having to modify more than 5 pieces ("blocks") at a time. This was what I ended up writing a paper on.
In doing the research for the paper, I learned about Edit Decision Lists and other techniques for nondestructive audio editing. In the end I decided while there were some advantages to EDLs, there were just as many advantages to the blocked-file approach, so it would be better to keep Audacity unique and capitalize on the strengths of this approach, rather than switch to EDLs just to copy everyone else.
One advantage of the blocked-file approach is that you can have multiple "references" to the same data in multiple places. So duplicating a track in Audacity, or creating a loop (using the Repeat effect), are both virtually instantaneous. Also, because Audacity never splits files smaller than about a megabyte, it doesn't slow down trying to playback a region that contains hundreds of edits, which can be a problem with EDL-based editors.
Q: More recently, there has been a bit of buzz over a new back end implementation of Audacity's work code in a library that has been named "Mezzo". Would you tell us a bit about Mezzo?
Mezzo is a rewrite of all of the major core features of Audacity aside from the graphical interface. While Audacity is distributed under the terms of the GNU General Public License, which means that the source code can only be borrowed for use in other GPL or GPL-compatible programs, Mezzo will be released under a very unrestrictive BSD-like license that will allow it to be used by almost anyone. We hope that this will encourage many more people to use Mezzo in projects unrelated to Audacity, including commercial products, which will lead to Mezzo being much more robust and stable.
Well, thank you very much Dominic for your time, both in this interview and your time spent bringing us Audacity. It definitely fills a hole for many of us, and as usual, there isn't really any way to properly thank you other than continuing to use and support Audacity.
Database SoftwareThis week saw a swing back toward enhancements to existing systems rather than new functionality, although given that some of these changes will make old functions now usable for new people I guess that is in the eye of the beholder."
InteroperabilityThis is the first preview release of the Samba 3.0.5 code base and is provided for testing only. This release is *not* intended for production servers. Use at your own risk. There have been several bug fixes since the 3.0.4 release that we feel are important to make available to the Samba community for wider testings."
LibrariesCommon C++ is out. "Common C++ is a C++ class library that abstracts various system services in a portable manner, thereby making the creation of portable applications much easier. It is portable code, with very low runtime overhead, that works well on a very wide range of target platforms and C++ compilers in everyday use." Annodex is an open standards based technology that extends the World Wide Web's hyperlinking, searching, and compositing infrastructure to time-continuous data, enabling video surfing, searching for clips of audio and video files using ordinary Web search engines, and on-the-fly composition of a video on a Web server from previously annodexed clips."
Web Site Developmenthas been announced. "Back-End CMS is a flexible, multi-lingual template driven PHP/MySQL CMS which includes in-line editing and text, html, wiki or WYSIWYG editing interfaces. Release 0.7.0.5 is a major release and includes a serious security fix and a great many added features. We have extended our multi-lingual support to offer better support forunicode fonts like Persian, Arabic and Hebrew." has been released. "The focus of this release was to address bugs. There have also been several user submitted patches applied." Quixote, a Python-based web development platform, is out with bug fixes. See the changes document for details. ZopeMag Weekly News has been published. Take a look for news on the Zope web development platform.
Web Servicesinvestigates WSDL 2.0 on O'Reilly. "The WG published its WSDL 2.0 working drafts on 26 March 2004. This is a significant milestone in the progress of WSDL. In this article, I discuss the changes that were made to the WSDL 1.1 specification and other major improvements to the service description language."
Audio ApplicationsArdour, a multi-track audio recording utility, is out. The project status page says: "clearing mantis of as many bug reports as possible". The long-awaited 1.0 version is now projected for release around June 30.
Desktop EnvironmentsKDE-CVS-Digest is online. Here's the content summary: "Security fixes in URI handlers. KAddressbook now handles IM addresses. Kppp now can handle multiple modem configurations. KUser now can use LDAP, Samba and MD5 Shadow passwords." Quickies posting that list a slew of new and updated applications for KDE. has been announced. "There won't be any binary packages for this release, everyone using Kindergarten is asked to compile it with --enable-debug, so that we can get valuable feedback."
Electronicslatest news from the gEDA project includes a new development snapshot of the Covered Verilog code coverage analysis tool, and a new gEDA talks page with slides from a recent presentation. is available. Changes include a new bus notation handling capability and bug fixes.
Financial Applicationsis available. "Release 2.5.1c is the first release with transactions based on Workflow. In addition to great customization flexibility, it is also a big step towards database independence as Java replaced PL/SQL."
GamesWorldForge Weekly News has been published. Take a look to see the current status of the WorldForge game project.
Graphicshas been announced. This release features a plug-in to selectively sharpen an image, removal of unused plug-ins, bug fixes, and more. is available. "This package contains a collection of layout algorithms (radialtree, circle, annealing, gem, moen, spring, sugyiama, tree), graph algebra stuff (shortest path, minimum spanning tree), and a number of useful utilities (mostly cleaned-up code from JGraphpad) for JGraph 4.0."
GUI PackagesIt includes a number of changes since the last pygtk release; We'd really appreciate testing and bug reports on this release; please take the time out to download and test it to ensure it works for your application[s]."
InteroperabilityWine Traffic is online with the latest Wine project development news.
Medical Applicationsan announcement for the merging of several projects into the Care2x project. "The Care2x project now becomes an "Integrated Healthcare Environment", not just a hospital information system." an announcement that states that the OpenEMR Electronic Medical Record system is now available under the Subversion version management system.
Office SuitesThis package contains the Gnome integration work for OpenOffice.org, and a much simplified build wrapper, making an OO.o build / install possible for the common man. It is a staging ground for up-streaming patches to OO.o. This release is mostly a snapshot of the (in-progress) merge of the SuSE patch-set, and adding a SuSE build target / distro etc".
Word Processorsthe announcement for version 2.0.7 of the AbiWord word processor. "While our current development series is bound to be a great success, we have not forgotten our stable releases. Therefore, the AbiWord development team is proud to release AbiWord v2.0.7. This release benefits greatly from the feature freeze currently active on our development series, which means that all our efforts are focussed on fixing bugs; bugs that might be present the stable versions as well." AbiWord Weekly News has been published. Read about all of the latest AbiWord word processor developments.
Miscellaneoushas been released with minor changes. "OpenLP is a powerful lyrics projection application, specifically for use in church worship services. It will include easy & instant switching between slides, customisable backgrounds, a full song database & support for guitar chords and tablature (in v2)." has been announced. "VXL is a set of multi-platform C++ libraries for computer vision research and deployment."
Languages and Tools
HaskellHaskell Communities & Activities Report for May 25, 2004 is available. Thanks to Duncan Coutts.
Javawrites about Ant configuration issues on O'Reilly. "Among the many feats it can perform, Ant can save your team from having to have all of the same files in all of the same places. As Grant Bremer illustrates, flexible Ant configurations will make your build work among many developers, operating systems, and will even deploy to app servers with different file structures." works with distributed object management frameworks on IBM's developerWorks. "Many enterprise Java technology developers build their own object management infrastructures to improve application performance. However, traditional object pools encounter problems in applications that run across distributed JVMs on multiple physical machines. In this article, Zhengrong Tang presents an object management framework that uses the concept of scopes to handle distributed systems with ease." FindBugs on IBM's developerWorks. "Static analysis tools promise to find existing bugs in your code without requiring much effort on the part of the developer. Of course, if you've been programming for long, you know those promises don't always pan out. Even so, good static analysis tools are a valuable addition to your toolbox. In this first of a two-part series, Senior Software Engineer Chris Grindstaff looks at how FindBugs can help improve the quality of your code and eliminate bugs lying in wait." part two of a series on Java nested classes. "Robert Simmons continues his efforts to clarify confusion over the use of nested classes in Java. In this week's installment, excerpted from Chapter 6 ("Nested Classes") of Hardcore Java, Robert discusses the somewhat troublesome limited-scope inner classes; one specific type within this category, known as anonymous classes; and the problems programmers encounter with limited-scope classes."
PerlThis Week on perl5-porters is online with the latest Perl 5 news.
PHPPHP has been announced. "This is the first release candidate and should have a very low number of problems and/or bugs. Nevertheless, please download and test it as much as possible on real-life applications to uncover any remaining issues." Change information is available in the NEWS file. the second article. "The first part of this article, "Real-World PHP Security", appeared in the April 2004 issue of Linux Journal and covered the subject of secure PHP development. This article takes you, the professional PHP developer, one step further, by providing detailed explanations and reliable source code that illustrate the steps to follow in order to develop successful PHP applications."
Pythonpython-ldap is out: "python-ldap provides an object-oriented API to access LDAP directory servers from Python programs. Mainly it wraps the OpenLDAP 2.x libs for that purpose." Dive Into Python has been published. See the Revision history document for change information.
XMLintroduces Atom on IBM's developerWorks. "The Web has always included sites that present series of articles, events, and other postings which are meant to be shared and cross-referenced. With large parts of the Web becoming conversational communities, many in these communities have come together to work on an XML-based standard for such interchange and cross-reference. Atom is the product of this effort -- a format and API for exchanging Web metadata." explores SAX on DevChannel. " An application developer can choose any one of a number of strategies to read and use an XML document. In some very simple examples a script containing a number of regular expressions might do the job, but normally a more rigorous technique is required. The Simple API for XML (SAX) is one of the two key techniques for analysing and processing XML documents (the other is the more complicated Document Object Model (DOM))." part two. "He looks at Mozilla's XML-based User Interface Language (XUL) which allows you to write applications that run without any particular dependency on the choice of underlying operating system. This may seem strange at first, but you'll soon see that this Mozilla project offers powerful tools for GUI building that allow you to develop for an extensive base of installed users."
Cross AssemblersOpenCollector site. This version works with GTK2, and includes bug fixes.
Test SuitesThe Test Environment Toolkit (TET), is a multi-platform uniform test scaffold, into which non-distributed and distributed test suites can be incorporated. TET supports tests written in C, C++, Perl, Tcl, Shell (sh , bash), Python, POSIX shell and Korn Shell."
MiscellaneousProthon is: "A classless prototype-based programming language a la Self with the sensibilities of Python."
Page editor: Forrest Cook
Next page: Linux in the news>>
Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds