User Tools

Site Tools


developer_guide

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
developer_guide [2012/07/09 13:00]
rryan [main.cpp]
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://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:
 +  * [[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 45: Line 59:
   * Initializes and displays the Mixxx GUI   * Initializes and displays the Mixxx GUI
  
-====== ​Modules ​======+====== ​Core Infrastructure ====== 
 + 
 +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. 
 + 
 +  * [[developer_guide_control|Control System (ControlObjects)]] 
 +  * [[developer_guide_config|Config System (ConfigObject,​ ConfigKey)]] 
 + 
 +====== Major Subsystems ​======
  
   * [[developer_guide_library|Library]]   * [[developer_guide_library|Library]]
   * [[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_control|Control System (ControlObjects)]] 
   * [[developer_guide_soundsource|SoundSource (per-format audio decoding)]]   * [[developer_guide_soundsource|SoundSource (per-format audio decoding)]]
   * [[developer_guide_analysers|Analysers (beat detection, key detection, waveform analysis, replaygain, etc.)]]   * [[developer_guide_analysers|Analysers (beat detection, key detection, waveform analysis, replaygain, etc.)]]
   * [[developer_guide_vinyl_control|Vinyl Control]]   * [[developer_guide_vinyl_control|Vinyl Control]]
   * [[developer_guide_controllers|Controllers (MIDI, HID, etc.)]]   * [[developer_guide_controllers|Controllers (MIDI, HID, etc.)]]
-  * [[developer_guide_keyboard|Keyboard]] +  * [[developer_guide_keyboard|Keyboard ​Control]] 
-  * [[developer_guide_preferences|Preferences]]+  * [[developer_guide_preferences|Preferences ​Dialogs]] 
 +  * [[developer_guide_waveform|Waveform]] 
 +  * [[developer_guide_skins|Skins]] 
 +  * [[developer_guide_widgets|GUI Widgets (non-skin)]]
developer_guide.1341853232.txt.gz · Last modified: 2012/07/09 13:00 by rryan