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 Timecode (FPS) and musical time conversions
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)
53 LV2 Plugins included with Ardour. These are currently mostly
54 independent (a-fluidsynth uses libfluidsynth)
57 GTK theme engine (used by gtk2_ardour)
60 **** PBD dependent libs ****
63 Paul B-D's utility classes. This is the basis for all Ardour specifics.
64 It provides basic concepts and OS abstractions.
68 Control events, control lists, automation evaluation,
69 parameter descriptions, incl MIDI event abstraction
72 (uses libpdb, libevoral)
73 Standard MIDI Files I/O
76 (uses libpdb, ardouralsautil | appleutility, implements libardour interface)
77 Interaction with Operating System's Audio/MIDI API:
78 ALSA, CoreAudio, JACK, PortAudio/ASIO
81 (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
82 Control Surfaces, dynamically loaded by libardour on runtime.
85 (uses libpdb, implements libardour interface)
86 Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
90 Mini Ardour inside Ardour to export audio-files from sessions.
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.
98 (uses pretty much all the libs above)
99 This is it. libardour runs Ardour sessions.
101 **** UI related libs ****
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)
110 (uses libpbd, libgtkmm2ext)
111 Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
114 (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
118 (uses libpbd, libgtkmm2ext, canvas, libardour)
119 Threaded waveform rendering
122 ===== RESOURCE FILES =====
123 These are bundled as-is.
129 Mackie control surface device files
132 Generic MIDI control surface presets
135 Configuration presets for the OSC control surface
138 MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
141 Lua scripts (files with a leading underscore are not bundled)
144 Session templates (currently none)
149 Misc developer oriented documentation files and Doxygen
152 Some .diff files for the build-stack.
155 Various developer tools, most notably packaging scripts
158 ===== Front Ends =====
164 hardour -- headless Ardour, mostly demo-code how to use
165 Ardour without a GUI.
168 command-line tools using libardour (e.g. export)
171 arlua -- commandline interface to libardour
174 wine application top-level (WindowsVST on Linux)