Mercurial > hg > sv-dependency-builds
diff src/rubberband-1.8.1/README.txt @ 10:37bf6b4a2645
Add FFTW3
author | Chris Cannam |
---|---|
date | Wed, 20 Mar 2013 15:35:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rubberband-1.8.1/README.txt Wed Mar 20 15:35:50 2013 +0000 @@ -0,0 +1,475 @@ + +Rubber Band +=========== + +An audio time-stretching and pitch-shifting library and utility program. + +Written by Chris Cannam, chris.cannam@breakfastquay.com. +Copyright 2007-2012 Particular Programs Ltd. + +Rubber Band is a library and utility program that permits changing the +tempo and pitch of an audio recording independently of one another. + +See http://breakfastquay.com/rubberband/ for more information. + + +Licence +======= + +Rubber Band is distributed under the GNU General Public License. See +the file COPYING for more information. + +If you wish to distribute code using the Rubber Band Library under +terms other than those of the GNU General Public License, you must +obtain a commercial licence from us before doing so. In particular, +you may not legally distribute through any Apple App Store unless you +have a commercial licence. See http://breakfastquay.com/rubberband/ +for licence terms. + +If you have obtained a valid commercial licence, your licence +supersedes this README and the enclosed COPYING file and you may +redistribute and/or modify Rubber Band under the terms described in +that licence. Please refer to your licence agreement for more details. + +Note that Rubber Band may link with other GPL libraries or with +proprietary libraries, depending on its build configuration. See the +section "FFT and resampler selection" below. It is your responsibility +to ensure that you redistribute only in accordance with the licence +terms of any other libraries you may build with. + + +Contents of this README +----------------------- + +1. Code components +2. Using the Rubber Band command-line tool +3. Using the Rubber Band Library +4. Compiling Rubber Band + a. FFT and resampler selection + b. Other supported #defines + c. GNU/POSIX systems and Makefiles + d. OS/X and iOS + e. Win32 and Visual Studio + f. Android and Java +5. Copyright notes for bundled libraries + + +1. Code components +------------------ + +Rubber Band consists of: + + * The Rubber Band library code. This is the code that will normally + be used by your applications. The headers for this are in the + rubberband/ directory, and the source code is in src/. + The Rubber Band library depends upon resampler and FFT code; see + section 3a below for details. + + * The Rubber Band command-line tool. This is in main/main.cpp. + This program uses the Rubber Band library and also requires libsndfile + (http://www.mega-nerd.com/libsndfile/, licensed under the GNU Lesser + General Public License) for audio file loading. + + * A pitch-shifter LADSPA audio effects plugin. This is in ladspa/. + It requires the LADSPA SDK header ladspa.h (not included). + + * A Vamp audio analysis plugin which may be used to inspect the + dynamic stretch ratios and other decisions taken by the Rubber Band + library when in use. This is in vamp/. It requires the Vamp + plugin SDK (http://www.vamp-plugins.org/develop.html) (not included). + + +2. Using the Rubber Band command-line tool +------------------------------------------ + +The Rubber Band command-line tool builds as bin/rubberband. The basic +incantation is + + $ rubberband -t <timeratio> -p <pitchratio> <infile.wav> <outfile.wav> + +For example, + + $ rubberband -t 1.5 -p 2.0 test.wav output.wav + +stretches the file test.wav to 50% longer than its original duration, +shifts it up in pitch by one octave, and writes the output to output.wav. + +Several further options are available: run "rubberband -h" for help. +In particular, different types of music may benefit from different +"crispness" options (-c <n> where <n> is from 0 to 6). + + +3. Using the Rubber Band library +-------------------------------- + +The Rubber Band library has a public API that consists of one C++ +class, called RubberBandStretcher in the RubberBand namespace. You +should #include <rubberband/RubberBandStretcher.h> to use this class. +There is extensive documentation in the class header. + +A header with C language bindings is also provided in +<rubberband/rubberband-c.h>. This is a wrapper around the C++ +implementation, and as the implementation is the same, it also +requires linkage against the C++ standard libraries. It is not yet +documented separately from the C++ header. You should include only +one of the two headers, not both. + +The source code for the command-line utility (main/main.cpp) provides +a good example of how to use Rubber Band in offline mode; the LADSPA +pitch shifter plugin (ladspa/RubberBandPitchShifter.cpp) may be used +as an example of Rubber Band in real-time mode. + +IMPORTANT: Please ensure you have read and understood the licensing +terms for Rubber Band before using it in your application. This +library is provided under the GNU General Public License, which means +that any application that uses it must also be published under the GPL +or a compatible licence (i.e. with its full source code also available +for modification and redistribution) unless you have separately +acquired a commercial licence from the author. + + +4. Compiling Rubber Band +------------------------ + +4a. FFT and resampler selection +------------------------------- + +Rubber Band requires additional library code for FFT calculation and +resampling. Several libraries are supported. The selection is +controlled using preprocessor flags at compile time, as detailed in +the tables below. + +Flags that declare that you want to use an external library begin with +HAVE_; flags that select from the bundled options begin with USE_. + +You must enable one resampler implementation and one FFT +implementation. Do not enable more than one of either unless you know +what you're doing. + +If you are building this software using one of the bundled library +options (Speex or KissFFT), please be sure to review the terms for +those libraries in src/speex/COPYING and src/kissfft/COPYING as +applicable. + +FFT libraries supported +----------------------- + +Name Flags required Notes +---- -------------- ----- + +FFTW3 -DHAVE_FFTW GPL. + +Accelerate -DHAVE_VDSP Platform library on OS/X and iOS. + +Intel IPP -DHAVE_IPP Proprietary library, can only be used with + Rubber Band commercial licence. Define + USE_IPP_STATIC as well to build with static + IPP libraries. + +KissFFT -DUSE_KISSFFT Bundled, can be used with GPL or commercial + licence. Single-precision. Slower than the + above options. + +Resampler libraries supported +----------------------------- + +Name Flags required Notes +---- -------------- ----- + +libsamplerate -DHAVE_LIBSAMPLERATE GPL. + +libresample -DHAVE_LIBRESAMPLE LGPL. + +Speex -DUSE_SPEEX Bundled, can be used with GPL or commercial + licence. + + +4b. Other supported #defines +---------------------------- + +Other symbols you may define at compile time are as follows. (Usually +the supplied build files will handle these for you.) + + -DLACK_BAD_ALLOC + Define on systems lacking std::bad_alloc in the C++ library. + + -DLACK_POSIX_MEMALIGN + Define on systems lacking posix_memalign. + + -DUSE_OWN_ALIGNED_MALLOC + Define on systems lacking any aligned malloc implementation. + + -DLACK_SINCOS + Define on systems lacking sincos(). + + -DNO_EXCEPTIONS + Build without use of C++ exceptions. + + -DNO_THREADING + Build without any multithread support. + + -DUSE_PTHREADS + Use the pthreads library (required unless NO_THREADING or on Windows) + + -DPROCESS_SAMPLE_TYPE=float + Select single precision for internal calculations. The default is + double precision. Consider using for mobile architectures with + slower double-precision support. + + -DUSE_POMMIER_MATHFUN + Select the Julien Pommier implementations of trig functions for ARM + NEON or x86 SSE architectures. These are usually faster but may be + of lower precision than system implementations. Consider using this + for mobile architectures. + + +4c. GNU/POSIX systems and Makefiles +----------------------------------- + +A GNU-style configure script is included for use on Linux and similar +systems. + +Run ./configure, then adjust the generated Makefile according to your +preference for FFT and resampler implementations. The default is to +use FFTW3 and libsamplerate. + +The following Makefile targets are available: + + static -- build static libraries only + dynamic -- build dynamic libraries only + library -- build static and dynamic libraries only + program -- build the command-line tool + vamp -- build Vamp plugin + ladspa -- build LADSPA plugin + all -- build everything. + +The default target is "all". + + +4d. OS/X and iOS +---------------- + +A Makefile for OS/X is provided as Makefile.osx. + +Adjust the Makefile according to your preference for compiler and +platform SDK, FFT and resampler implementations. The default is to +use the Accelerate framework and the Speex resampler. + +The following Makefile targets are available: + + static -- build static libraries only + dynamic -- build dynamic libraries only + library -- build static and dynamic libraries only + program -- build the command-line tool + vamp -- build Vamp plugin + ladspa -- build LADSPA plugin + all -- build everything. + +The default target is to build the static and dynamic libraries and +the command line tool. The sndfile library is required for the +command line tool. + +If you prefer to add the Rubber Band library files to an existing +build project instead of using the Makefile, the files in src/ (except +for RubberBandStretcherJNI.cpp) and the API headers in rubberband/ +should be all you need. + +Note that you cannot legally distribute applications using Rubber Band +through the iPhone/iPad App Store or OS/X App Store unless you have a +valid commercial licence. GPL code is not permitted in these stores. + + +4e. Win32 and Visual Studio +--------------------------- + +Two Visual Studio 2005 projects are supplied. + +rubberband-library.vcproj builds the Rubber Band static libraries +only. + +rubberband-program.vcproj builds the Rubber Band command-line tool +only (requires the Rubber Band libraries, and libsndfile). + +You will need to adjust the project settings so as to set the compile +flags according to your preference for FFT and resampler +implementation, and set the include path and library path +appropriately. The default is to use the bundled KissFFT and the +Speex resampler. + +If you prefer to add the Rubber Band library files to an existing +build project instead of using the supplied one, the files in src/ +(except for RubberBandStretcherJNI.cpp) and the API headers in +rubberband/ should be all you need. + + +4f. Android and Java +-------------------- + +An Android NDK build file is provided as Android.mk. This includes +compile definitions for a shared library built for ARM architectures +which can be loaded from a Java application using the Java native +interface (i.e. the Android NDK). + +The Java side of the interface can be found in +com/breakfastquay/rubberband/RubberBandStretcher.java. + +The supplied .mk file uses KissFFT and the Speex resampler. + + +5. Copyright notes for bundled libraries +======================================== + +5a. Speex +--------- + +[files in src/speex] + +Copyright 2002-2007 Xiph.org Foundation +Copyright 2002-2007 Jean-Marc Valin +Copyright 2005-2007 Analog Devices Inc. +Copyright 2005-2007 Commonwealth Scientific and Industrial Research + Organisation (CSIRO) +Copyright 1993, 2002, 2006 David Rowe +Copyright 2003 EpicGames +Copyright 1992-1994 Jutta Degener, Carsten Bormann + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +5b. KissFFT +----------- + +[files in src/kissfft] + +Copyright (c) 2003-2004 Mark Borgerding + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the author nor the names of any contributors may be used + to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +5c. Pommier math functions +-------------------------- + +[files in src/pommier] + +Copyright (C) 2011 Julien Pommier + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +5d. float_cast +-------------- + +[files in src/float_cast] + +Copyright (C) 2001 Erik de Castro Lopo <erikd AT mega-nerd DOT com> + +Permission to use, copy, modify, distribute, and sell this file for any +purpose is hereby granted without fee, provided that the above copyright +and this permission notice appear in all copies. No representations are +made about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + + +5d. getopt +---------- + +[files in src/getopt, used by command-line tool on some platforms] + +Copyright (c) 2000 The NetBSD Foundation, Inc. +All rights reserved. + +This code is derived from software contributed to The NetBSD Foundation +by Dieter Baron and Thomas Klausner. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. +4. Neither the name of The NetBSD Foundation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE.