From 666807796513f643411d300397337633f38eac73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Sat, 14 May 2022 12:10:17 +0200 Subject: [PATCH] Base: Document the LibDSP structure in a simple class diagram This uses UML conventions but just contains the necessary info to get started with LibDSP development. --- Base/usr/share/man/man7/Audio-subsystem.md | 4 ++++ Base/usr/share/man/man7/LibDSP_classes.svg | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 Base/usr/share/man/man7/LibDSP_classes.svg diff --git a/Base/usr/share/man/man7/Audio-subsystem.md b/Base/usr/share/man/man7/Audio-subsystem.md index 10161ed573..0a4650c049 100644 --- a/Base/usr/share/man/man7/Audio-subsystem.md +++ b/Base/usr/share/man/man7/Audio-subsystem.md @@ -34,6 +34,10 @@ LibAudio is the baseline audio library that provides common audio abstractions, LibDSP is the digital signal processing library. It provides structures for audio editing programs, such as tracks and clips, while both dealing with MIDI data and sample data. More important is the Processor system, which allows synthesizers, samplers, sequencers, effects, etc. to be written with a common interface and be combined into chains for unlimited DSP (and musical) potential. The ProcessorParameters provide an interface for changing processor parameters programmatically or through a UI. +The following class diagram outlines the structure of LibDSP pertaining to DAW-like applications: + +![LibDSP class diagram](LibDSP_classes.svg) + LibDSP was started to support development efforts in Piano, but it is intended as a general-purpose audio processing library, building on the groundwork from LibAudio. Therefore, users of LibDSP must be familiar with LibAudio classes and concepts, as they are used extensively in LibDSP. ### Applications diff --git a/Base/usr/share/man/man7/LibDSP_classes.svg b/Base/usr/share/man/man7/LibDSP_classes.svg new file mode 100644 index 0000000000..191477ef40 --- /dev/null +++ b/Base/usr/share/man/man7/LibDSP_classes.svg @@ -0,0 +1,4 @@ + + + +
Use
Use
Keyboard
MIDI & virtual keyboard input
MIDI & virtual keyboard i...
Transport
Global timing, loop control
(everyone uses this)
Global timing, loop contr...
TrackManager
Inter-Track signal routing
Inter-Track signal routing
1
1
Track
aka. Channel
aka. Channel
0..n
0..n
NoteTrack
Tracks with MIDI/Note data
Tracks with MIDI/Note data
AudioTrack
Tracks with audio/sample data
Tracks with audio/sample...
1
1
Clip
One contiguous region of track data which the user interacts with
One contiguous region of...
NoteClip
A bunch of MIDI notes
A bunch of MIDI notes
AudioClip
A piece of audio
A piece of audio
0..n
0..n
0..n
0..n
RollNote
A MIDI note
A MIDI note
Sample
(from LibAudio)
(from LibAudio)
0..n
0..n
0..n
0..n
Processor
(digital signal) processing of audio and notes
(digital signal) processi...
0..n
0..n
EffectProcessor
Audio in, audio out
Audio in, audio out
SynthesizerProcessor
Notes in, audio out
Notes in, audio out
Delay, EQ, Amp, ...
Your effect here!
Your effect here!
FM, Analog, Wavetable, ...
Your synth here!
Your synth here!
ProcessorParameter
Unified access to processor parameters, notification about changes etc.
Unified access to process...
0..n
0..n
ProcessorRangeParameter
fixed-point parameter with minimum, maximum, and possibly logarithmic scaling
fixed-point parameter wit...
ProcessorEnumParameter
parameter with enum value
parameter with enum value
ProcessorBooleanParameter
flag-like parameter
flag-like parameter
Text is not SVG - cannot display
\ No newline at end of file