This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
developer_guide [2016/05/23 12:29] be.ing old revision restored (2012/07/11 15:22) |
developer_guide [2019/03/19 03:22] (current) daschuer |
||
---|---|---|---|
Line 7: | Line 7: | ||
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. | 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 [[http://mixxx.org/irc.php|Mixxx IRC channel]] to get live help from developers.** | + | **This guide is a work in progress. If you have any questions, join the [[https://mixxx.zulipchat.com/|Mixxx Zulip chat]] to get live help from developers.** |
====== Prerequisites ====== | ====== Prerequisites ====== | ||
+ | First, you will need to download the code of Mixxx [[using Git]]. | ||
- | 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 [[http://qt.nokia.com/products/|Qt Framework]] which Mixxx uses extensively. | + | 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 [[http://doc.qt.io/|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 recommend you review these sections of the Qt documentation to get familiar with aspects of Qt that we use heavily: | ||
* [[http://qt-project.org/doc/latest/signalsandslots.html|Signals & Slots]] | * [[http://qt-project.org/doc/latest/signalsandslots.html|Signals & Slots]] | ||
+ | |||
+ | If you're not familiar with C++, [[https://www.youtube.com/watch?v=18c3MTX0PK0&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb|The Cherno Project]] on YouTube has a good series dedicated to the core concepts. | ||
+ | |||
+ | 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 [[developer tools#using IDEs|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: | ||
+ | * [[https://wiki.xiph.org/Videos/A_Digital_Media_Primer_For_Geeks|A Digital Media Primer For Geeks]] | ||
+ | * [[https://wiki.xiph.org/Videos/Digital_Show_and_Tell|Digital Show and Tell]] | ||
+ | * [[https://xiph.org/~xiphmont/demo/neil-young.html|24/192 Music Downloads are Very Silly Indeed]] | ||
====== main.cpp ====== | ====== main.cpp ====== | ||
Line 62: | Line 72: | ||
* [[developer_guide_engine|Mixing Engine]] | * [[developer_guide_engine|Mixing Engine]] | ||
* [[developer_guide_engine_player|Deck/Sampler Processing]] | * [[developer_guide_engine_player|Deck/Sampler Processing]] | ||
+ | * [[developer_guide_effects|Effects Framework]] | ||
* [[developer_guide_soundmanager|SoundManager (OS audio interface)]] | * [[developer_guide_soundmanager|SoundManager (OS audio interface)]] | ||
* [[developer_guide_soundsource|SoundSource (per-format audio decoding)]] | * [[developer_guide_soundsource|SoundSource (per-format audio decoding)]] | ||
Line 70: | Line 81: | ||
* [[developer_guide_preferences|Preferences Dialogs]] | * [[developer_guide_preferences|Preferences Dialogs]] | ||
* [[developer_guide_waveform|Waveform]] | * [[developer_guide_waveform|Waveform]] | ||
- | * [[developer_guide_widgets|GUI Widgets]] | + | * [[developer_guide_skins|Skins]] |
- | + | * [[developer_guide_widgets|GUI Widgets (non-skin)]] | |
- | ====== How to write Mixxx Code ====== | + | |
- | + | ||
- | 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. | + | |
- | ===== Getting the Code ===== | + | |
- | + | ||
- | ===== Building Mixxx ===== | + | |
- | + | ||
- | ===== Choosing an IDE or Text Editor ===== | + | |
- | + | ||
- | ===== Filing Bugs ===== | + | |
- | + | ||
- | ===== Submitting Patches ===== | + | |
- | + | ||
- | ===== Using Branches ===== | + |