diff --git a/LICENSE.md b/LICENSE.md index c8e863bd..25c59de3 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -7,6 +7,8 @@ Contributors include: - Paul Ferrand (2019-) paul at ferrand dot cc - Andrea Zanellato (2019-) - Jean-Pierre Cimalando (2020-) +- Michael Willis (2020-) +- Alexander Mitchell (2020-) All rights reserved. diff --git a/README.md b/README.md index 98db9add..178457c1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Building -`sfizz` depends on the `libsndfile` library. +`sfizz` depends mainly on the `libsndfile` library. The JACK client depends on the `jack` library. To build `sfizz` you need to install both as shared libraries on the system. In Debian-based distributions, this translates into @@ -34,7 +34,7 @@ sudo make install By default this builds and installs: - The shared library version of sfizz - The JACK client -- The LV2 plugin +- The LV2 plugin with system libraries dynamically loaded 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`). @@ -83,3 +83,58 @@ This builds the lv2 plugin in `build\lv2\Release` and the Turtle files in `build In particular, having the required DLLs along with `sfizz.dll` is actually not helpful because the system cannot find dlls from another dll's root directory. You thus need to add all of `FLAC.dll`, `libsndfile-1.dll`, `vorbis.dll`, `ogg.dll`, `vorbisenc.dll` in some directory in your `PATH` variable, and manually add `sfizz.dll` to the `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 `docker_lv2_release.sh` 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. + +## Case issues in SFZ libraries + +Most SFZ libraries are built for Windows or macOS and both systems use case-insensitive file systems by default. +This means that SFZ library developers may miss that the sample names used in their file does not have the same case as the ones in their filesystems. +This will be painful for Linux folks. +If you see that this is the case for a library you want to use, you can apply the `sfz_sample_checks.py` script located in the `scripts` directory of this repo to the `.sfz` file. +The usage is as follows: + +```sh +usage: sfz_sample_checks.py [-h] [--output OUTPUT] [--test] file + +Simple script to update the sample names in an existing SFZ files + +positional arguments: + file SFZ input file + +optional arguments: + -h, --help show this help message and exit + --output OUTPUT Output file name; if not specified, _corrected will be + appended to the input + --test Test run +``` + +Don't hesitate to propose to the sfz library maker to give him the updated file or use the script by himself or herself; this will be transparent for Windows or macOS users and make life of Linux users much easier. + +## 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](https://github.com/erikd/libsndfile/) (licensed under the GNU Lesser General Public License v2.1) +- [Abseil](https://github.com/abseil/abseil-cpp) (licensed under the Apache License 2.0) +- [atomic_queue](https://github.com/max0x7ba/atomic_queue) by Maxim Egorushkin (licensed under the MIT license) +- [filesystem](https://github.com/gulrak/filesystem) by Steffen Schümann (licensed under the BSD 3-Clause license) +- [hiir](http://ldesoras.free.fr/prod.html#src_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](https://github.com/catchorg/Catch2) (licensed under the Boost Software License 1.0) +- [benchmark](https://github.com/google/benchmark) (licensed under the Apache License 2.0) +- [LV2](https://lv2plug.in/) (licensed under the ISC license) +- [JACK](https://github.com/jackaudio/jack2) (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)