This is an old revision of the document!
Welcome to the Mixxx Developer Guide.
The purpose of this guide is to give you, our intrepid contributor, an overview of the Mixxx codebase. Mixxx is a big project with millions of lines of code so it can be daunting at first. If you know how to get around then it really isn't that big and scary.
This guide is a work in progress. If you have any questions, join the Mixxx Zulip chat to get live help from developers.
To understand this guide, you should have a working experience with a systems language like C, C++, or Java. You should be able to get by with trial and error even if you don't know these. It will help significantly if you have some experience with the Qt Framework which Mixxx uses extensively.
We recommend you review these sections of the Qt documentation to get familiar with aspects of Qt that we use heavily:
We also highly recommend that you use a C++ IDE rather than a text editor. Mixxx is a huge project spread across hundreds of source code files. IDEs index the entire code tree and allow you to jump from where a function is used to its definition, even if that is in another file (which it often is). Without this powerful tool, you will spend a lot of time simply finding the code you're looking for instead of understanding what it is doing. We have guides for setting up several IDEs to work on Mixxx, but feel free to use whatever IDE you prefer.
We highly recommend these resources from the Xiph.org Foundation for background information on digital and analog signal processing:
As all C++ programs usually do, Mixxx starts up with a main
function located in src/main.cpp
. It looks roughly like this:
int main(int argc, char** argv) { // start up Mixxx }
You don't need to pay much attention to this section of the code. Most of what it does is:
MixxxApp
class which is what starts up the rest of Mixxx.
MixxxApp
is the class that ties everything Mixxx does together. Mixxx is made up of a variety of subsystems that all accomplish different purposes. You can find all of the code to MixxxApp
in src/mixxx.h
and src/mixxx.cpp
.
In earlier years, MixxxApp
was in charge of way more than it should have been. Over time we've tried to reduce the number of things it is responsible for, but as of Summer 2012 it's still a whopping 1600 lines.
Among the things it does (in no particular order) are:
These are the fundamental building blocks used almost everywhere in Mixxx. You should skim these first so that you aren't confused when you see them in other sections.
Now that you've had a brief overview of the Mixxx codebase. It's time to dive in!
This section will go over how to be a Mixxx developer – building Mixxx yourself, to filing bugs, submitting patches and getting your feature branches merged.