Make mention of built-in resampler; wording tweaks

This commit is contained in:
Chris Cannam
2021-10-05 09:59:43 +01:00
parent 18907f92f7
commit 91c44fc8b8

View File

@@ -1,5 +1,5 @@
# Rubber Band # Rubber Band Library
An audio time-stretching and pitch-shifting library and utility program. An audio time-stretching and pitch-shifting library and utility program.
@@ -29,12 +29,12 @@ License (GPL). You can redistribute it and/or modify it under the
terms of the GPL; either version 2 of the License, or (at your option) terms of the GPL; either version 2 of the License, or (at your option)
any later version. See the file COPYING for more information. any later version. See the file COPYING for more information.
If you wish to distribute code using the Rubber Band Library under If you wish to distribute code using Rubber Band Library under terms
terms other than those of the GNU General Public License, you must other than those of the GNU General Public License, you must obtain a
obtain a commercial licence from us before doing so. In particular, commercial licence from us before doing so. In particular, you may not
you may not legally distribute through any Apple App Store unless you legally distribute through any Apple App Store unless you have a
have a commercial licence. See https://breakfastquay.com/rubberband/ commercial licence. See https://breakfastquay.com/rubberband/ for
for licence terms. licence terms.
If you have obtained a valid commercial licence, your licence If you have obtained a valid commercial licence, your licence
supersedes this README and the enclosed COPYING file and you may supersedes this README and the enclosed COPYING file and you may
@@ -68,7 +68,7 @@ our knowledge. See also the end of this README for detailed terms.
1. Code components 1. Code components
2. Using the Rubber Band command-line tool 2. Using the Rubber Band command-line tool
3. Using the Rubber Band Library 3. Using Rubber Band Library
4. Compiling Rubber Band 4. Compiling Rubber Band
a. Building on Linux a. Building on Linux
b. Building on macOS b. Building on macOS
@@ -91,7 +91,7 @@ Rubber Band consists of:
and FFT code; see section 3a below for details. and FFT code; see section 3a below for details.
* The Rubber Band command-line tool. This is in main/main.cpp. * The Rubber Band command-line tool. This is in main/main.cpp.
This program uses the Rubber Band Library and also requires libsndfile This program uses Rubber Band Library and also requires libsndfile
(http://www.mega-nerd.com/libsndfile/, licensed under the GNU Lesser (http://www.mega-nerd.com/libsndfile/, licensed under the GNU Lesser
General Public License) for audio file loading. General Public License) for audio file loading.
@@ -127,12 +127,12 @@ In particular, different types of music may benefit from different
"crispness" options (-c flag with a numerical argument from 0 to 6). "crispness" options (-c flag with a numerical argument from 0 to 6).
## 3. Using the Rubber Band Library ## 3. Using Rubber Band Library
The Rubber Band Library has a public API that consists of one C++ Rubber Band has a public API that consists of one C++ class, called
class, called RubberBandStretcher in the RubberBand namespace. You `RubberBandStretcher` in the `RubberBand` namespace. You should
should `#include <rubberband/RubberBandStretcher.h>` to use this `#include <rubberband/RubberBandStretcher.h>` to use this class.
class. There is extensive documentation in the class header. There is extensive documentation in the class header.
A header with C language bindings is also provided in A header with C language bindings is also provided in
`<rubberband/rubberband-c.h>`. This is a wrapper around the C++ `<rubberband/rubberband-c.h>`. This is a wrapper around the C++
@@ -158,18 +158,26 @@ for modification and redistribution) unless you have separately
acquired a commercial licence from the author. acquired a commercial licence from the author.
## 4. Compiling the Rubber Band Library ## 4. Compiling Rubber Band Library
The primary supported build system for the Rubber Band Library on all The primary supported build system for Rubber Band on all platforms is
platforms is Meson (https://mesonbuild.com). The Meson build system Meson (https://mesonbuild.com). The Meson build system can be used to
can be used to build all targets (static and dynamic library, build all targets (static and dynamic library, command-line utility,
command-line utility, and plugins) and to cross-compile. and plugins) and to cross-compile.
If you only need a static library and don't wish to use Meson, some If you only need a static library and don't wish to use Meson, some
alternative build files (Makefiles and Visual C++ projects) are alternative build files (Makefiles and Visual C++ projects) are
included in the `otherbuilds` directory. See the platform-specific included in the `otherbuilds` directory. See the platform-specific
build sections below for more details. build sections below for more details.
☞ If you want to include Rubber Band in a C++ project and would prefer
not to compile a separate library, there is a single `.cpp` file at
`single/RubberBandSingle.cpp` which can be added to your project
as-is. It produces a single compilation-unit build with the built-in
FFT and resampler implementations with no further library
dependencies. See the comments at the top of that file for more
information.
To build with Meson, ensure Meson and Ninja are installed and run: To build with Meson, ensure Meson and Ninja are installed and run:
``` ```
@@ -193,7 +201,7 @@ $ meson build -Dipp_path=/opt/intel/ipp
The options are documented in the library- and platform-specific The options are documented in the library- and platform-specific
sections below. sections below.
The Rubber Band Library is written entirely in C++ to the C++98 Rubber Band Library is written entirely in C++ to the C++98
standard. It is unlikely to make any difference (performance or standard. It is unlikely to make any difference (performance or
otherwise) which C++ standard your compiler uses - as long as it's no otherwise) which C++ standard your compiler uses - as long as it's no
older than C++98! older than C++98!
@@ -268,8 +276,8 @@ See "FFT and resampler selection" below for further build options.
Note that you cannot legally distribute applications using Rubber Band Note that you cannot legally distribute applications using Rubber Band
in the Mac App Store, unless you have first obtained a commercial in the Mac App Store, unless you have first obtained a commercial
licence for the Rubber Band Library. GPL code is not permitted in the licence for Rubber Band Library. GPL code is not permitted in the app
app store. See https://breakfastquay.com/technology/license.html for store. See https://breakfastquay.com/technology/license.html for
commercial terms. commercial terms.
@@ -295,8 +303,8 @@ See "FFT and resampler selection" below for further build options.
Note that you cannot legally distribute applications using Rubber Band Note that you cannot legally distribute applications using Rubber Band
in the iOS App Store, unless you have a first obtained a commercial in the iOS App Store, unless you have a first obtained a commercial
licence for the Rubber Band Library. GPL code is not permitted in the licence for Rubber Band Library. GPL code is not permitted in the app
app store. See https://breakfastquay.com/technology/license.html for store. See https://breakfastquay.com/technology/license.html for
commercial terms. commercial terms.
@@ -409,10 +417,21 @@ Library Build option CPP define Notes
---- ------------ ---------- ----- ---- ------------ ---------- -----
libsamplerate -DHAVE_LIBSAMPLERATE libsamplerate -DHAVE_LIBSAMPLERATE
-Dresampler=libsamplerate Best choice in most cases. -Dresampler=libsamplerate Default when found.
Good choice in most cases.
Built-in -Dfft=builtin -DUSE_BQRESAMPLER
Default when libsamplerate not found.
Can be distributed with either
the Rubber Band GPL or
commercial licence. Intended to
give best quality for time-varying
pitch shifts in real-time mode.
Newer than, and not as well-tested
as, libsamplerate.
Speex -DUSE_SPEEX Speex -DUSE_SPEEX
-Dresampler=speex Bundled, can be distributed with -Dresampler=speex Can be distributed with
either the Rubber Band GPL or either the Rubber Band GPL or
commercial licence. commercial licence.
``` ```