What is 'Audacity-Extra'
Audacity-Extra is a 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.
As of 20th April 2008 the sourceforge description of Audacity-Extra is given as:
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. There is a wiki, but the mailing list and forums are not used. Anyone interested in contributing to it can post to Audacity devel (or here) to ask questions.
What does it Contain?
- 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, i.e make wxWidgets calls. Can also manipulate Audacity GUI elements, e.g. Wave controls.
- (Some) framework moved into a lib-widget-extra dll. That library includes the ShuttleGui class. Everything in it is licensed wxWidgets, which means it can migrate to wxWidgets in time. wxWidgets license is more permissive than GPL, so everything that we release wxWidgets licensed is automatically also available 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 Audacity with Greg Hardesty's (dark field) theme enabled.
- Screenshot of the 'hijacked' Audacity in action.
- Screenshot of a Vowel Quadrilateral panel for Audacity. See "Educational Vowel Synthesiser" GSoC idea at CLAM. This is for language learners. The display has been improved since this screenshot to use translucency and anti-aliased lines using anti-grain. Also some preliminary discussion with Inkscape about migrating the Voronoi code to their Libgeom and using SVG.
- 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 at audacity-extra 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).
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.
- ReUse: 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 Audacity Project?
Audacity-extra is in effect a branch within Audacity already. This way of doing things, i.e. 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 audacity downloads page would surely confuse our very large number of existing users.