Creating your own Plug-in
Audacity is designed to support plug-ins that extend its functionality.
|Type of Plug-in||Language|| Audacity
|To Set Up for Writing Your Own|
|Nyquist||Nyquist||0.9+||Nyquist is based on XLisp, and Audacity has a built-in interpreter. Nyquist plug-ins are text files with file type .ny. A separate debugger is also available.|
|Batch Chain||None||1.3.0+||Built into Audacity. The 'Edit Chains...' command in the file menu allows you to select a sequence of existing commands, set their parameters, and select a set of files to apply them to. Simple, but goes a long way.|
|External Script||Perl||1.3.8+||This was originally based on batch chains and has been much extended. You will need a distribution of Perl, such as on Windows ActivePerl.|
|LADSPA||C/C++||0.9+||Needs LADSPA SDK (Open Source) to develop.|
|VST||C/C++||0.9+||Compile Audacity with VST enabled. Needs VST SDK (proprietary) to develop, for which you need a license agreement.|
|Vamp||C/C++||1.3.4+||Vamp SDK is provided as part of Audacity source code.|
|Hi-Jacker||C/C++||latest||Same as for Audacity (e.g., development under Windows), i.e. MSVC C/C++, wxWidgets, Audacity source code retrieved from code repository.|
|Audacity Modules||C/C++||1.3.5+, but latest is best||Same as for Audacity (e.g., development under Windows), i.e. MSVC C/C++, wxWidgets, Audacity source code retrieved from code repository.|
How to choose which kind? It depends so much on what you want to do and what your programming background is. The big choice is between C/C++ or a scripting language. Generally, you can get started much much faster with any of the scripting languages, however you lose some flexibility in what you can do. LADSPA, VST and Vamp plug-ins are all usable in other programs besides Audacity, which is a big plus. However you can only use them as effects to alter sound or analyse it, not to add new toolbars to Audacity.
There isn't yet a lot of documentation on developing for Audacity. We're gradually improving our developer guide.
There is a built-in XLisp interpreter that is used mainly for creating new sound effects. It can also be used to create labels. It's mature, stable, and has been in Audacity from the start. See Nyquist. Updated Nyquist documentation is available in the German forum (documents are in English language).
Limited ability to do 'the same thing' to a large number of files. Originally written for cleaning up lots of audio tapes, applying noise removal, removing long silences too and converting to mp3. Stable, but limited to 'doing the same thing' over and over.
Still somewhat experimental. More information here. It's best to ask on the developer list before getting into this.
Sound effects. C or C++, Ladspa Plug-in. GUI is built from simple instructions.
VST Plug-in. GUI is built by the plug-in directly.
C or C++. GUI is built from simple instructions. Similar in concept to LADSPA except this it is designed particularly for analysis of sound, so for example finding particular words in a spoken text. Vamp is a recent addition to Audacity. CVS head now has Vamp support compiled in by default. Vamp is written by Chris Cannam who developed it for his Sonic Visualiser program. The plug-ins work both in his visualiser and in Audacity. If you're interested in developing a new Vamp plug-in for Audacity you should join the .
Plug-in that takes over the entire GUI of Audacity and uses the underlying services for its own ends (not to be confused with the POSIX sound server called ). Hi-Jacker has been used successfully in the Audacity-Extra project on Sourceforge. The code to support hijacking plug-ins is in CVS HEAD, but is not compiled in by default.
Work in progress, a proof-of-concept on Windows, Linux and Mac. It's a still experimental method for adding any feature to Audacity as a plug-in. The plug-in can use any exposed feature of Audacity, and of wxWidgets, and it will have a more complete API for interaction with the Audacity program as it develops.
We highly recommend the main trunk of the current code repository as the basis for developing new modules. Developers must use the Audacity code base from version 1.3.5 or later to get this support. See Modular_Architecture_Initiative for an overview.