GSoC Ideas

Introduction
The Audacity audio editor is downloaded around 18 million times each year. It's a large, mature and clearly popular open source project. In 2008 and 2009 we participated in Google's Summer of Code, with 5 students in the first year and 2 in the second. If we participate in 2010 we will likely try to mentor more students again.


 * In many ways Audacity has 'grown up' between 2008 and now. We've become more quality conscious.  We've become more aware of both the need to and how to bring on new developers.  Because of this we've changed what we ask for in project proposals.  Your project proposal must be presented as a collection of smaller features each of which is useful in itself.  It's no good proposing one single big change which can't be trialled by end users during the GSoC period.  A mix of bug fixes and new features is good.  In fact in 2009 we insisted on that.


 * A further challenge is that we require that any bigger new features (as opposed to incremental improvements to existing features) will live in plug-ins. This is quite a challenge as at this stage we only have one example plug-in.  That plug-in is the scripting module which was developed in last year's GSoC.  So a big feature means that the plug-in architecture will need to be improved as part of the project.  Fortunately the plug-in architecture can be improved in small steps too.  Your plan will need to be clear about how.

GSoC Ideas
Subheadings for each idea:

Your Proposal
Possible Mentors:
 * TBD

Description: We've found that the best proposals come from students who are passionate about some feature that they want to make happen in Audacity. We're very positive about suggestions. Bear in mind that if it is a big new feature it will almost certainly need to be in a plug-in. You'll need to have something that is usable by the mid term. To be sure of that you might be best off scaling a big proposal down a little and adding to it smaller pieces such as bug fixes and refinements to existing features which you are sure of having done by the mid-term.

Skills:
 * wxWidgets and C++

Difficulty:
 * Easy, Moderate or Hard depending on your proposal.

Early spinoffs from this work:
 * To be specified in the proposal.

Oscilloscope Mode
Possible Mentors:
 * James Crook

Description: Improvements to scrolling and zooming behaviour for close up work. In particular in Oscilloscope mode the 'play' or 'record' line will stay still and the wave form scroll past. At high zooms this will only look good if the section to show with each refresh is chosen carefully, picking up in some easy to compute way on some regularity in the audio sounds. Some performance improvements in drawing the graphs would help make this mode possible on lower powered machines.

Skills:
 * wxWidgets and C++
 * Understanding of how oscilloscopes 'trigger'.

Difficulty:
 * Easy to Moderate.

Early spinoffs from this work:
 * This would no way be enough on its own for a complete proposal. A viable proposal would have multiple parts, and some features would need to be complete and usable by end users by the mid term.

Audio Diff GUI Plug-In
Possible Mentors:
 * James Crook

Description: Ability to compare and align two sound sequences just as one compares text using diff would be a powerful new feature in Audacity. It would greatly facilitate the combining of sounds from multiple 'takes' of the same track. It would also be of use to people looking to identify particular known sounds, e.g. repeated themes in birdsong, in very long recordings.

We proposed implementing Audio Diff including a GUI for it as a project idea for GSoC 2008. It was probably the most challenging of the ideas offered then. This year the focus is on the GUI side of audio diff. An existing audio diff algorithm could be ported or a very very simple one used as a demonstrator. The key extensions are in the interface so that diff becomes a useful tool. The interface will probably need to extend what we already do with multiple clips on one track. It is likely there will be a 'dotplot' display mode and an 'alignment' display mode.

Skills:
 * wxWidgets and C++
 * Familiarity with the diff algorithm.

Difficulty:
 * Moderate to Hard.

Early spinoffs from this work:
 * 'alignment mode' complete and usable by end users at the mid-term.

Vowel Quadrilateral Plug-In
Possible Mentors:
 * James Crook

Description: The vowel quadrilateral is one step in making Audacity more useful as a tool for foreign language learners. Long term we want to make Audacity part of a language learning eco-system. The vowel-quadrilateral project would also act as a driver for creating a real plug-in architecture for Audacity. Part of the project would entail converting some existing features, such as the karaoke display and cleanspeech into plug-ins. The project could be expanded to involve some collaboration with RockBox to work on mark-up of audio for language learners.

Skills:
 * wxWidgets and C++
 * Must develop on both Windows and Linux.

Difficulty:
 * Moderate.

Early spinoffs from this work:
 * Karaoke and cleenspeech mode as plug-ins. Preferences panel supporting plug-in preferences.

Custom Developer Tools
Possible Mentors:
 * James Crook

Description: The key ingredient in this proposal is software that make Audacity developers more effective. This is seen as being of strategic importance to the future of Audacity. Some possibilities include:


 * Collaboration with wxFormBuilder to make a theming tool for easy changing of the skin of Audacity.
 * Collaboration with Melange team to improve Melange as a developer support tool based on the very specific needs of Audacity.
 * Enhanced built-in screenshot tools for documentation.
 * Enhancements to Doxygen output modes so that we can present more relevant and more dynamic information about Audacity architecture to potential developers.

Skills:
 * wxWidgets and C++. Possibly GAE and python too, or PHP depending on project details.
 * Prior experience on project(s) of similar size to Audacity.

Difficulty:
 * Hard.

Early spinoffs from this work:
 * One new tool that is already useful at the half way stage.

Hierarchical Track Panel
Possible Mentors:
 * James Crook

Description: An experimental start has been made on this, but it needs to be taken a lot further. The key feature is to have a tree-like structure for a project with sub-mixes within the tree. The developer will need to break the TrackPanel class into smaller classes to get this level of flexibility.

Skills:
 * wxWidgets and C++

Difficulty:
 * Moderate to Hard.

Early spinoffs from this work:
 * To be specified in the proposal.

More Ideas
See Release Checklist for an understanding of what we need to do...