ardour/doc/source_tree_layout.txt

198 lines
5.7 KiB
Plaintext
Raw Normal View History

2020-04-28 15:10:07 -04:00
Ardour Source-Tree layout (April 2020)
2020-04-27 10:15:52 -04:00
===== Front Ends =====
gtk2_ardour/
The main Ardour GUI -- This is where most of the complexity is :)
It is cleanly separated from the backend and processing engine.
headless/
hardour -- headless Ardour, mostly demo-code how to use Ardour without a GUI.
session_utils/
command-line tools using libardour (e.g. export)
luasession/
arlua -- commandline interface to libardour
vst
wine application top-level (WindowsVST on Linux)
===== LIBRARIES =====
A collection of libraries and utility functions. While most are shared
libraries, they're pretty much exclusive to Ardour.
libs/
**** Independent libs ****
- appleutility
Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS)
- ardouralsautil
Utility Class for device-listing (used by the jack and ALSA backends).
Device-reservation comandline tool (linked against libdbus), which is
also available from https://github.com/x42/alsa_request_device
2020-04-27 10:15:52 -04:00
- clearlooks-newer
GTK theme engine (used by gtk2_ardour)
- fluidsynth
Stripped down (library only) and slightly customized version of fluidsynth
use tools/update_fluidsynth.sh to update from upstream
- hidapi
Unmodified https://github.com/signal11/hidapi for interaction with some
control surfaces (Push2, NI Maschine)
- libltc
Unmodified https://github.com/x42/libltc/ for Linear Timecode en/decoding
2020-04-27 10:15:52 -04:00
- lua
Lua Script interpreter and C++ class abstraction
- libs/lua/lua-5.3.5 is unmodified upstream Lua-5.3.5
- libs/lua/LuaBridge is a highly customized version of
https://github.com/vinniefalco/LuaBridge (C++ bindings)
- midi++2
2020-04-28 14:02:07 -04:00
(uses libpdb)
MIDI parsing, MIDNAM handling, Port abstraction for I/O
2020-04-27 10:15:52 -04:00
- ptformat
Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions
2020-04-27 10:15:52 -04:00
- temporal
various utility code for dealing with different kinds of time,
including Timecode (FPS) and musical time conversions
- qm-dsp
Stripped down version of https://github.com/c4dm/qm-dsp
The Queen Mary DSP library is used by VAMP Plugins
- vamp-plugins
VAMP plugins for audio analysis and offline processing (uses qm-dsp)
2020-04-27 10:15:52 -04:00
- vamp-pyin
VAMP plugins for pitch and note-tracking (uses qm-dsp), offline analyis
2020-04-27 10:15:52 -04:00
- vfork
A exec-wrapper which redirects file-descriptors to be used with vfork(2)
- plugins
LV2 Plugins included with Ardour. These are currently mostly
2020-04-27 10:15:52 -04:00
independent (a-fluidsynth uses libfluidsynth).
Most of them are custom version of existing plugins (zamaudio, x42),
that have been customized to be bundled with Ardour on all platforms
tha ardour runs on.
2020-04-27 10:15:52 -04:00
- zita-convolver
convolution kernel, so far only avialable to Lua scripts.
2020-04-27 10:15:52 -04:00
- zita-resampler
Efficient resampler with variable rate, useful for adaptive resampling.
Mainly used for vari-speed playback.
**** PBD dependent libs ****
- pbd
2020-04-28 14:02:07 -04:00
Generic non-Ardour-specific utility classes. This is the basis for all Ardour specifics.
It provides basic concepts and OS abstractions. The name comes from "Paul
Barton-Davis", Paul's full name at the time he started working on working on
audio software.
- evoral
(uses libpbd)
Control events, control lists, automation evaluation,
parameter descriptions, incl MIDI event abstraction
- libsmf (contains several non-upstreamed fixes)
(used inside evoral)
Handling Standard MIDI File format. Abstracted to C++ in SMF.{cc,h}
2020-04-28 14:02:07 -04:00
- backends
(uses libpdb, ardouralsautil | appleutility, implements libardour interface)
Interaction with Operating System's Audio/MIDI API:
2020-04-27 10:15:52 -04:00
ALSA, CoreAudio, JACK, PortAudio/ASIO, Pulseaudio
- surfaces
(uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
2020-04-27 10:15:52 -04:00
Control Surfaces, dynamically loaded by libardour on runtime,
to remote-control ardour (midi bindings, network etc).
- panners
(uses libpdb, implements libardour interface)
Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
- audiographer
(uses libpdb)
Mini Ardour inside Ardour to export audio-files from sessions.
- fst
(uses libpbd, implements external methods for libardour and gtk2ardour)
VST scanner tool and abstraction for Windows-VSTs to be used with
2020-04-27 10:15:52 -04:00
wine or MS windows.
- ardour
(uses pretty much all the libs above)
2020-04-27 10:15:52 -04:00
This is it. libardour runs Ardour sessions
All realtime processing happens here, plugins are managed etc.
**** UI related libs ****
- gtkmm2ext
(uses libpbd)
Utility Library to extend GDK, GTK, and basic abstraction for UIs
and event-loops. This library is not limited to the GUI, but also
2020-04-27 10:15:52 -04:00
used for other graphical interfaces (e.g. Push2, NI Maschine control
surfaces).
- canvas
(uses libpbd, libgtkmm2ext)
Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
2020-04-27 10:15:52 -04:00
This is used by gtk2ardour's main editor.
- widgets
(uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
2020-04-27 10:15:52 -04:00
Ardour GUI widgets (buttons, fader, knobs, etc)
- waveview
(uses libpbd, libgtkmm2ext, canvas, libardour)
2020-04-27 10:15:52 -04:00
Threaded waveform rendering and waveform image cache
===== RESOURCE FILES =====
These are bundled as-is.
2020-04-27 10:15:52 -04:00
share/export/
Export Presets
2020-04-27 10:15:52 -04:00
share/mcp/
Mackie control surface device files
2020-04-27 10:15:52 -04:00
share/midi_maps/
Generic MIDI control surface presets
2020-04-27 10:15:52 -04:00
share/osc/
Configuration presets for the OSC control surface
2020-04-27 10:15:52 -04:00
share/patchfiles/
MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
2020-04-27 10:15:52 -04:00
share/scripts/
Lua scripts (files with a leading underscore are not bundled)
2020-04-27 10:15:52 -04:00
see also share/scripts/README
2020-04-27 10:15:52 -04:00
share/templates/
Session templates (currently none)
===== MISC =====
doc/
Misc developer oriented documentation files and Doxygen
patches/
Some .diff files for the build-stack.
tools/
Various developer tools, most notably packaging scripts