1 Ardour Source-Tree layout (July 2017)
4 A collection of libraries and utility functions. While most are shared
5 libraries, they're pretty much exclusive to Ardour.
9 **** Independent libs ****
12 Stripped down (library only) and slightly customized version of fluidsynth
13 use tools/update_fluidsynth.sh to update from upstream
16 Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS)
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
24 Unmodified https://github.com/signal11/hidapi for interaction with some
25 control surfaces (Push2, NI Maschine)
28 Unmodified https://github.com/x42/libltc/ for Linear Timecode en/decoding
31 Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions
34 A exec-wrapper which redirects file-descriptors to be used with vfork(2)
37 Stripped down version of https://github.com/c4dm/qm-dsp
38 The Queen Mary DSP library is used by VAMP Plugins
41 VAMP plugins for audio analysis and offline processing (uses qm-dsp)
44 various utility code for dealing with different kinds of time,
45 including Timecode (FPS) and musical time conversions
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)
54 LV2 Plugins included with Ardour. These are currently mostly
55 independent (a-fluidsynth uses libfluidsynth)
58 GTK theme engine (used by gtk2_ardour)
61 **** PBD dependent libs ****
64 Paul B-D's utility classes. This is the basis for all Ardour specifics.
65 It provides basic concepts and OS abstractions.
69 Control events, control lists, automation evaluation,
70 parameter descriptions, incl MIDI event abstraction
73 (uses libpdb, libevoral)
74 Standard MIDI Files I/O
77 (uses libpdb, ardouralsautil | appleutility, implements libardour interface)
78 Interaction with Operating System's Audio/MIDI API:
79 ALSA, CoreAudio, JACK, PortAudio/ASIO
82 (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
83 Control Surfaces, dynamically loaded by libardour on runtime.
86 (uses libpdb, implements libardour interface)
87 Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
91 Mini Ardour inside Ardour to export audio-files from sessions.
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.
99 (uses pretty much all the libs above)
100 This is it. libardour runs Ardour sessions.
102 **** UI related libs ****
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)
111 (uses libpbd, libgtkmm2ext)
112 Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
115 (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
119 (uses libpbd, libgtkmm2ext, canvas, libardour)
120 Threaded waveform rendering
123 ===== RESOURCE FILES =====
124 These are bundled as-is.
130 Mackie control surface device files
133 Generic MIDI control surface presets
136 Configuration presets for the OSC control surface
139 MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
142 Lua scripts (files with a leading underscore are not bundled)
145 Session templates (currently none)
150 Misc developer oriented documentation files and Doxygen
153 Some .diff files for the build-stack.
156 Various developer tools, most notably packaging scripts
159 ===== Front Ends =====
165 hardour -- headless Ardour, mostly demo-code how to use
166 Ardour without a GUI.
169 command-line tools using libardour (e.g. export)
172 arlua -- commandline interface to libardour
175 wine application top-level (WindowsVST on Linux)