Linux Studio Plugins Project
See the codeLSP (Linux Studio Plugins) is a collection of open-source plugins currently compatible with CLAP, LADSPA, LV2, VST2/LinuxVST, VST3 and standalone formats (supporting Dummy and JACK audio backends).
The basic idea is to fill the lack of good and useful plugins under the GNU/Linux platform.
After some contributions to other open source projects the decision was made to implement separate and independent plugin distribution.
All supplementary information you will find on official web site: https://lsp-plug.in/
Note that after 1.2.0 release the lsp-plugins repository was decomposed into multiple subprojects. As a result, it is the repository without any code and for build purposes it gathers source code as dependencies from another repositories which are located here: https://github.com/lsp-plugins/
The LSP project is an open-source project and cares about quality of developed software.
Still there is no absolute warranty about stability of the software on different platforms so you're using this software on your own risk.
The project also does encourage donations that can be submitted here:
Licensed under the terms of GNU Lesser Public License v3 (LGPLv3):
For more information about licensing, please read COPYING and COPYING.LESSER.
Current matrix of hardware architecture and platform (OS) support is:
┌───────────┬───────────┬─────────┬─────────┬─────────┐
│Arch / OS │ GNU/Linux │ FreeBSD │ Windows │ macOS |
╞═══════════╪═══════════╪═════════╪═════════╪═════════╡
│aarch64 │ F │ E │ U │ E │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv5t │ C │ C │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv6-a │ E │ E │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv7-ar │ E │ E │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│i586 │ F │ F │ F │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│loongarch32│ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│loongarch64│ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│ppc64 │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│riscv-64 │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│s390x │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│x86_64 │ F │ F │ F │ E │
└───────────┴───────────┴─────────┴─────────┴─────────┘
The table legend is the following:
Note that minimum supported Windows version is Windows Vista.
Supported plugin formats:
The Linux distribution requirements:
Known list of supported plugin hosts:
Binary releases contain all possible plugins in one bundle. The binaries are packaged into archive named according to the following format:
lsp-plugins-<format>-<major>.<minor>.<micro>-<platform>-<arch>.tar.gz
The property is the format of plugins, currently available:
Property 'arch' contains short name of architecture the binaries are build for. Properties 'major', 'minor' and 'micro' form the version of release. If the version is odd, it contains mostly bug-fixes and patches for the plugin modules. The even 'micro' version of plugins contains new features and, in most cases, new plugin series. The history of changes may be seen in attached CHANGELOG.txt.
Source code is also ready for building, see 'BUILDING' section for details.
Binary distributions are ready to launch, just copy them to the appropriate directory.
Releases containing odd number in minor version provide only enhancements and critical fixes for the previous release.
IMPORTANT FOR VST INSTALLATIONS: If you deploy plugins as a subdirectory of your VST2 directory, the subdirectory should contain substring 'lsp-plugins'. Otherwise plugins won't find the VST2 core library. Please notice that '~' means user's home directory.
The usual directories for CLAP are:
The usual directories for standalone core library are:
The usual directories for standalone binaries are:
The usual directories for GStreamer core library:
The usual installation directory for GStreamer plugins can be obtained by the following command:
pkg-config --variable=pluginsdir gstreamer-1.0
The usual directories are the following:
The usual directories for LADSPA are:
The usual directories for LV2 are:
The usual directories for VST 2.x/LinuxVST are:
The usual directories for VST 3.x are:
The usual directory for LV2 binaries is:
The usual directory for VST2 binaries is:
The usual directory for VST3 binaries is:
The usual directory for CLAP binaries is:
The usual directory for LADSPA binaries is:
The usual directory for LV2 binaries is:
The usual directory for VST 2.x binaries is:
The usual directory for VST 3.x binaries is:
The usual directory for CLAP binaries is:
You may build plugins from scratch.
The build process doesn't differ much for GNU/Linux, FreeBSD or Windows.
For a build on macOS and FreeBSD you should use gmake instead of make.
Build of standalone versions for Windows is yet not supported.
For successful build for Linux/FreeBSD you need the following packages to be installed:
For macOS build, the following software needs to be installed:
On some Command Line Tools 16.x installations the libc++ headers live
inside the SDK ($(xcrun --show-sdk-path)/usr/include/c++/v1) instead
of the expected /Library/Developer/CommandLineTools/usr/include/c++/v1,
so #include <thread> and other standard headers fail to resolve. If
the build fails with 'thread' file not found while compiling *.mm
translation units, export
-isystem $(xcrun --show-sdk-path)/usr/include/c++/v1 in CXXFLAGS
(and CFLAGS). This is unrelated to architecture; it depends on which
CLT release is installed.
For Windows build, the following software needs to be installed:
To perform toolchain setup for Windows, you may perform the following steps:
MacOS includes their own version of
make, if you decide to install it from homebrew, replace all the commands withgmake.
To build the project from archive with source code, the following sequence of commands should be performed:
make clean
make config
make
make install
To build the project from GIT repository, the additional 'make fetch' command should be issued to obtain all source code dependencies:
make clean
make config
make fetch
make
make install
For Windows, the make install command creates 'INSTALL' subdirectory and places the
plugin content into desired subfolders.
By default, all supported formats of plugins for the target platform are built. The list of modules for build can be adjusted by specifying FEATURES variable at the configuration stage:
make config FEATURES='lv2 vst2 ui doc'
Available compile options are:
Available options are:
By default plugins use '/usr/local' path as a target directory for installation. To override this path, the PREFIX variable can be overridden:
make config PREFIX=/usr
To build binaries for debugging, add debug feature to FEATURES variable:
make config ADD_FEATURES='debug'
To build binaries for testing (developers only), add test feature to FEATURES variable:
make config ADD_FEATURES='test'
To install plugins at the desired root directory, the DESTDIR variable can be specified:
make install DESTDIR=<installation-root>
To install only specific formats, use INSTALL_FEATURES option:
make install FEATURES='lv2 ladspa'
To build standalone source code package, the following commands can be issued:
make config
make distsrc
After that, a standalone archive with source code will be created in the .build directory.
When cross compiling, the AS, AR, CC, CXX, LD, etc. variables should be set in the environment according to the target/cross compile toolchain. The build host machine versions of those variables- HOST_AS, HOST_AR, HOST_CC, HOST_CXX, etc. have defaults set in the makefiles but may need to be overridden. To troubleshoot, run make config with the VERBOSE option.
Additional variables should be configured:
ARCHITECTURE option to the target architecture.croccompile feature to the FEATURES variable.Example cross compile procedure for aarch64 target on x86_64 build host:
make clean
make config ARCHITECTURE="aarch64" ADD_FEATURES="crosscompile"
make fetch
make
make install
After successful completion, the cross compiled artifacts should be located in the directory specified by PREFIX.
For more build options, issue:
make help
Build example for macOS:
brew install make pkgconf cairo freetype
gmake clean
gmake config FEATURES="vst3 ui"
gmake fetch
gmake
sudo gmake install
The bundle produced by gmake install is unsigned and works as-is in
most hosts. However, if the bundle is modified after build — for
example by lipo-merging an arm64 and an x86_64 slice into a universal
binary, or by manually swapping a file inside it — the existing
_CodeSignature/CodeResources manifest no longer matches the contents,
and hosts that verify signatures (Ableton Live among them) reject the
bundle with code has no resources but signature indicates they must be present. The fix is to refresh the ad-hoc signature:
codesign --remove-signature lsp-plugins.vst3
codesign --force --deep --sign - lsp-plugins.vst3
codesign --verify --verbose=2 lsp-plugins.vst3
For debugging and getting crash stack trace with Ardour, please follow these steps:
After any post-build modification of the bundle (lipo merge, manual
file swap, etc.) the _CodeSignature/CodeResources manifest is stale
and codesign --verify will reject the bundle. Hosts such as Ableton
Live drop the bundle silently during plug-in scan and the plug-in
never appears in the browser. Re-sign ad-hoc:
codesign --remove-signature lsp-plugins.vst3
codesign --force --deep --sign - lsp-plugins.vst3
People using the unclutter tool reported spontaneous freeze of the UI for LSP Plugins.
The unclutter tool is pretty rare and has not been updated over the years. So it does
not follow the latest changes made for X.Org. The problem can be solved by switching to
unclutter-xfixes tool which works pretty OK with LSP UI.
There is no good support of MIDI interface in GStreamer now. Even if MIDI-based plugins are available for GStreamer, there is no guarantee that they will fully work.
LSP Plugins don't support Wayland protocol at this moment and are required to run under XWayland if Wayland is used as a system compositor. The implementation of XWayland is still imperfect and there are known cases where it can cause several problems with graphics.
There are several reasons why LSP Plugins don't support Wayland at this moment:
If you meet problems using LSP Plugins with Wayland, please consider switching back to X11.
This is the typical problem of interacting of the GUI with additional library that performs 3D rendering. The reason can be:
The short way to diagnose that the library was not found or not accepted by the UI is just to
visit the MENU -> 3D rendering (visible only for plugins that use 3D rendering) and
ensure that there are no available items in the submenu.
To solve the problem, you need:
liblsp-r3d-glx library is present in /usr/lib or in
/usr/local/lib system paths OR:liblsp-r3d-glx library is placed nearby the plugin's binaries
if you have some custom installation of the bundle (for example, in your HOME directory);liblsp-r3d-glx is matching to installed binaries;Since release 1.1.4 there is implemented testing subsystem that allows:
Manual tests are semi-automated or not automated at all. You may launch these tests to perform manual interaction with system or for retrieving some text data for further processing.
Unit tests are completely automated and check that the produced result is correct for the specific input data. By default unit tests are launched in separate processes and utilize all CPU cores for maximum performance. The status of each unit test is collected during execution and list of all failed tests are printed after completion.
Performance tests measure performance of some function/module under different conditions, gather final statistics and output them in a table format. These tests are very useful for measuring single-core performance of different modules and functions and performing code optimizations.
To build testing subsystem, issue the following commands and enable test feature in
FEATURES parameter:
make clean
make config ADD_FEATURES='test'
make
After build, we can launch the test binary by issuing command:
.build/host/lsp-plugin-fw/lsp-plugins-test
This binary provides simple command-line interface, so here's the full usage:
USAGE: {utest|ptest|mtest} [args...] [test name...]
First argument:
utest Unit testing subsystem
ptest Performance testing subsystem
mtest Manual testing subsystem
Additional arguments:
-a, --args [args...] Pass arguments to test
-d, --debug Disable time restrictions for unit tests
for debugging purposes
-e, --execute Launch tests specified after this switch
-f, --fork Fork child processes (opposite to --nofork)
-h, --help Display help
-i, --ignore Ignore tests specified after this switch
-j, --jobs Set number of job workers for unit tests
-l, --list List all available tests
-mt, --mtrace Enable mtrace log
-nf, --nofork Do not fork child processes (for better
debugging capabilities)
-nt, --nomtrace Disable mtrace log
-o, --outfile file Output performance test statistics to specified file
-s, --silent Do not output additional information from tests
-t, --tracepath path Override default trace path with specified value
-v, --verbose Output additional information from tests
Each test has fully-qualified name separated by dot symbols, tests from different test spaces (utest, ptest, mtest) may have similar fully-qualified names.
To obtain a list of all unit tests we can issue:
.build/host/lsp-plugin-fw/lsp-plugins-test utest --list
And then we can launch all complex number processing unit tests and additionally 'dsp.mix' unit test:
.build/host/lsp-plugin-fw/lsp-plugins-test utest dsp.complex.* dsp.pcomplex.* dsp.mix
If we don's specify any unit test name in argument, then all available unit tests will be launched.
To start debugging of some unit test, you need to pass additional arguments:
.build/host/lsp-plugin-fw/lsp-plugins-test/lsp-plugins-test utest --nofork --debug --verbose
Because unit tests are short-time fully-automated tests, they are parallelized and executed by default by number_of_cores*2 processes. To disable this, we specify option --nofork. Also, unit test execution time is limited by 5 seconds by default, so when debugging, our tests will be killed. That's why we specify --debug option to disable time control. Option --verbose allows to output additional information by the unit test that is turned off by default.
We also can use performance tests to obtain full performance profile of target machine. Because performance tests in most cases take much time for gathering statistics, the final statistics for each test can be saved in a separate file by specifying --outfile option:
.build/host/lsp-plugin-fw/lsp-plugins-test ptest -o performance-test.log
Manual tests are mostly designed for developers' purposes.
The Code of the project has been verified by the following SAST tools:
Because there are many GNU/Linux distributions and software configurations, and, possible, internal bugs, plugins may have bad performance or even crash. The good way to find the solutiong is to submit a bug or crash report. This section describes the way to give detailed information to developers.
To submit a good bug or crash report, you should answer these questions:
There is possible to submit feature requests and bugs on the GitHub.com page of the project: https://github.com/sadko4u/lsp-plugins/issues
Sourceforge.net page of the project: https://sourceforge.net/p/lsp-plugins/tickets/
You may contact us on the special feedback page: https://lsp-plug.in/?page=feedback
Hope you have enjoyed our work!
208 followers · starred Nov 2024
967 followers · starred Sep 2024
98 followers · starred Jun 2022
355 followers · starred Mar 2021
Linux Studio Plugins Project
See the codeLSP (Linux Studio Plugins) is a collection of open-source plugins currently compatible with CLAP, LADSPA, LV2, VST2/LinuxVST, VST3 and standalone formats (supporting Dummy and JACK audio backends).
The basic idea is to fill the lack of good and useful plugins under the GNU/Linux platform.
After some contributions to other open source projects the decision was made to implement separate and independent plugin distribution.
All supplementary information you will find on official web site: https://lsp-plug.in/
Note that after 1.2.0 release the lsp-plugins repository was decomposed into multiple subprojects. As a result, it is the repository without any code and for build purposes it gathers source code as dependencies from another repositories which are located here: https://github.com/lsp-plugins/
The LSP project is an open-source project and cares about quality of developed software.
Still there is no absolute warranty about stability of the software on different platforms so you're using this software on your own risk.
The project also does encourage donations that can be submitted here:
Licensed under the terms of GNU Lesser Public License v3 (LGPLv3):
For more information about licensing, please read COPYING and COPYING.LESSER.
Current matrix of hardware architecture and platform (OS) support is:
┌───────────┬───────────┬─────────┬─────────┬─────────┐
│Arch / OS │ GNU/Linux │ FreeBSD │ Windows │ macOS |
╞═══════════╪═══════════╪═════════╪═════════╪═════════╡
│aarch64 │ F │ E │ U │ E │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv5t │ C │ C │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv6-a │ E │ E │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│armv7-ar │ E │ E │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│i586 │ F │ F │ F │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│loongarch32│ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│loongarch64│ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│ppc64 │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│riscv-64 │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│s390x │ C │ U │ U │ N │
├───────────┼───────────┼─────────┼─────────┼─────────┤
│x86_64 │ F │ F │ F │ E │
└───────────┴───────────┴─────────┴─────────┴─────────┘
The table legend is the following:
Note that minimum supported Windows version is Windows Vista.
Supported plugin formats:
The Linux distribution requirements:
Known list of supported plugin hosts:
Binary releases contain all possible plugins in one bundle. The binaries are packaged into archive named according to the following format:
lsp-plugins-<format>-<major>.<minor>.<micro>-<platform>-<arch>.tar.gz
The property is the format of plugins, currently available:
Property 'arch' contains short name of architecture the binaries are build for. Properties 'major', 'minor' and 'micro' form the version of release. If the version is odd, it contains mostly bug-fixes and patches for the plugin modules. The even 'micro' version of plugins contains new features and, in most cases, new plugin series. The history of changes may be seen in attached CHANGELOG.txt.
Source code is also ready for building, see 'BUILDING' section for details.
Binary distributions are ready to launch, just copy them to the appropriate directory.
Releases containing odd number in minor version provide only enhancements and critical fixes for the previous release.
IMPORTANT FOR VST INSTALLATIONS: If you deploy plugins as a subdirectory of your VST2 directory, the subdirectory should contain substring 'lsp-plugins'. Otherwise plugins won't find the VST2 core library. Please notice that '~' means user's home directory.
The usual directories for CLAP are:
The usual directories for standalone core library are:
The usual directories for standalone binaries are:
The usual directories for GStreamer core library:
The usual installation directory for GStreamer plugins can be obtained by the following command:
pkg-config --variable=pluginsdir gstreamer-1.0
The usual directories are the following:
The usual directories for LADSPA are:
The usual directories for LV2 are:
The usual directories for VST 2.x/LinuxVST are:
The usual directories for VST 3.x are:
The usual directory for LV2 binaries is:
The usual directory for VST2 binaries is:
The usual directory for VST3 binaries is:
The usual directory for CLAP binaries is:
The usual directory for LADSPA binaries is:
The usual directory for LV2 binaries is:
The usual directory for VST 2.x binaries is:
The usual directory for VST 3.x binaries is:
The usual directory for CLAP binaries is:
You may build plugins from scratch.
The build process doesn't differ much for GNU/Linux, FreeBSD or Windows.
For a build on macOS and FreeBSD you should use gmake instead of make.
Build of standalone versions for Windows is yet not supported.
For successful build for Linux/FreeBSD you need the following packages to be installed:
For macOS build, the following software needs to be installed:
On some Command Line Tools 16.x installations the libc++ headers live
inside the SDK ($(xcrun --show-sdk-path)/usr/include/c++/v1) instead
of the expected /Library/Developer/CommandLineTools/usr/include/c++/v1,
so #include <thread> and other standard headers fail to resolve. If
the build fails with 'thread' file not found while compiling *.mm
translation units, export
-isystem $(xcrun --show-sdk-path)/usr/include/c++/v1 in CXXFLAGS
(and CFLAGS). This is unrelated to architecture; it depends on which
CLT release is installed.
For Windows build, the following software needs to be installed:
To perform toolchain setup for Windows, you may perform the following steps:
MacOS includes their own version of
make, if you decide to install it from homebrew, replace all the commands withgmake.
To build the project from archive with source code, the following sequence of commands should be performed:
make clean
make config
make
make install
To build the project from GIT repository, the additional 'make fetch' command should be issued to obtain all source code dependencies:
make clean
make config
make fetch
make
make install
For Windows, the make install command creates 'INSTALL' subdirectory and places the
plugin content into desired subfolders.
By default, all supported formats of plugins for the target platform are built. The list of modules for build can be adjusted by specifying FEATURES variable at the configuration stage:
make config FEATURES='lv2 vst2 ui doc'
Available compile options are:
Available options are:
By default plugins use '/usr/local' path as a target directory for installation. To override this path, the PREFIX variable can be overridden:
make config PREFIX=/usr
To build binaries for debugging, add debug feature to FEATURES variable:
make config ADD_FEATURES='debug'
To build binaries for testing (developers only), add test feature to FEATURES variable:
make config ADD_FEATURES='test'
To install plugins at the desired root directory, the DESTDIR variable can be specified:
make install DESTDIR=<installation-root>
To install only specific formats, use INSTALL_FEATURES option:
make install FEATURES='lv2 ladspa'
To build standalone source code package, the following commands can be issued:
make config
make distsrc
After that, a standalone archive with source code will be created in the .build directory.
When cross compiling, the AS, AR, CC, CXX, LD, etc. variables should be set in the environment according to the target/cross compile toolchain. The build host machine versions of those variables- HOST_AS, HOST_AR, HOST_CC, HOST_CXX, etc. have defaults set in the makefiles but may need to be overridden. To troubleshoot, run make config with the VERBOSE option.
Additional variables should be configured:
ARCHITECTURE option to the target architecture.croccompile feature to the FEATURES variable.Example cross compile procedure for aarch64 target on x86_64 build host:
make clean
make config ARCHITECTURE="aarch64" ADD_FEATURES="crosscompile"
make fetch
make
make install
After successful completion, the cross compiled artifacts should be located in the directory specified by PREFIX.
For more build options, issue:
make help
Build example for macOS:
brew install make pkgconf cairo freetype
gmake clean
gmake config FEATURES="vst3 ui"
gmake fetch
gmake
sudo gmake install
The bundle produced by gmake install is unsigned and works as-is in
most hosts. However, if the bundle is modified after build — for
example by lipo-merging an arm64 and an x86_64 slice into a universal
binary, or by manually swapping a file inside it — the existing
_CodeSignature/CodeResources manifest no longer matches the contents,
and hosts that verify signatures (Ableton Live among them) reject the
bundle with code has no resources but signature indicates they must be present. The fix is to refresh the ad-hoc signature:
codesign --remove-signature lsp-plugins.vst3
codesign --force --deep --sign - lsp-plugins.vst3
codesign --verify --verbose=2 lsp-plugins.vst3
For debugging and getting crash stack trace with Ardour, please follow these steps:
After any post-build modification of the bundle (lipo merge, manual
file swap, etc.) the _CodeSignature/CodeResources manifest is stale
and codesign --verify will reject the bundle. Hosts such as Ableton
Live drop the bundle silently during plug-in scan and the plug-in
never appears in the browser. Re-sign ad-hoc:
codesign --remove-signature lsp-plugins.vst3
codesign --force --deep --sign - lsp-plugins.vst3
People using the unclutter tool reported spontaneous freeze of the UI for LSP Plugins.
The unclutter tool is pretty rare and has not been updated over the years. So it does
not follow the latest changes made for X.Org. The problem can be solved by switching to
unclutter-xfixes tool which works pretty OK with LSP UI.
There is no good support of MIDI interface in GStreamer now. Even if MIDI-based plugins are available for GStreamer, there is no guarantee that they will fully work.
LSP Plugins don't support Wayland protocol at this moment and are required to run under XWayland if Wayland is used as a system compositor. The implementation of XWayland is still imperfect and there are known cases where it can cause several problems with graphics.
There are several reasons why LSP Plugins don't support Wayland at this moment:
If you meet problems using LSP Plugins with Wayland, please consider switching back to X11.
This is the typical problem of interacting of the GUI with additional library that performs 3D rendering. The reason can be:
The short way to diagnose that the library was not found or not accepted by the UI is just to
visit the MENU -> 3D rendering (visible only for plugins that use 3D rendering) and
ensure that there are no available items in the submenu.
To solve the problem, you need:
liblsp-r3d-glx library is present in /usr/lib or in
/usr/local/lib system paths OR:liblsp-r3d-glx library is placed nearby the plugin's binaries
if you have some custom installation of the bundle (for example, in your HOME directory);liblsp-r3d-glx is matching to installed binaries;Since release 1.1.4 there is implemented testing subsystem that allows:
Manual tests are semi-automated or not automated at all. You may launch these tests to perform manual interaction with system or for retrieving some text data for further processing.
Unit tests are completely automated and check that the produced result is correct for the specific input data. By default unit tests are launched in separate processes and utilize all CPU cores for maximum performance. The status of each unit test is collected during execution and list of all failed tests are printed after completion.
Performance tests measure performance of some function/module under different conditions, gather final statistics and output them in a table format. These tests are very useful for measuring single-core performance of different modules and functions and performing code optimizations.
To build testing subsystem, issue the following commands and enable test feature in
FEATURES parameter:
make clean
make config ADD_FEATURES='test'
make
After build, we can launch the test binary by issuing command:
.build/host/lsp-plugin-fw/lsp-plugins-test
This binary provides simple command-line interface, so here's the full usage:
USAGE: {utest|ptest|mtest} [args...] [test name...]
First argument:
utest Unit testing subsystem
ptest Performance testing subsystem
mtest Manual testing subsystem
Additional arguments:
-a, --args [args...] Pass arguments to test
-d, --debug Disable time restrictions for unit tests
for debugging purposes
-e, --execute Launch tests specified after this switch
-f, --fork Fork child processes (opposite to --nofork)
-h, --help Display help
-i, --ignore Ignore tests specified after this switch
-j, --jobs Set number of job workers for unit tests
-l, --list List all available tests
-mt, --mtrace Enable mtrace log
-nf, --nofork Do not fork child processes (for better
debugging capabilities)
-nt, --nomtrace Disable mtrace log
-o, --outfile file Output performance test statistics to specified file
-s, --silent Do not output additional information from tests
-t, --tracepath path Override default trace path with specified value
-v, --verbose Output additional information from tests
Each test has fully-qualified name separated by dot symbols, tests from different test spaces (utest, ptest, mtest) may have similar fully-qualified names.
To obtain a list of all unit tests we can issue:
.build/host/lsp-plugin-fw/lsp-plugins-test utest --list
And then we can launch all complex number processing unit tests and additionally 'dsp.mix' unit test:
.build/host/lsp-plugin-fw/lsp-plugins-test utest dsp.complex.* dsp.pcomplex.* dsp.mix
If we don's specify any unit test name in argument, then all available unit tests will be launched.
To start debugging of some unit test, you need to pass additional arguments:
.build/host/lsp-plugin-fw/lsp-plugins-test/lsp-plugins-test utest --nofork --debug --verbose
Because unit tests are short-time fully-automated tests, they are parallelized and executed by default by number_of_cores*2 processes. To disable this, we specify option --nofork. Also, unit test execution time is limited by 5 seconds by default, so when debugging, our tests will be killed. That's why we specify --debug option to disable time control. Option --verbose allows to output additional information by the unit test that is turned off by default.
We also can use performance tests to obtain full performance profile of target machine. Because performance tests in most cases take much time for gathering statistics, the final statistics for each test can be saved in a separate file by specifying --outfile option:
.build/host/lsp-plugin-fw/lsp-plugins-test ptest -o performance-test.log
Manual tests are mostly designed for developers' purposes.
The Code of the project has been verified by the following SAST tools:
Because there are many GNU/Linux distributions and software configurations, and, possible, internal bugs, plugins may have bad performance or even crash. The good way to find the solutiong is to submit a bug or crash report. This section describes the way to give detailed information to developers.
To submit a good bug or crash report, you should answer these questions:
There is possible to submit feature requests and bugs on the GitHub.com page of the project: https://github.com/sadko4u/lsp-plugins/issues
Sourceforge.net page of the project: https://sourceforge.net/p/lsp-plugins/tickets/
You may contact us on the special feedback page: https://lsp-plug.in/?page=feedback
Hope you have enjoyed our work!
208 followers · starred Nov 2024
967 followers · starred Sep 2024
98 followers · starred Jun 2022
355 followers · starred Mar 2021