a-fluidsynth: implement LV2_BANKPATCH__notify
[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  - timecode
44    Timecode (FPS) and musical time conversions
45
46  - lua
47    Lua Script interpreter and C++ class abstraction
48    - libs/lua/lua-5.3.3 is unmodified upstream Lua-5.3.3
49    - libs/lua/LuaBridge is a highly customized version of
50      https://github.com/vinniefalco/LuaBridge (C++ bindings)
51
52  - plugins
53    LV2 Plugins included with Ardour. These are currently mostly
54    independent (a-fluidsynth uses libfluidsynth)
55
56  - clearlooks-newer
57    GTK theme engine (used by gtk2_ardour)
58
59
60  **** PBD dependent libs ****
61
62  - pbd
63    Paul B-D's utility classes. This is the basis for all Ardour specifics.
64    It provides basic concepts and OS abstractions.
65
66  - evoral
67    (uses libpbd)
68    Control events, control lists, automation evaluation,
69    parameter descriptions, incl MIDI event abstraction
70
71  - midi++2
72    (uses libpdb, libevoral)
73    Standard MIDI Files I/O
74
75  - backends
76    (uses libpdb, ardouralsautil | appleutility, implements libardour interface)
77    Interaction with Operating System's Audio/MIDI API:
78    ALSA, CoreAudio, JACK, PortAudio/ASIO
79
80  - surfaces
81    (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
82    Control Surfaces, dynamically loaded by libardour on runtime.
83
84  - panners
85    (uses libpdb, implements libardour interface)
86    Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
87
88  - audiographer
89    (uses libpdb)
90    Mini Ardour inside Ardour to export audio-files from sessions.
91
92  - fst
93    (uses libpbd, implements external methods for libardour and gtk2ardour)
94    VST scanner tool and abstraction for Windows-VSTs to be used with
95    wine or actual windows.
96
97  - ardour
98    (uses pretty much all the libs above)
99    This is it. libardour runs Ardour sessions.
100
101  **** UI related libs ****
102
103  - gtkmm2ext
104    (uses libpbd)
105    Utility Library to extend GDK, GTK, and basic abstraction for UIs
106    and event-loops. This library is not limited to the GUI, but also
107    used for other graphical interfaces (e.g. Push2, NI Maschine)
108
109  - canvas
110    (uses libpbd, libgtkmm2ext)
111    Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
112
113  - widgets
114    (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
115    Custom GUI widgets
116
117  - waveview
118    (uses libpbd, libgtkmm2ext, canvas,  libardour)
119   Threaded waveform rendering
120
121
122 ===== RESOURCE FILES =====
123 These are bundled as-is.
124
125 export/
126  Export Presets
127
128 mcp/
129  Mackie control surface device files
130
131 midi_maps/
132  Generic MIDI control surface presets
133
134 osc/
135  Configuration presets for the OSC control surface
136
137 patchfiles/
138  MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
139
140 scripts/
141  Lua scripts (files with a leading underscore are not bundled)
142
143 templates/
144  Session templates (currently none)
145
146
147 ===== MISC =====
148 doc/
149  Misc developer oriented documentation files and Doxygen
150
151 patches/
152  Some .diff files for the build-stack.
153
154 tools/
155  Various developer tools, most notably packaging scripts
156
157
158 ===== Front Ends =====
159
160 gtk2_ardour/
161  The main Ardour GUI
162
163 headless/
164  hardour -- headless Ardour, mostly demo-code how to use
165  Ardour without a GUI.
166
167 session_utils/
168  command-line tools using libardour (e.g. export)
169
170 tools/luadevel/
171  arlua -- commandline interface to libardour
172
173 vst
174  wine application top-level (WindowsVST on Linux)