Skip to content
SFZ library and LV2 plugin
C++ C CMake Shell HTML CSS Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks Make the build sytem MinGW-compatible Jan 31, 2020
cmake Merge pull request #34 from jpcima/mingw Feb 1, 2020
external Pinned abseil to 67d63a Feb 2, 2020
scripts Updated Dockerfile Jan 30, 2020
src Allow it to build on 32-bit Jan 31, 2020
tests Updated tests Jan 30, 2020
.editorconfig Minor changes Dec 30, 2019
.gitignore Added Arm64 Travis build Dec 22, 2019
.travis.yml Change IRC notifications channel Jan 24, 2020
CMakeLists.txt Compatibility with CMake 3.5 Jan 31, 2020
Doxyfile Automated Doxygen documentation with Travis-CI Dec 2, 2019 Updated README Jan 25, 2020 Removed the part about additional DLLs Jan 31, 2020


Travis Build Status


Most people will probably want the LV2 plugin with libsndfile built-in statically. You can directly build it this way through Docker by calling these in an empty directory :

docker build -t sfizz .
docker cp $(docker create sfizz:latest):/tmp/sfizz/build/sfizz.lv2 .

Note that the statically linked LV2 plugin is to be distributed under the LGPL license, as per the terms of the libsndfile library.

More generic builds and development

sfizz depends mainly on the libsndfile library. To build the other sfizz targets you need to install both libsndfile and JACK as shared libraries on the system. In Debian-based distributions, this translates into

sudo apt install libjack-jackd2-dev libsndfile1-dev

The benchmarks depend on the benchmark library ( If you wish to build the benchmarks you should either build it from source and install the static library, or use the library from your distribution---Ubuntu proposes a libbenchmark-dev package that does this.

The process is as follows:

  1. Clone the repository with all the submodules
  2. Create a build directory for CMake and cd into it
  3. Build as release
  4. Enjoy :)

In the shell world, this means

git clone --recursive
git checkout develop
cd sfizz
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
sudo make install

By default this builds and installs:

  • The shared library version of sfizz with both C and C++ interfaces
  • The JACK client

The JACK client client will forcefully connect to the system output, and open an event input in Jack for you to connect a midi capable software or hardware (e.g. jack-keyboard).

Note that you can disable all targets but the LV2 plugin using


and process as before. In this case, the LV2 plugin will load libsndfile dynamically from your system.

Possible pitfalls and alternatives

If you already cloned the repository without the --recursive option, update the submodules manually with

git submodule update --init --recursive

You can build with clang, although in that case the CMakeFile defaults to using libc++ instead of libstdc++.

Building with MSVC on windows

The simplest is to use vcpkg as a package manager, which will give you access to libsndfile.

git clone
cd vcpkg
.\vcpkg integrate install
.\vcpkg integrate powershell

Assuming you want to build for x64, install the relevant packages as follows

.\vcpkg.exe install libsndfile:x64-windows-static benchmark:x64-windows-static

In the sfizz source directory, you can then build with CMake as usual, although you should clone the windows branch:

git clone --recursive
cd sfizz
mkdir build
cd build
cmake .. -DSFIZZ_JACK=OFF "-DCMAKE_TOOLCHAIN_FILE=C:\Users\Paul\source\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build . -j 16 --config Release

This builds the lv2 plugin in build\lv2\Release and the Turtle files in build\sfizz.lv2, but the installation procedure is not entirely automatic yet. You need to manually add lv2\Release\sfizz.dll to the build\sfizz.lv2 directory, and the the sfizz.lv2 directory to %APPDATA%\Roaming\LV2. Ardour should then find the plugin correctly and load it without issues.

Building the LV2 plugin with static linkage to libsndfile on Linux

This uses Docker and vcpkg on Linux. Install a Docker version and use the Dockerfile located in scripts/. The scripts/ directory also contains a file that automates downloading the current develop branch and building an LV2 release plugin. Note that the statically linked LV2 plugin is to be distributed under the LGPL license, as per the terms of the libsndfile library.

License and contribution information

Contributors to sfizz include:

  • Paul Ferrand (2019-) (maintainer)
  • Andrea Zanellato (2019-) (devops, documentation and distribution)
  • Jean-Pierre Cimalando (2020-)
  • Michael Willis (2020-)
  • Alexander Mitchell (2020-)

The sfizz library makes primary use of:

  • libsndfile (licensed under the GNU Lesser General Public License v2.1)
  • Abseil (licensed under the Apache License 2.0)
  • atomic_queue by Maxim Egorushkin (licensed under the MIT license)
  • filesystem by Steffen Schümann (licensed under the BSD 3-Clause license)
  • hiir by Laurent de Soras (licensed under the Do What The Fuck You Want To Public License v2 license)

The sfizz library also uses in some subprojects:

  • Catch2 (licensed under the Boost Software License 1.0)
  • benchmark (licensed under the Apache License 2.0)
  • LV2 (licensed under the ISC license)
  • JACK (licensed under the GNU Lesser General Public License v2.1)
  • neon_mathfun.h and sse_mathfun.h by Julien Pommier (licensed under the zlib license)
You can’t perform that action at this time.