This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
developer_guide [2012/07/09 13:03] rryan [Modules] |
developer_guide [2019/03/19 03:22] (current) daschuer |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Mixxx Developer Guide ====== | ||
+ | |||
Welcome to the Mixxx Developer Guide. | Welcome to the Mixxx Developer Guide. | ||
- | ====== Introduction ====== | + | ====== Overview ====== |
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://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: | ||
+ | * [[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. | ||
- | 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. | + | 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 57: | Line 71: | ||
* [[developer_guide_shoutcast|Shoutcast]] | * [[developer_guide_shoutcast|Shoutcast]] | ||
* [[developer_guide_engine|Mixing Engine]] | * [[developer_guide_engine|Mixing Engine]] | ||
+ | * [[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 64: | Line 80: | ||
* [[developer_guide_keyboard|Keyboard Control]] | * [[developer_guide_keyboard|Keyboard Control]] | ||
* [[developer_guide_preferences|Preferences Dialogs]] | * [[developer_guide_preferences|Preferences Dialogs]] | ||
- | * [[developer_guide_widgets|GUI Widgets]] | + | * [[developer_guide_waveform|Waveform]] |
+ | * [[developer_guide_skins|Skins]] | ||
+ | * [[developer_guide_widgets|GUI Widgets (non-skin)]] |