13
0

Update source-tree layout description

This commit is contained in:
Robin Gareus 2020-04-27 16:15:52 +02:00
parent 8aa4ae825d
commit 74de320bd9
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -1,4 +1,22 @@
Ardour Source-Tree layout (July 2017) Ardour Source-Tree layout (April 2020)
===== 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 ===== ===== LIBRARIES =====
A collection of libraries and utility functions. While most are shared A collection of libraries and utility functions. While most are shared
@ -8,10 +26,6 @@ libs/
**** Independent libs **** **** Independent libs ****
- fluidsynth
Stripped down (library only) and slightly customized version of fluidsynth
use tools/update_fluidsynth.sh to update from upstream
- appleutility - appleutility
Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS) Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS)
@ -20,6 +34,13 @@ libs/
Device-reservation comandline tool (linked against libdbus), which is Device-reservation comandline tool (linked against libdbus), which is
also available from https://github.com/x42/alsa_request_device also available from https://github.com/x42/alsa_request_device
- 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 - hidapi
Unmodified https://github.com/signal11/hidapi for interaction with some Unmodified https://github.com/signal11/hidapi for interaction with some
control surfaces (Push2, NI Maschine) control surfaces (Push2, NI Maschine)
@ -27,11 +48,22 @@ libs/
- libltc - libltc
Unmodified https://github.com/x42/libltc/ for Linear Timecode en/decoding Unmodified https://github.com/x42/libltc/ for Linear Timecode en/decoding
- 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
(uses libpdb, libevoral)
Standard MIDI Files I/O
- ptformat - ptformat
Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions
- vfork - temporal
A exec-wrapper which redirects file-descriptors to be used with vfork(2) various utility code for dealing with different kinds of time,
including Timecode (FPS) and musical time conversions
- qm-dsp - qm-dsp
Stripped down version of https://github.com/c4dm/qm-dsp Stripped down version of https://github.com/c4dm/qm-dsp
@ -40,28 +72,30 @@ libs/
- vamp-plugins - vamp-plugins
VAMP plugins for audio analysis and offline processing (uses qm-dsp) VAMP plugins for audio analysis and offline processing (uses qm-dsp)
- temporal - vamp-pyin
various utility code for dealing with different kinds of time, VAMP plugins for pitch and note-tracking (uses qm-dsp), offline analyis
including Timecode (FPS) and musical time conversions
- lua - vfork
Lua Script interpreter and C++ class abstraction A exec-wrapper which redirects file-descriptors to be used with vfork(2)
- libs/lua/lua-5.3.3 is unmodified upstream Lua-5.3.3
- libs/lua/LuaBridge is a highly customized version of
https://github.com/vinniefalco/LuaBridge (C++ bindings)
- plugins - plugins
LV2 Plugins included with Ardour. These are currently mostly LV2 Plugins included with Ardour. These are currently mostly
independent (a-fluidsynth uses libfluidsynth) 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.
- clearlooks-newer - zita-convolver
GTK theme engine (used by gtk2_ardour) convolution kernel, so far only avialable to Lua scripts.
- zita-resampler
Efficient resampler with variable rate, useful for adaptive resampling.
Mainly used for vari-speed playback.
**** PBD dependent libs **** **** PBD dependent libs ****
- pbd - pbd
Paul B-D's utility classes. This is the basis for all Ardour specifics. Paul B. Davis' utility classes. This is the basis for all Ardour specifics.
It provides basic concepts and OS abstractions. It provides basic concepts and OS abstractions.
- evoral - evoral
@ -69,18 +103,15 @@ libs/
Control events, control lists, automation evaluation, Control events, control lists, automation evaluation,
parameter descriptions, incl MIDI event abstraction parameter descriptions, incl MIDI event abstraction
- midi++2
(uses libpdb, libevoral)
Standard MIDI Files I/O
- backends - backends
(uses libpdb, ardouralsautil | appleutility, implements libardour interface) (uses libpdb, ardouralsautil | appleutility, implements libardour interface)
Interaction with Operating System's Audio/MIDI API: Interaction with Operating System's Audio/MIDI API:
ALSA, CoreAudio, JACK, PortAudio/ASIO ALSA, CoreAudio, JACK, PortAudio/ASIO, Pulseaudio
- surfaces - surfaces
(uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas) (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas)
Control Surfaces, dynamically loaded by libardour on runtime. Control Surfaces, dynamically loaded by libardour on runtime,
to remote-control ardour (midi bindings, network etc).
- panners - panners
(uses libpdb, implements libardour interface) (uses libpdb, implements libardour interface)
@ -93,11 +124,12 @@ libs/
- fst - fst
(uses libpbd, implements external methods for libardour and gtk2ardour) (uses libpbd, implements external methods for libardour and gtk2ardour)
VST scanner tool and abstraction for Windows-VSTs to be used with VST scanner tool and abstraction for Windows-VSTs to be used with
wine or actual windows. wine or MS windows.
- ardour - ardour
(uses pretty much all the libs above) (uses pretty much all the libs above)
This is it. libardour runs Ardour sessions. This is it. libardour runs Ardour sessions
All realtime processing happens here, plugins are managed etc.
**** UI related libs **** **** UI related libs ****
@ -105,43 +137,46 @@ libs/
(uses libpbd) (uses libpbd)
Utility Library to extend GDK, GTK, and basic abstraction for UIs Utility Library to extend GDK, GTK, and basic abstraction for UIs
and event-loops. This library is not limited to the GUI, but also and event-loops. This library is not limited to the GUI, but also
used for other graphical interfaces (e.g. Push2, NI Maschine) used for other graphical interfaces (e.g. Push2, NI Maschine control
surfaces).
- canvas - canvas
(uses libpbd, libgtkmm2ext) (uses libpbd, libgtkmm2ext)
Cairo Canvas, provides a slate for scalable drawing and basic layout/packing Cairo Canvas, provides a slate for scalable drawing and basic layout/packing
This is used by gtk2ardour's main editor.
- widgets - widgets
(uses libpbd, libgtkmm2ext ;; libcanvas utils/colors) (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors)
Custom GUI widgets Ardour GUI widgets (buttons, fader, knobs, etc)
- waveview - waveview
(uses libpbd, libgtkmm2ext, canvas, libardour) (uses libpbd, libgtkmm2ext, canvas, libardour)
Threaded waveform rendering Threaded waveform rendering and waveform image cache
===== RESOURCE FILES ===== ===== RESOURCE FILES =====
These are bundled as-is. These are bundled as-is.
export/ share/export/
Export Presets Export Presets
mcp/ share/mcp/
Mackie control surface device files Mackie control surface device files
midi_maps/ share/midi_maps/
Generic MIDI control surface presets Generic MIDI control surface presets
osc/ share/osc/
Configuration presets for the OSC control surface Configuration presets for the OSC control surface
patchfiles/ share/patchfiles/
MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names) MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names)
scripts/ share/scripts/
Lua scripts (files with a leading underscore are not bundled) Lua scripts (files with a leading underscore are not bundled)
see also share/scripts/README
templates/ share/templates/
Session templates (currently none) Session templates (currently none)
@ -154,22 +189,3 @@ patches/
tools/ tools/
Various developer tools, most notably packaging scripts Various developer tools, most notably packaging scripts
===== Front Ends =====
gtk2_ardour/
The main Ardour GUI
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)