diff --git a/doc/source_tree_layout.txt b/doc/source_tree_layout.txt new file mode 100644 index 0000000000..9dd982cb39 --- /dev/null +++ b/doc/source_tree_layout.txt @@ -0,0 +1,174 @@ +Ardour Source-Tree layout (July 2017) + +===== LIBRARIES ===== + A collection of libraries and utility functions. While most are shared + libraries, they're pretty much exclusive to Ardour. + +libs/ + + **** Independent libs **** + + - fluidsynth + Stripped down (library only) and slightly customized version of fluidsynth + use tools/update_fluidsynth.sh to update from upstream + + - 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 + + - 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 + + - ptformat + Unmodified https://github.com/zamaudio/ptformat for loading ProTools sessions + + - vfork + A exec-wrapper which redirects file-descriptors to be used with vfork(2) + + - 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) + + - timecode + Timecode (FPS) and musical time conversions + + - lua + Lua Script interpreter and C++ class abstraction + - 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 + LV2 Plugins included with Ardour. These are currently mostly + independent (a-fluidsynth uses libfluidsynth) + + - clearlooks-newer + GTK theme engine (used by gtk2_ardour) + + + **** PBD dependent libs **** + + - pbd + Paul B-D's utility classes. This is the basis for all Ardour specifics. + It provides basic concepts and OS abstractions. + + - evoral + (uses libpbd) + Control events, control lists, automation evaluation, + parameter descriptions, incl MIDI event abstraction + + - midi++2 + (uses libpdb, libevoral) + Standard MIDI Files I/O + + - backends + (uses libpdb, ardouralsautil | appleutility, implements libardour interface) + Interaction with Operating System's Audio/MIDI API: + ALSA, CoreAudio, JACK, PortAudio/ASIO + + - surfaces + (uses libpbd, libevoral, libtimecode, libardour ;; libgtkmm2ext, libcanvas) + Control Surfaces, dynamically loaded by libardour on runtime. + + - 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 + wine or actual windows. + + - ardour + (uses pretty much all the libs above) + This is it. libardour runs Ardour sessions. + + **** 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 + used for other graphical interfaces (e.g. Push2, NI Maschine) + + - canvas + (uses libpbd, libgtkmm2ext) + Cairo Canvas, provides a slate for scalable drawing and basic layout/packing + + - widgets + (uses libpbd, libgtkmm2ext ;; libcanvas utils/colors) + Custom GUI widgets + + - waveview + (uses libpbd, libgtkmm2ext, canvas, libardour) + Threaded waveform rendering + + +===== RESOURCE FILES ===== +These are bundled as-is. + +export/ + Export Presets + +mcp/ + Mackie control surface device files + +midi_maps/ + Generic MIDI control surface presets + +osc/ + Configuration presets for the OSC control surface + +patchfiles/ + MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names) + +scripts/ + Lua scripts (files with a leading underscore are not bundled) + +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 + + +===== 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) + +tools/luadevel/ + arlua -- commandline interface to libardour + +vst + wine application top-level (WindowsVST on Linux) diff --git a/tools/doxy2json/ardourdoc.sh b/tools/doxy2json/ardourdoc.sh index 6b2faadb5b..ebe8767d86 100755 --- a/tools/doxy2json/ardourdoc.sh +++ b/tools/doxy2json/ardourdoc.sh @@ -21,8 +21,8 @@ time ./tools/doxy2json/doxy2json -j 4 \ -D HAVE_X11=1 -D LXVST_64BIT=1 -D LXVST_SUPPORT=1 -D HAVE_TAGLIB=1 -D HAVE_POSIX_MEMALIGN=1 -D HAVE_VAMPSDK=1 -D HAVE_VAMPHOSTSDK=1 -D HAVE_RUBBERBAND=1 -D ENABLE_NLS=1 \ -D HAVE_CURL=1 -D HAVE_LO=1 -D HAVE_LRDF=1 -D _VAMP_NO_PLUGIN_NAMESPACE=1 \ -I libs/ardour -I libs/pbd -I libs/lua -I gtk2_ardour -I libs/timecode -I libs/audiographer -I libs/ptformat -I libs/fst \ - -I libs/ltc -I libs/evoral -I libs/canvas -I libs/gtkmm2ext -I libs/midi++2 -I libs/surfaces/control_protocol -I libs \ - -I build/libs/pbd -I build/libs/ardour -I build/gtk2_ardour \ + -I libs/ltc -I libs/evoral -I libs/canvas -I libs/gtkmm2ext -I libs/midi++2 -I libs/surfaces/control_protocol \ + -I libs/waveview -I libs/widgets -I libs -I build/libs/pbd -I build/libs/ardour -I build/gtk2_ardour \ `pkg-config --cflags glib-2.0 glibmm-2.4 cairomm-1.0 gtkmm-2.4 libxml-2.0 lilv-0 suil-0 | sed 's/-std=c++11 //;s/-pthread //'` \ -X "_" -X "::" -X "sigc" -X "Atk::" -X "Gdk::" -X "Gtk::" -X "Gio::" \ -X "Glib::" -X "Pango::" -X "luabridge::" \ diff --git a/tools/linux_packaging/build b/tools/linux_packaging/build index da3ba72e5e..7491ebdf0b 100755 --- a/tools/linux_packaging/build +++ b/tools/linux_packaging/build @@ -492,7 +492,7 @@ EOF fi OURLIBDIR=$BUILD_ROOT/libs -OURLIBS=$OURLIBDIR/vamp-sdk:$OURLIBDIR/surfaces/control_protocol:$OURLIBDIR/ardour:$OURLIBDIR/midi++2:$OURLIBDIR/pbd:$OURLIBDIR/rubberband:$OURLIBDIR/soundtouch:$OURLIBDIR/gtkmm2ext:$OURLIBDIR/sigc++2:$OURLIBDIR/glibmm2:$OURLIBDIR/gtkmm2/atk:$OURLIBDIR/gtkmm2/pango:$OURLIBDIR/gtkmm2/gdk:$OURLIBDIR/gtkmm2/gtk:$OURLIBDIR/canvas:$OURLIBDIR/libsndfile:$OURLIBDIR/evoral:$OURLIBDIR/evoral/src/libsmf:$OURLIBDIR/audiographer:$OURLIBDIR/timecode:$OURLIBDIR/taglib:$OURLIBDIR/libltc:$OURLIBDIR/qm-dsp:$OURLIBDIR/ardouralsautil:$OURLIBDIR/ptformat:$BUILD_ROOT/gtk2_ardour +OURLIBS=$OURLIBDIR/surfaces/control_protocol:$OURLIBDIR/ardour:$OURLIBDIR/midi++2:$OURLIBDIR/pbd:$OURLIBDIR/gtkmm2ext:$OURLIBDIR/glibmm2:$OURLIBDIR/canvas:$OURLIBDIR/widgets:$OURLIBDIR/waveview:$OURLIBDIR/evoral:$OURLIBDIR/evoral/src/libsmf:$OURLIBDIR/audiographer:$OURLIBDIR/timecode:$OURLIBDIR/libltc:$OURLIBDIR/qm-dsp:$OURLIBDIR/ardouralsautil:$OURLIBDIR/ptformat:$BUILD_ROOT/gtk2_ardour echo $OURLIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} diff --git a/tools/x-win/package.sh b/tools/x-win/package.sh index 6073e6c99b..bfb7381e41 100755 --- a/tools/x-win/package.sh +++ b/tools/x-win/package.sh @@ -137,6 +137,8 @@ cp build/libs/evoral/evoral-*.dll $DESTDIR/bin/ cp build/libs/ardour/ardour-*.dll $DESTDIR/bin/ cp build/libs/timecode/timecode.dll $DESTDIR/bin/ cp build/libs/canvas/canvas-*.dll $DESTDIR/bin/ +cp build/libs/widgets/widgets-*.dll $DESTDIR/bin/ +cp build/libs/waveview/waveview-*.dll $DESTDIR/bin/ cp build/libs/pbd/pbd-*.dll $DESTDIR/bin/ cp build/libs/ptformat/ptformat-*.dll $DESTDIR/bin/ cp build/libs/audiographer/audiographer-*.dll $DESTDIR/bin/