13
0

Improve doxygen's main page, add references

This commit is contained in:
Robin Gareus 2024-05-28 01:00:42 +02:00
parent 0df0e14e23
commit 1cd78c94d3
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 54 additions and 37 deletions

View File

@ -1,4 +1,4 @@
# Ardour - the open source Digital Audio Workstation # Overview and Source Tree Layout
Welcome to the in-code documentation for Ardour. Welcome to the in-code documentation for Ardour.
@ -28,13 +28,12 @@ The source tree is laid out as follows:
* `luasession/` * `luasession/`
arlua -- commandline interface to libardour arlua -- fully fledged commandline interface to libardour
## Libraries ## Libraries
A collection of libraries and utility functions. Most are shared A collection of libraries and utility functions. Most are shared
libraries, and almost all are exclusive to Ardour. libraries, and almost all are exclusive to Ardour.
A few specific libraries are compiled statically (e.g. fluidsynth for use in plugins). A few specific libraries are compiled statically (e.g. fluidsynth for use in plugins).
### Ardour specific libs ### Ardour specific libs
@ -48,32 +47,35 @@ A few specific libraries are compiled statically (e.g. fluidsynth for use in plu
* `libs/evoral/` * `libs/evoral/`
Control events, control lists, automation evaluation, Evoral is Ardour's event Library, used for control events, control lists, automation evaluation,
parameter descriptions, incl. MIDI event abstraction parameter interpolation, parameter descriptions, incl. MIDI event abstraction.
- `libs/evoral/libsmf/` (contains several non-upstreamed fixes) - `libs/evoral/libsmf/` (contains several non-upstreamed fixes)
Handling Standard MIDI File format. Abstracted to C++ in SMF.{cc,h} Handling Standard %MIDI File (Evoral::SMF) format. Abstracted to C++ in SMF.{cc,h}
(used inside evoral)
* libs/backends/ * libs/backends/
Interaction with Operating System's Audio/MIDI API: Interaction with Operating System's Audio/MIDI API:
ALSA, CoreAudio, JACK, PortAudio/ASIO, PulseAudio ALSA, CoreAudio, JACK, PortAudio/ASIO, PulseAudio
see ARDOUR::AudioBackend
* `libs/surfaces/` * `libs/surfaces/`
Control Surfaces, dynamically loaded by libardour on runtime, Control Surfaces, dynamically loaded by libardour on runtime,
to remote-control ardour (midi bindings, network etc). to remote-control ardour (midi bindings, network etc).
see ARDOUR::ControlProtocol
* `libs/midi++2/` * `libs/midi++2/`
MIDI parsing, MIDNAM handling, Port abstraction for I/O %MIDI parsing, MIDNAM handling, Port abstraction for I/O
* `libs/temporal` * `libs/temporal`
Various utility code for dealing with different kinds of time, Various utility code for dealing with different kinds of time,
including Timecode (FPS) and musical time conversions. including Timecode, and musical time conversions (Temporal::Beats, Temporal::BBT_Time).
This library also provides the fundamental time types, and the *TempoMap*. This library also provides the fundamental time types, and the *TempoMap*.
See <https://ardour.org/representing-time.html> for more information. See <https://ardour.org/representing-time.html> for more information.
@ -82,16 +84,23 @@ A few specific libraries are compiled statically (e.g. fluidsynth for use in plu
Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime. Pan plugins (stereo-balance, VBAP, etc) are dynamically loaded at runtime.
see ARDOUR::Panner
* `libs/audiographer/` * `libs/audiographer/`
Mini Ardour inside Ardour to export audio-files from sessions. Mini Ardour inside Ardour to export audio-files from sessions.
It is a combination of AudioGrapher::Source and AudioGrapher::Sink classes that are chained together by ARDOUR::ExportGraphBuilder as shown in the ASCII art
[Export Graph](https://git.ardour.org/ardour/ardour/src/commit/0df0e14e2309a00d433827fa34b87638b87f4fff/libs/ardour/export_graph_builder.cc#L73-L154).
* `libs/ardour/` * `libs/ardour/`
This is it. libardour runs Ardour sessions. This is it. libardour runs Ardour sessions.
All realtime processing happens here, plugins are managed etc. All realtime processing happens here, plugins are managed etc.
Some starting points are ARDOUR::Route ARDOUR::Session ARDOUR::Processor
### UI related libs ### UI related libs
* libs/gtkmm2ext/ * libs/gtkmm2ext/
@ -104,11 +113,13 @@ A few specific libraries are compiled statically (e.g. fluidsynth for use in plu
* `libs/canvas/` * `libs/canvas/`
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. This is used by Ardour's main editor.
See ArdourCanvas::GtkCanvas and ArdourCanvas::Item
* `libs/widgets/` * `libs/widgets/`
Ardour GUI widgets (buttons, fader, knobs, etc) Ardour GUI widgets (buttons, fader, knobs, etc). They are basically all CairoWidget%s
* `libs/waveview/` * `libs/waveview/`
@ -116,7 +127,7 @@ A few specific libraries are compiled statically (e.g. fluidsynth for use in plu
* libs/tk/ * libs/tk/
A localized version of GTK+2, renamed as YTK: A localized version of GTK+2, renamed as YTK. See Gtk namespace for relevant documentation.
- `libs/tk/ydk` `libs/tk/ytk` - `libs/tk/ydk` `libs/tk/ytk`
@ -146,7 +157,7 @@ A few specific libraries are compiled statically (e.g. fluidsynth for use in plu
### Plugin Scan Tools ### Plugin Scan Tools
By default plugins are scanned by a dedictaed external process. If that crashes the By default plugins are scanned by a dedicated external process. If that crashes the
main application is not affected, and the plugin that causes the scanner to crash can be main application is not affected, and the plugin that causes the scanner to crash can be
blacklisted. blacklisted.
@ -158,11 +169,13 @@ For practical and historical reasons the actual scanner code lives inside libard
* `libs/fst/` * `libs/fst/`
VST2/3 plugin scan commandline tools VST2/3 plugin scan commandline tools.
* `libs/vfork/` * `libs/vfork/`
A exec-wrapper which redirects file-descriptors to be used with vfork(2) A exec-wrapper which redirects file-descriptors to be used with vfork(2).
It is used to launch external applications, without impacting real-time
constraints of the calling process.
### Ardour Community Effect (ACE) Plugins ### Ardour Community Effect (ACE) Plugins
@ -178,18 +191,21 @@ For practical and historical reasons the actual scanner code lives inside libard
### Independent, standalone libs ### Independent, standalone libs
These are 3rd party libs that have been copied into Ardour's source-tree.
* `libs/aaf/` * `libs/aaf/`
Unmodified <https://github.com/agfline/LibAAF> for importing AAF sessions. Unmodified <https://github.com/agfline/LibAAF> for importing AAF sessions.
use `tools/update_libaaf.sh` to update from upstream.
Use `tools/update_libaaf.sh` to update from upstream.
* `libs/appleutility/` * `libs/appleutility/`
Utility Classes, abstraction for CoreAudio and AudioUnits (OSX, macOS) Utility classes, abstraction for CoreAudio and AudioUnits (OSX, macOS)
* `libs/ardouralsautil/` * `libs/ardouralsautil/`
Utility Class for device-listing (used by the jack and ALSA backends). Utility class for device-listing (used by the JACK and ALSA backends).
Device-reservation commandline tool (linked against libdbus), which is Device-reservation commandline 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>
@ -200,6 +216,7 @@ For practical and historical reasons the actual scanner code lives inside libard
* `libs/fluidsynth/` * `libs/fluidsynth/`
Stripped down (library only) and slightly customized version of fluidsynth. Stripped down (library only) and slightly customized version of fluidsynth.
Use `tools/update_fluidsynth.sh` to update from upstream. Use `tools/update_fluidsynth.sh` to update from upstream.
* `libs/hidapi/` * `libs/hidapi/`
@ -209,7 +226,7 @@ For practical and historical reasons the actual scanner code lives inside libard
* `libs/libltc/` * `libs/libltc/`
Unmodified <https://github.com/x42/libltc/> for Linear Timecode en/decoding Unmodified <https://github.com/x42/libltc/> for Linear Timecode en/decoding. see LTCFrame.
* `libs/lua/` * `libs/lua/`
@ -220,7 +237,7 @@ For practical and historical reasons the actual scanner code lives inside libard
* `libs/ptformat/` * `libs/ptformat/`
Unmodified <https://github.com/zamaudio/ptformat> for loading ProTools sessions Unmodified <https://github.com/zamaudio/ptformat> for loading ProTools sessions.
* `libs/qm-dsp/` * `libs/qm-dsp/`
@ -243,58 +260,58 @@ For practical and historical reasons the actual scanner code lives inside libard
* `libs/zita-convolver/` * `libs/zita-convolver/`
convolution kernel, so far only available to Lua scripts. A convolution kernel, so far only available to Lua scripts.
* `libs/zita-resampler/` * `libs/zita-resampler/`
Efficient resampler with variable rate, useful for adaptive resampling. Efficient resampler with variable rate, useful for adaptive resampling.
Mainly used for vari-speed playback. This has been customized for multiple mono Mainly used for vari-speed playback. This has been customized for multiple mono
channel processing, and optimized to skip processing for a ratio of 1:1. channel processing (ArdourZita::VMResampler), and optimized to skip processing for a ratio of 1:1.
## RESOURCE FILES ## Resource Files
These are bundled as-is. These are platform independent files, and bundled as-is.
* `share/export/` * `share/export/`
Export Presets Export Format and Presets (see <https://manual.ardour.org/exporting/edit-export-format-profile/>)
* `share/mcp/` * `share/mcp/`
Mackie control surface device files Mackie control surface device files (see <https://manual.ardour.org/using-control-surfaces/devices-using-mackielogic-control-protocol/>)
* `share/midi_maps/` * `share/midi_maps/`
Generic MIDI control surface presets Generic %MIDI control surface presets
* `share/osc/` * `share/osc/`
Configuration presets for the OSC control surface [TouchOSC](https://hexler.net/touchosc) layouts for use with Ardour's OSC control surface.
* `share/patchfiles/` * `share/patchfiles/`
MIDNAM files, MIDI synth descriptions (note-names, CC, PGM names) MIDNAM files, %MIDI synth descriptions (note-names, CC, PGM names)
* `share/scripts/` * `share/scripts/`
Lua scripts (files with a leading underscore are not bundled). Lua scripts (files with a leading underscore are not bundled).
see `share/scripts/README` for file name convention. see `share/scripts/README` for file name convention.
* `share/templates/` * `share/templates/`
Session templates (currently none) Session templates (currently none)
## MISC ## Miscellaneous
* `doc/` * `doc/`
Misc developer oriented documentation files and Doxygen Misc developer oriented documentation files and Doxygen
* `patches/` * `patches/`
Some .diff files for the build-stack. Some .diff files for the build-stack.
* `tools/` * `tools/`
Various developer tools, most notably packaging scripts Various developer tools, most notably packaging scripts

View File

@ -33,7 +33,7 @@
/** /**
* *
* \page libsmf libsmf - general usage instructions * \page libsmf libsmf - Standard MIDI File format library
* *
* An smf_t structure represents a "song". Every valid smf contains one or more tracks. * An smf_t structure represents a "song". Every valid smf contains one or more tracks.
* Tracks contain zero or more events. Libsmf doesn't care about actual MIDI data, as long * Tracks contain zero or more events. Libsmf doesn't care about actual MIDI data, as long