GSoC 2007
From MixxxWiki
Google's Summer of Code program provides funding for students who'd like to contribute to open source projects. Mixxx is a good project to work on because it gives you experience working with cross-platform development as well as writing code that's going to power live performances (ie. stability is key).
Contents |
Looking for our GSoC 2008 page? Over here on the new wiki!
Ideas
We've just applied to GSoC 2007, and pending our acceptance as a mentoring organization, here's some cool ideas we've come up with for prospective students to take on:
Improved library/playlist interface
Mixxx's library and playlist interface are currently a little barren. It's functional, but it needs improvement in order to make Mixxx more competitive with commercial DJ applications in this area. A student would be responsible for examining existing library user interfaces in other DJ applications, designing a new library interface for Mixxx, and finally implementing it using the QT graphics toolkit.
Effects
Mixxx's selection of audio effects is currently limited to a single flanger effect, but DJs sometimes use several other effects. A project for a potential student is to implement some additional effects in Mixxx (compressor, reverb). The student would be responsible for learning what these effects do, how they're implemented algorithmically, and finally implementing at least two into Mixxx's mixing engine. Since Mixxx is cross-platform, keep in mind that adding external effects may require multiple platform specific methods (LADSPA and VST, for example).
Improved BPM detection
Mixxx's BPM detection algorithm was originally developed in part by Tue Haste Andersen (one of Mixxx's founders) as part of a post-graduate degree. Tue and Kristoffer Jensen published their algorithm in a paper entitled, "Real-Time Beat Estimation Using Feature Extraction" (2004). The algorithm they devised works moderately well, but there is a substantial amount of room for improvement. A project for a prospective student is to learn how the beat detection algorithm works, analyze Mixxx's implementation of it for any flaws, and take action pending the outcome of that analysis. The student would be responsible for either improving Mixxx's existing BPM detection code, or abandoning it in favour of a different implementation (either integrated into Mixxx, or in an external library.) If a student finds a suitable external library already available that does BPM detection well, they may choose to write code to make Mixxx use that library.
Stability
For live performances, Mixxx must never-ever die. Although Mixxx is pretty good at the moment, there's room for a more serious approach to stability than just fixing crashes as we find them. A student could for example write a stress testing robot for Mixxx which helps weed out memory links and crash bugs automatically. They could also explore possibilities for recovering from crashes automatically and quickly. There is presumably plenty of room for clever ideas here.
Got a better idea?
We're all ears! Please outline your ideas in detail in your student application to GSoC 2007, as per Google's outline.


