replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls
[ardour.git] / doc / source_tree_layout.txt
1 Ardour Source-Tree layout (July 2017)
2
3 ===== LIBRARIES =====
4  A collection of libraries and utility functions. While most are shared
5  libraries, they're pretty much exclusive to Ardour.
6
7 libs/
8
9  **** Independent libs ****
10
11  - fluidsynth
12    Stripped down (library only) and slightly customized version of fluidsynth
13    use  tools/update_fluidsynth.sh to update from upstream
14
15  - appleutility
16    Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS)
17
18  - ardouralsautil
19    Utility Class for device-listing (used by the jack and  ALSA backends).
20    Device-reservation comandline tool (linked against libdbus), which is
21    also available from https://github.com/x42/alsa_request_device
22
23  - hidapi
24    Unmodified https://github.com/signal11/hidapi for interaction with some
25    control surfaces (Push2, NI Maschine)
26
27  - libltc
28    Unmodified https://github.com/x42/libltc/ for Linear Timecode en/decoding
29
30  - ptformat
31    Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions
32
33  - vfork
34    A exec-wrapper which redirects file-descriptors to be used with vfork(2)
35
36  - qm-dsp
37    Stripped down version of https://github.com/c4dm/qm-dsp
38    The Queen Mary DSP library is used by VAMP Plugins
39
40  - vamp-plugins
41    VAMP plugins for audio analysis and offline processing (uses qm-dsp)
42
43  - temporal
44    various utility code for dealing with different kinds of time,
45    including Timecode (FPS) and musical time conversions
46
47  - lua
48    Lua Script interpreter and C++ class abstraction
49    - libs/lua/lua-5.3.3 is unmodified upstream Lua-5.3.3
50    - libs/lua/LuaBridge is a highly customized version of
51      https://github.com/vinniefalco/LuaBridge (C++ bindings)
52
53  - plugins
54    LV2 Plugins included with Ardour. These are currently mostly
55    independent (a-fluidsynth uses libfluidsynth)
56
57  - clearlooks-newer
58    GTK theme engine (used by gtk2_ardour)
59
60
61  **** PBD dependent libs ****
62
63  - pbd
64    Paul B-D's utility classes. This is the basis for all Ardour specifics.
65    It provides basic concepts and OS abstractions.
66
67  - evoral
68    (uses libpbd)
69    Control events, control lists, automation evaluation,
70    parameter descriptions, incl MIDI event abstraction
71
72  - midi++2
73    (uses libpdb, libevoral)
74    Standard MIDI Files I/O
75
76  - backends
77    (uses libpdb, ardouralsautil | appleutility, implements libardour interface)
78    Interaction with Operating System's Audio/MIDI API:
79    ALSA, CoreAudio, JACK, PortAudio/ASIO
80
81  - surfaces
82    (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
83    Control Surfaces, dynamically loaded by libardour on runtime.
84
85  - panners
86    (uses libpdb, implements libardour interface)
87    Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
88
89  - audiographer
90    (uses libpdb)
91    Mini Ardour inside Ardour to export audio-files from sessions.
92
93  - fst
94    (uses libpbd, implements external methods for libardour and gtk2ardour)
95    VST scanner tool and abstraction for Windows-VSTs to be used with
96    wine or actual windows.
97
98  - ardour
99    (uses pretty much all the libs above)
100    This is it. libardour runs Ardour sessions.
101
102  **** UI related libs ****
103
104  - gtkmm2ext
105    (uses libpbd)
106    Utility Library to extend GDK, GTK, and basic abstraction for UIs
107    and event-loops. This library is not limited to the GUI, but also
108    used for other graphical interfaces (e.g. Push2, NI Maschine)
109
110  - canvas
111    (uses libpbd, libgtkmm2ext)
112    Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
113
114  - widgets
115    (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
116    Custom GUI widgets
117
118  - waveview
119    (uses libpbd, libgtkmm2ext, canvas,  libardour)
120   Threaded waveform rendering
121
122
123 ===== RESOURCE FILES =====
124 These are bundled as-is.
125
126 export/
127  Export Presets
128
129 mcp/
130  Mackie control surface device files
131
132 midi_maps/
133  Generic MIDI control surface presets
134
135 osc/
136  Configuration presets for the OSC control surface
137
138 patchfiles/
139  MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
140
141 scripts/
142  Lua scripts (files with a leading underscore are not bundled)
143
144 templates/
145  Session templates (currently none)
146
147
148 ===== MISC =====
149 doc/
150  Misc developer oriented documentation files and Doxygen
151
152 patches/
153  Some .diff files for the build-stack.
154
155 tools/
156  Various developer tools, most notably packaging scripts
157
158
159 ===== Front Ends =====
160
161 gtk2_ardour/
162  The main Ardour GUI
163
164 headless/
165  hardour -- headless Ardour, mostly demo-code how to use
166  Ardour without a GUI.
167
168 session_utils/
169  command-line tools using libardour (e.g. export)
170
171 tools/luadevel/
172  arlua -- commandline interface to libardour
173
174 vst
175  wine application top-level (WindowsVST on Linux)