LabSound is a C++ graph-based audio engine. LabSound originated as a fork of WebKit's WebAudio implementation, as used in Google's Chrome and Apple's Safari.
LabSound implements many aspects of the WebAudio specification while extending its functionality with an improved API, new graph nodes, bugfixes, and performance improvements.
The engine is packaged as a batteries-included static library meant for integration in many types of software: games, visualizers, interactive installations, live coding environments, VST plugins, audio editing/sequencing applications, and more.
LabSound supports a variety of backends, including RtAudio and CoreAudio.
LabSound is currently tested on
In the past, LabSound has been demonstrated to work on iOS, Android, and Linux via JACK.
Users of LabSound are expected to compile LabSound from source. While most dependencies are included as code in the repository, libnyquist is bundled as a git submodule so it is required that new users clone the repository with the
The submodules can be fetched after a clone with
git submodule update --init --recursive
LabSound and libnyquist require a C++14 or greater compiler.
LabSound has a
CMakeLists.txt at the root directory, and all the associated CMake files are in the
cmake/ subfolder. In the following examples, the build is done in a nested build directory. This is not required, it's shown for illustrative purposes. You may put the build and the install prefix anywhere you like.
On macOs and Windows:
mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=../../labsound-distro .. cmake --build . --target install --config Release
On Linux, a backend must be selected, using one of ALSA, Pulse, or Jack. To build with ALSA:
mkdir build cd build cmake -DLABSOUND_ASOUND=1 .. cmake --build . --target install --config Release
On Raspberry Pi, as on Linux, a backend must be selected. The currently tested configuration is ALSA. Be sure to install the asound development libraries before building.
sudo apt install libasound2-dev
mkdir build cd build cmake -G "Xcode" -DCMAKE_TOOLCHAIN_FILE=../cmake/ios-toolchain.cmake -DCMAKE_INSTALL_PREFIX=../../labsound-distro-ios .. cmake --build . --target install --config Release
LabSound is bundled with many samples. Project files can be found in the
Users should link against
liblabsound.a on OSX and
labsound.lib on Windows. LabSound also requires symbols from libnyquist, although both the Visual Studio solution and the XCode workspace will build this dependency alongside the core library.
On OSX, new applications also require the following frameworks:
On Windows, new applications also require the following libraries:
LabSound.h is used as an index header file with all public nodes included for easy application development.
LabSound includes an HRTF implementation. This creates an additional dependency on a folder of impulse wav files when a
PannerNode is configured to use
PanningMode::HRTF. The constructor of
PannerNode will take an additional path to the sample directory relative to the current working directory.
LabSound is released under the simplified BSD 2 clause license. All LabSound dependencies are under similar permissive licenses. Further details are located in the