Monday, August 16, 2010

The Mixxx Class Diagram

Sorry, I just had to post this.

I'm scraping together a press kit for the new 1.8.0 website and I came across this awesome class diagram in the "The Mixxx Paper". Tue Haste Andersen presented Mixxx and that paper at a conference back in 2003, and this diagram represents Mixxx's internals at the time. You're looking at a snapshot inside one of the earliest versions of Mixxx, which has since grown to be the world's most popular free DJ software.

The diagram you're looking at is a standard tool software engineers use called a UML class diagram, and it lets developers effectively communicate their ideas about code layout. If we had to make a new UML class diagram for Mixxx in 2010, it'd probably cover one of the walls of my apartment. Although the MixxxApp, ControlObject, EngineObject, and SoundSource classes still exist (!) and might even be recognizable from their original incarnations, pretty much everything else has changed drastically.

The Mixxx architecture has expanded to accommodate an arbitrary number of sound devices, MIDI controllers, and soon, and arbitrary number of decks. Good things are in store.


  1. I'd like to see how the ULM looks now! :)

  2. Hi,nice Diagramm. Do you know of any c/c++ Audio Programming /Physics books which could help understand the mixxx source code

  3. Anon: Sorry, I don't know of any good audio programming books that are relevant for Mixxx. Most of us picked up audio programming by talking to someone, or just by reading the Mixxx source code. For most of Mixxx's source, you don't even really need to understand anything about audio. There's plenty of areas in Mixxx like the MIDI device and library code that don't require any knowledge of audio programming, so don't feel discouraged if you think you need more background.

    One thing that I can definitely recommend is the Qt documentation. Mixxx uses Qt heavily, and here are some good starting places:

    When you get stuck, don't be afraid to hop on our IRC channel (#mixxx on Freenode) and ask for help! We're all in this together!