Audacity-Extra

Audacity-Extra is a side project on Sourceforge. It has code for Audacity that is not yet "ready for prime time". Techniques and tricks used in it can be "mined" for later use in Audacity. Audacity-Extra is where the first modular Windows build of Audacity was developed.

Contents

What does it Contain?

From the Sourceforge description of Audacity-Extra as at 20 April 2008, "Audacity-extra provides diverse GUI plug-ins to customize the open source sound editor Audacity. It includes a vowel-sound target-practice display for language learners and an analog waveform data logger for embedded systems." Rather than use CVS, Audacity-Extra exists as source tarballs.

Detailed contents:

First modular build of Audacity.

Allows GUI code to exist in a DLL sharing the same copy of wxWidgets and other libraries.

DLL code can now have GUI elements, that is, make wxWidgets calls. Can also manipulate Audacity GUI elements, such as Wave controls.

(Some) framework moved into a lib-widget-extra dll. That library includes the ShuttleGui class. Everything in it is licensed under wxWidgets, which means it can migrate to wxWidgets in time. The wxWidgets license is more permissive than GPL, so everything that we release as wxWidgets-licensed is automatically also available as GPL-licensed.

A registration scheme for registering and taking up resources. For example, modules can add new menu items and new pages.

Our first experiments with (external) scripting.

Windows only.

Code on the wiki for the Perl side of this, using a named pipe. Example shows 'Amplify' and 'Echo' being used.

Audacity Graphs that exist as wxControls, and don't live in a TrackPanel (very preliminary!)

A modified sizer that proves cell size sizer dragging is possible. It works OK on a simple dialog with a single column and is, shall we say, 'somewhat broken' when used within a wxScroller. This is apparently due to some bugs-or-omissions in wxWidgets sizing mechanism. It is vertical resizing only. No cell rearrangement allowed. No notification or veto functions attempted. See also the modified BoxSizer in wxRL and the 2008 wxDragGridSizer GSoC proposal.

Slider for use alongside a graph to set threshold. Thresholds are shown on the graph as horizontal lines.

Sliders with more than one 'pip' on them.

Audacity 'Hijacker' plug-in that repurposes Audacity to use as a data logger.

wxSerial communications used to get data values - used here in place of portaudio.

Under/over threshold indicators on data values.

Partial implementation of IPMI protocol, encode/decode.

Display of 'Event Log' data.

Self-Test feature that allows one Audacity instance to 'drive' another's data over serial comms (a good test of the serial link).

Screenshot of a Vowel Quadrilateral panel for Audacity. See the Educational Vowel Synthesiser GSoC idea and Language Learning Tools at CLAM. The display has been improved since this screenshot to use translucency and anti-aliased lines using anti-grain. There's also been some preliminary discussion with Inkscape about migrating the Voronoi code to their Libgeom and using SVG.

The Future...

The Audacity simplifier .po file (the one that reduces the menu items shown) may get added to audacity-extra in time.

Alternative themes may be posted to Proposal New Skins whilst they (and the theming feature) are still under development.

Some work on wxFormbuilder to enable easy creation of Audacity themes may be added to audacity-extra, but at the moment it's in too ropey a state even for that.

Experiments with new build system might start in Audacity-extra (safer).

Download

Warning: The code in this download is rather experimental. When mainstream Audacity starts using these principles there are likely to be many many changes. It is also Windows only and based on an older snapshot of Audacity. There is currently no management of the new plug-ins. Audacity just loads any/all that are provided. A decent API for plug-ins is yet to be defined.

A first release of plug-in audacity is available for
download. This is a DLL-based build of Audacity which accepts plug-ins. It contains mod_script_pipe, mod_actel_fusion and lib_widget_extra (required for using plugin-audacity).

Modular Plans

We want modules for all kinds of reasons. One intention is that in the preferences panel you can choose which modules to load and enable. You'll be able to have special pages for audio comparison, or for an audio clips organiser in addition to the main editor page.

Security: Dangerous features like FTP bridge can be left out entirely.

Size: Portable Audacity need only ship the modules it wants.

Releases: Code that is 'not ready' can be dropped more easily. People who want to use bleeding-edge code can choose just the relevant modules.

Re-use: Some of the modules, such as lib-widget-extra and the scripting module, could be used unchanged in other wxWidgets projects. Win-win for everyone. If other groups use our code, we benefit form improvements that they make.

Why not a branch within the Audacity Project?

Audacity-extra is in effect a branch within Audacity already. This way of doing things, using a separate project, keeps the baroque code under development out of the way of main-development. We're not using CVS. For these features it's too early for CVS. Posting tarballs of audacity-extra stuff on the Audacity downloads page would surely confuse our very large number of existing users.