Merge from default branch
This commit is contained in:
@@ -1,18 +1,22 @@
|
||||
|
||||
image:
|
||||
- Visual Studio 2019
|
||||
|
||||
configuration:
|
||||
- Release
|
||||
|
||||
platform:
|
||||
- x86
|
||||
- x64
|
||||
|
||||
install:
|
||||
- cinst wget
|
||||
- c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w32-setup.exe
|
||||
- c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe
|
||||
- ps: .\libsndfile-1.0.28-w32-setup.exe /silent /sp- /norestart
|
||||
- ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart
|
||||
- cinst meson
|
||||
- cinst libsndfile
|
||||
|
||||
build_script:
|
||||
- msbuild rubberband.sln
|
||||
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||
- meson build "-Dextra_include_dirs=C:\Program Files\libsndfile\include" "-Dextra_lib_dirs=C:\Program Files\libsndfile\lib"
|
||||
- ninja -C build
|
||||
# And test the .NET FFI interface build, which is completely separate
|
||||
- msbuild dotnet\rubberband.sln /t:Restore;Build
|
||||
|
||||
|
||||
25
.build.yml
Normal file
25
.build.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
image: ubuntu/20.04
|
||||
packages:
|
||||
- pkg-config
|
||||
- libsamplerate0-dev
|
||||
- libsndfile1-dev
|
||||
- libfftw3-dev
|
||||
- ladspa-sdk
|
||||
- vamp-plugin-sdk
|
||||
- meson
|
||||
- ninja-build
|
||||
sources:
|
||||
- hg+https://hg.sr.ht/~breakfastquay/rubberband
|
||||
tasks:
|
||||
- setup: |
|
||||
cd rubberband
|
||||
meson build
|
||||
- build: |
|
||||
cd rubberband
|
||||
ninja -C build
|
||||
./otherbuilds/check.sh
|
||||
triggers:
|
||||
- action: email
|
||||
condition: always
|
||||
to: chris.cannam@breakfastquay.com
|
||||
|
||||
27
.github/workflows/macos-ios.yml
vendored
Normal file
27
.github/workflows/macos-ios.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: macOS and iOS CI
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: deps
|
||||
run: brew install libsndfile libsamplerate vamp-plugin-sdk meson ninja
|
||||
- name: configure macos
|
||||
run: meson build_macos
|
||||
- name: configure ios
|
||||
run: meson build_ios --cross-file cross/ios.txt
|
||||
- name: make macos
|
||||
run: ninja -C build_macos
|
||||
- name: make ios
|
||||
run: ninja -C build_ios
|
||||
- name: check otherbuilds
|
||||
run: otherbuilds/check.sh
|
||||
|
||||
|
||||
11
.hgignore
11
.hgignore
@@ -18,7 +18,10 @@ doc/html
|
||||
*.rej
|
||||
cov-int
|
||||
*~
|
||||
re:^x64/Debug/
|
||||
re:^x64/Release/
|
||||
re:^Release/
|
||||
re:^Debug/
|
||||
x64/Debug/
|
||||
x64/Release/
|
||||
Release/
|
||||
Debug/
|
||||
build
|
||||
build_*
|
||||
UpgradeLog*
|
||||
|
||||
37
.travis.yml
37
.travis.yml
@@ -1,37 +0,0 @@
|
||||
dist:
|
||||
- trusty
|
||||
|
||||
language:
|
||||
- cpp
|
||||
|
||||
sudo:
|
||||
- false
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libsndfile-dev
|
||||
- libsamplerate-dev
|
||||
- libfftw3-dev
|
||||
- vamp-plugin-sdk
|
||||
- ladspa-sdk
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/Library/Caches/Homebrew
|
||||
- /usr/local/Homebrew
|
||||
|
||||
before_cache:
|
||||
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then brew cleanup; fi
|
||||
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then find /usr/local/Homebrew \! -regex ".+\.git.+" -delete; fi
|
||||
|
||||
before_install:
|
||||
- if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then brew update ; brew install libsndfile ; fi
|
||||
|
||||
script:
|
||||
- if [[ "$TRAVIS_OS_NAME" = "osx" ]] ; then make -f Makefile.osx && make -f Makefile.ios clean && make -f Makefile.ios ; else ./configure && make ; fi
|
||||
|
||||
400
README.md
400
README.md
@@ -5,7 +5,7 @@ An audio time-stretching and pitch-shifting library and utility program.
|
||||
|
||||
Written by Chris Cannam, chris.cannam@breakfastquay.com.
|
||||
Published by Particular Programs Ltd t/a Breakfast Quay.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 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.
|
||||
@@ -17,14 +17,17 @@ tempo and pitch of an audio recording independently of one another.
|
||||
|
||||
CI builds:
|
||||
|
||||
* [](https://travis-ci.org/breakfastquay/rubberband) (Linux, macOS, iOS)
|
||||
* [](https://builds.sr.ht/~breakfastquay/rubberband?) (Linux)
|
||||
* [](https://github.com/breakfastquay/rubberband/actions?query=workflow%3A%22macOS+and+iOS+CI%22) (macOS, iOS)
|
||||
* [](https://ci.appveyor.com/project/breakfastquay/rubberband) (Windows)
|
||||
|
||||
|
||||
## Licence
|
||||
|
||||
Rubber Band is distributed under the GNU General Public License. See
|
||||
the file COPYING for more information.
|
||||
Rubber Band Library is distributed under the GNU General Public
|
||||
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)
|
||||
any later version. 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
|
||||
@@ -40,9 +43,9 @@ that licence. Please refer to your licence agreement for more details.
|
||||
|
||||
Rubber Band includes a .NET interface generously contributed by
|
||||
Jonathan Gilbert under a BSD-like licence. The files in the
|
||||
rubberband-dll and rubberband-sharp directories fall under this
|
||||
licence. If you make use of this interface, please ensure you comply
|
||||
with the terms of its licence.
|
||||
dotnet/rubberband-dll and dotnet/rubberband-sharp directories fall
|
||||
under this licence. If you make use of this interface, please ensure
|
||||
you comply with the terms of its licence.
|
||||
|
||||
Rubber Band may link with other libraries or be compiled with other
|
||||
source code, depending on its build configuration. It is your
|
||||
@@ -67,13 +70,13 @@ our knowledge. See also the end of this README for detailed terms.
|
||||
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. Building on Linux
|
||||
d. Building on macOS
|
||||
e. Building for iOS
|
||||
f. Building on Windows with Visual C++
|
||||
g. Building for Android and Java integration
|
||||
a. Building on Linux
|
||||
b. Building on macOS
|
||||
c. Building for iOS
|
||||
d. Building on Windows
|
||||
e. Building for Android and Java integration
|
||||
f. FFT and resampler selection
|
||||
g. Other supported #defines
|
||||
5. Copyright notes for bundled libraries
|
||||
|
||||
|
||||
@@ -106,11 +109,15 @@ Rubber Band consists of:
|
||||
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.
|
||||
@@ -135,7 +142,7 @@ documented separately from the C++ header. You should include only
|
||||
one of the two headers, not both.
|
||||
|
||||
A .NET interface is also included, contributed by Jonathan Gilbert;
|
||||
see the files in the `rubberband-sharp/` directory for details.
|
||||
see the files in the `dotnet` directory for details.
|
||||
|
||||
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
|
||||
@@ -153,19 +160,199 @@ acquired a commercial licence from the author.
|
||||
|
||||
## 4. Compiling the Rubber Band Library
|
||||
|
||||
### 4a. FFT and resampler selection
|
||||
The primary supported build system for the Rubber Band Library on all
|
||||
platforms is Meson (https://mesonbuild.com). To build, ensure Meson
|
||||
and Ninja are installed and run:
|
||||
|
||||
```
|
||||
$ meson build && ninja -C build
|
||||
```
|
||||
|
||||
This checks for necessary dependencies, reports what it finds, and if
|
||||
all is well, builds the code into a subdirectory called `build`. It
|
||||
will build everything it can find the requisite dependencies for:
|
||||
static and dynamic libraries, LADSPA and Vamp plugins, and
|
||||
command-line utility.
|
||||
|
||||
Some configuration options are provided, described in the
|
||||
`meson_options.txt` file. To set one of these, add a `-D` option to
|
||||
Meson:
|
||||
|
||||
```
|
||||
$ meson build -Dipp_path=/opt/intel/ipp
|
||||
```
|
||||
|
||||
The options are documented in the library- and platform-specific
|
||||
sections below.
|
||||
|
||||
For those who don't wish to use Meson, some alternative build files
|
||||
(Makefiles and Visual C++ projects) are included in the `otherbuilds`
|
||||
directory. These build only the static library.
|
||||
|
||||
The Rubber Band Library is written entirely in C++ to the C++98
|
||||
standard. It is unlikely to make any difference (performance or
|
||||
otherwise) which C++ standard your compiler uses - as long as it's no
|
||||
older than C++98!
|
||||
|
||||
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.
|
||||
|
||||
|
||||
### 4a. Building on Linux
|
||||
|
||||
For best results, and to ensure the command-line tool and plugins are
|
||||
built, first install libsamplerate, libsndfile, and the LADSPA and
|
||||
Vamp plugin headers so they can be found using `pkg-config`. Then
|
||||
|
||||
```
|
||||
$ meson build && ninja -C build
|
||||
```
|
||||
|
||||
See "FFT and resampler selection" below for further build options.
|
||||
|
||||
Alternatively, if you only need the static library and prefer a
|
||||
Makefile, try
|
||||
|
||||
```
|
||||
$ make -f otherbuilds/Makefile.linux
|
||||
```
|
||||
|
||||
|
||||
### 4b. Building on macOS
|
||||
|
||||
Ensure the Xcode command-line tools are installed, and ideally also
|
||||
install libsamplerate and libsndfile.
|
||||
|
||||
To build for the native architecture of the build machine:
|
||||
|
||||
```
|
||||
$ meson build && ninja -C build
|
||||
```
|
||||
|
||||
To build for Intel (x86_64) regardless of the native architecture:
|
||||
|
||||
```
|
||||
$ meson build --cross-file cross/macos-x86_64.txt && ninja -C build
|
||||
```
|
||||
|
||||
To build for Apple Silicon (arm64) regardless of the native
|
||||
architecture:
|
||||
|
||||
```
|
||||
$ meson build --cross-file cross/macos-arm64.txt && ninja -C build
|
||||
```
|
||||
|
||||
You can build a universal binary library for both architectures like
|
||||
this:
|
||||
|
||||
```
|
||||
$ meson build --cross-file cross/macos-universal.txt && ninja -C build
|
||||
```
|
||||
|
||||
However, the resulting binary will be marked as loadable on macOS 11+
|
||||
only, even for Intel, which is probably not what you want (ideally the
|
||||
Intel slice would support older versions of the OS). A Makefile that
|
||||
handles this explicitly is also provided:
|
||||
|
||||
```
|
||||
$ make -f otherbuilds/Makefile.macos-universal
|
||||
```
|
||||
|
||||
This produces only a static library, but it's a universal binary that
|
||||
is compatible with macOS 10.7 onwards on the Intel side.
|
||||
|
||||
See "FFT and resampler selection" below for further build options.
|
||||
|
||||
Note that you cannot legally distribute applications using Rubber Band
|
||||
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
|
||||
app store. See https://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
### 4c. Building for iOS
|
||||
|
||||
Ensure the Xcode command-line tools are installed, and
|
||||
|
||||
```
|
||||
$ meson build_ios --cross-file cross/ios.txt && ninja -C build
|
||||
```
|
||||
|
||||
The output files will be found in the `build_ios` directory.
|
||||
|
||||
To build for the simulator,
|
||||
|
||||
```
|
||||
$ meson build_sim --cross-file cross/ios-simulator.txt && ninja -C build
|
||||
```
|
||||
|
||||
The output files will be found in the `build_sim` directory.
|
||||
|
||||
See "FFT and resampler selection" below for further build options.
|
||||
|
||||
Note that you cannot legally distribute applications using Rubber Band
|
||||
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
|
||||
app store. See https://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
### 4d. Building on Windows
|
||||
|
||||
The default build on Windows also uses Meson, so ensure Meson and
|
||||
Ninja are installed and available. Then, in a terminal window with the
|
||||
compiler tools available in the path (e.g. a Visual Studio
|
||||
command-line prompt for the relevant build architecture) run
|
||||
|
||||
```
|
||||
> meson build
|
||||
> ninja -C build
|
||||
```
|
||||
|
||||
The output files will be found in the `build` directory.
|
||||
|
||||
The Rubber Band code is compatible with both the traditional Visual
|
||||
C++ compiler (`cl`) and the Clang front-end (`clang`), and the build
|
||||
system will use whichever appears (first) in your path.
|
||||
|
||||
See "FFT and resampler selection" below for further build options.
|
||||
|
||||
Alternatively, if you only need the static library and prefer a Visual
|
||||
Studio project file, there is one targeted for VC 2015 in
|
||||
`otherbuilds\rubberband-library.vcxproj`.
|
||||
|
||||
|
||||
### 4e. Building for Android and Java integration
|
||||
|
||||
Currently only a very old Android NDK build file is provided, as
|
||||
`otherbuilds/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`.
|
||||
|
||||
See
|
||||
https://hg.sr.ht/~breakfastquay/rubberband-android-simple-sample
|
||||
for a very trivial example of integration with Android Java code.
|
||||
|
||||
The supplied `.mk` file uses KissFFT and the Speex resampler.
|
||||
|
||||
|
||||
### 4f. 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.
|
||||
controlled (in Meson) using `-D` options and (in the code itself)
|
||||
using preprocessor flags set by the build system. These options and
|
||||
flags are 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.
|
||||
At least one resampler implementation and one FFT implementation must
|
||||
be enabled. It is technically possible to enable more than one, but
|
||||
it's confusing and not often useful.
|
||||
|
||||
If you are building this software using one of the bundled library
|
||||
options (Speex or KissFFT), please be sure to review the terms for
|
||||
@@ -175,44 +362,42 @@ applicable.
|
||||
#### FFT libraries supported
|
||||
|
||||
```
|
||||
Name Flags required Notes
|
||||
---- -------------- -----
|
||||
Library Build option CPP define Notes
|
||||
---- ------------ ---------- -----
|
||||
|
||||
FFTW3 -DHAVE_FFTW3 GPL.
|
||||
KissFFT -Dfft=kissfft -DUSE_KISSFFT Default except on macOS/iOS.
|
||||
Bundled, can be distributed with
|
||||
either the Rubber Band GPL or
|
||||
commercial licence.
|
||||
|
||||
Accelerate -DHAVE_VDSP Platform library on macOS and iOS.
|
||||
Accelerate -Dfft=vdsp -DHAVE_VDSP Default on macOS/iOS.
|
||||
Best option on these platforms.
|
||||
|
||||
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.
|
||||
FFTW3 -Dfft=fftw -DHAVE_FFTW3 GPL.
|
||||
|
||||
KissFFT -DUSE_KISSFFT Bundled, can be distributed with either the
|
||||
Rubber Band GPL or commercial licence.
|
||||
Single-precision. Slower than the above
|
||||
options.
|
||||
Intel IPP -Dfft=ipp -DHAVE_IPP Proprietary, can only be used with
|
||||
Rubber Band commercial licence.
|
||||
```
|
||||
|
||||
#### Resampler libraries supported
|
||||
|
||||
```
|
||||
Name Flags required Notes
|
||||
---- -------------- -----
|
||||
Library Build option CPP define Notes
|
||||
---- ------------ ---------- -----
|
||||
|
||||
libsamplerate -DHAVE_LIBSAMPLERATE GPL until v0.1.8, BSD for v0.1.9 and later.
|
||||
This is the preferred choice in almost
|
||||
all cases.
|
||||
libsamplerate -DHAVE_LIBSAMPLERATE
|
||||
-Dresampler=libsamplerate Best choice in most cases.
|
||||
|
||||
libresample -DHAVE_LIBRESAMPLE LGPL.
|
||||
|
||||
Speex -DUSE_SPEEX Bundled, can be distributed with either the
|
||||
Rubber Band GPL or commercial licence.
|
||||
Speex -DUSE_SPEEX
|
||||
-Dresampler=speex Bundled, can be distributed with
|
||||
either the Rubber Band GPL or
|
||||
commercial licence.
|
||||
```
|
||||
|
||||
### 4b. Other supported #defines
|
||||
### 4g. Other supported #defines
|
||||
|
||||
Other symbols you may define at compile time are as follows. (Usually
|
||||
the supplied build files will handle these for you.)
|
||||
Other known preprocessor symbols 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.
|
||||
@@ -247,125 +432,6 @@ the supplied build files will handle these for you.)
|
||||
for mobile architectures.
|
||||
|
||||
|
||||
### 4c. Building on Linux
|
||||
|
||||
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. Building on macOS
|
||||
|
||||
A Makefile for macOS 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. Then run
|
||||
e.g. `make -f Makefile.osx library` in a terminal window to build.
|
||||
You will need the Xcode command-line tools installed.
|
||||
|
||||
(You probably don't want to use the configure script on macOS -- just
|
||||
use `Makefile.osx` directly.)
|
||||
|
||||
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
|
||||
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
|
||||
app store. See https://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
### 4e. Building for iOS
|
||||
|
||||
A Makefile for iOS is provided as `Makefile.ios`. It produces a
|
||||
single static library containing both simulator and device binaries,
|
||||
in both 32- and 64-bit architectures.
|
||||
|
||||
Run e.g. `make -f Makefile.ios` in a terminal window to build. You
|
||||
will need the Xcode command-line tools installed.
|
||||
|
||||
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
|
||||
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
|
||||
app store. See https://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
### 4f. Building on Windows with Visual C++
|
||||
|
||||
A Visual Studio solution, targeted to VC 2015, with two projects is
|
||||
supplied. The `rubberband-library` project builds the Rubber Band
|
||||
static libraries only. The `rubberband-program` project builds the
|
||||
Rubber Band command-line tool (which requires the Rubber Band Library
|
||||
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.
|
||||
|
||||
|
||||
### 4g. Building for Android and Java integration
|
||||
|
||||
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`.
|
||||
|
||||
See
|
||||
https://hg.sr.ht/~breakfastquay/rubberband-android-simple-sample
|
||||
for a very trivial example of integration with Android Java code.
|
||||
|
||||
The supplied `.mk` file uses KissFFT and the Speex resampler.
|
||||
|
||||
|
||||
## 5. Copyright notes for bundled libraries
|
||||
|
||||
### 5a. Speex
|
||||
|
||||
79
configure.ac
79
configure.ac
@@ -1,79 +0,0 @@
|
||||
|
||||
AC_INIT(RubberBand, 1.9.0, chris.cannam@breakfastquay.com)
|
||||
|
||||
AC_ARG_ENABLE(programs,
|
||||
[ --disable-programs disable compilation of programs],
|
||||
[case "${enableval}" in
|
||||
yes | no ) WITH_PROGRAMS="${enableval}" ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --disable-programs) ;;
|
||||
esac],
|
||||
[WITH_PROGRAMS="yes"]
|
||||
)
|
||||
AC_SUBST(WITH_PROGRAMS)
|
||||
|
||||
AC_ARG_ENABLE(vamp,
|
||||
[ --disable-vamp disable compilation of Vamp plugin],
|
||||
[case "${enableval}" in
|
||||
yes | no ) WITH_VAMP="${enableval}" ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --disable-vamp) ;;
|
||||
esac],
|
||||
[WITH_VAMP="yes"]
|
||||
)
|
||||
AC_SUBST(WITH_VAMP)
|
||||
|
||||
AC_ARG_ENABLE(ladspa,
|
||||
[ --disable-ladspa disable compilation of LADSPA plugin],
|
||||
[case "${enableval}" in
|
||||
yes | no ) WITH_LADSPA="${enableval}" ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --disable-ladspa) ;;
|
||||
esac],
|
||||
[WITH_LADSPA="yes"]
|
||||
)
|
||||
AC_SUBST(WITH_LADSPA)
|
||||
|
||||
AC_CONFIG_SRCDIR(src/StretcherImpl.h)
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_HEADER_STDC
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
PKG_CHECK_MODULES([SRC],[samplerate])
|
||||
AC_SUBST(SRC_CFLAGS)
|
||||
AC_SUBST(SRC_LIBS)
|
||||
|
||||
if test "x$WITH_PROGRAMS" = "xyes"; then
|
||||
PKG_CHECK_MODULES([SNDFILE],[sndfile])
|
||||
fi
|
||||
AC_SUBST(SNDFILE_CFLAGS)
|
||||
AC_SUBST(SNDFILE_LIBS)
|
||||
|
||||
PKG_CHECK_MODULES([FFTW],[fftw3])
|
||||
AC_SUBST(FFTW_CFLAGS)
|
||||
AC_SUBST(FFTW_LIBS)
|
||||
|
||||
if test "x$WITH_LADSPA" = "xyes"; then
|
||||
AC_CHECK_HEADERS(ladspa.h)
|
||||
fi
|
||||
AC_CHECK_HEADERS(pthread.h)
|
||||
|
||||
if test "x$WITH_VAMP" = "xyes"; then
|
||||
PKG_CHECK_MODULES([Vamp],[vamp-sdk])
|
||||
fi
|
||||
AC_SUBST(Vamp_CFLAGS)
|
||||
AC_SUBST(Vamp_LIBS)
|
||||
|
||||
changequote(,)dnl
|
||||
if test "x$GCC" = "xyes"; then
|
||||
case " $CFLAGS " in
|
||||
*[\ \ ]-fPIC\ -Wall[\ \ ]*) ;;
|
||||
*) CFLAGS="$CFLAGS -fPIC -Wall" ;;
|
||||
esac
|
||||
case " $CXXFLAGS " in
|
||||
*[\ \ ]-fPIC\ -Wall[\ \ ]*) ;;
|
||||
*) CXXFLAGS="$CXXFLAGS -fPIC -Wall" ;;
|
||||
esac
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
AC_OUTPUT([Makefile])
|
||||
|
||||
19
cross/ios-simulator.txt
Normal file
19
cross/ios-simulator.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
[constants]
|
||||
sysroot = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk'
|
||||
common_args = [ '-isysroot', sysroot, '-arch', 'x86_64', '-mios-version-min=8' ]
|
||||
|
||||
[host_machine]
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'x86_64'
|
||||
system = 'darwin'
|
||||
endian = 'little'
|
||||
|
||||
[binaries]
|
||||
c = 'cc'
|
||||
cpp = 'c++'
|
||||
strip = 'strip'
|
||||
|
||||
[built-in options]
|
||||
c_args = common_args
|
||||
cpp_args = common_args + [ '-stdlib=libc++' ]
|
||||
cpp_link_args = cpp_args
|
||||
20
cross/ios.txt
Normal file
20
cross/ios.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
[constants]
|
||||
sysroot = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk'
|
||||
common_args = [ '-isysroot', sysroot, '-arch', 'arm64', '-arch', 'armv7', '-mios-version-min=8' ]
|
||||
|
||||
[host_machine]
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'aarch64'
|
||||
system = 'darwin'
|
||||
endian = 'little'
|
||||
|
||||
[binaries]
|
||||
c = 'cc'
|
||||
cpp = 'c++'
|
||||
strip = 'strip'
|
||||
|
||||
[built-in options]
|
||||
b_bitcode = true
|
||||
c_args = common_args
|
||||
cpp_args = common_args + [ '-stdlib=libc++' ]
|
||||
cpp_link_args = cpp_args
|
||||
20
cross/macos-arm64.txt
Normal file
20
cross/macos-arm64.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
[host_machine]
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'aarch64'
|
||||
system = 'darwin'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
|
||||
[binaries]
|
||||
c = 'cc'
|
||||
cpp = 'c++'
|
||||
strip = 'strip'
|
||||
|
||||
[built-in options]
|
||||
c_args = ['-arch', 'arm64']
|
||||
cpp_args = ['-arch', 'arm64']
|
||||
cpp_link_args = ['-arch', 'arm64']
|
||||
|
||||
|
||||
20
cross/macos-universal.txt
Normal file
20
cross/macos-universal.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
[host_machine]
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'aarch64'
|
||||
system = 'darwin'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
|
||||
[binaries]
|
||||
c = 'cc'
|
||||
cpp = 'c++'
|
||||
strip = 'strip'
|
||||
|
||||
[built-in options]
|
||||
c_args = ['-arch', 'arm64', '-arch', 'x86_64']
|
||||
cpp_args = ['-arch', 'arm64', '-arch', 'x86_64']
|
||||
cpp_link_args = ['-arch', 'arm64', '-arch', 'x86_64']
|
||||
|
||||
|
||||
19
cross/macos-x86_64.txt
Normal file
19
cross/macos-x86_64.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
[host_machine]
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'x86_64'
|
||||
system = 'darwin'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
|
||||
[binaries]
|
||||
c = 'cc'
|
||||
cpp = 'c++'
|
||||
strip = 'strip'
|
||||
|
||||
[built-in options]
|
||||
c_args = ['-arch', 'x86_64']
|
||||
cpp_args = ['-arch', 'x86_64']
|
||||
cpp_link_args = ['-arch', 'x86_64']
|
||||
|
||||
9
cross/windows-cl.txt
Normal file
9
cross/windows-cl.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
|
||||
[binaries]
|
||||
c = 'cl'
|
||||
cpp = 'cl'
|
||||
|
||||
|
||||
9
cross/windows-clang.txt
Normal file
9
cross/windows-clang.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
[properties]
|
||||
needs_exe_wrapper = false
|
||||
|
||||
[binaries]
|
||||
c = 'clang'
|
||||
cpp = 'clang++'
|
||||
|
||||
|
||||
41
dotnet/README.md
Normal file
41
dotnet/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
This directory contains a .NET interface for Rubber Band Library,
|
||||
generously contributed by Jonathan Gilbert under a BSD-like
|
||||
licence. The directory `rubberband-sharp` contains a managed-code
|
||||
interface to Rubber Band in C#. It loads and uses the DLL defined in
|
||||
`rubberband-dll`, that wraps the Rubber Band Library with an API
|
||||
understood by the `rubberband-sharp` code.
|
||||
|
||||
If you make use of this interface, please ensure you comply with the
|
||||
terms of its licence, in addition to the GPL licence accompanying
|
||||
Rubber Band Library itself:
|
||||
|
||||
```
|
||||
[files in rubberband-dll and rubberband-sharp]
|
||||
|
||||
Copyright 2018-2019 Jonathan Gilbert
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of Jonathan Gilbert
|
||||
shall not be used in advertising or otherwise to promote the sale,
|
||||
use or other dealings in this Software without prior written
|
||||
authorization.
|
||||
```
|
||||
@@ -22,32 +22,33 @@
|
||||
<ProjectGuid>{32C11C5C-3D27-4E57-B72C-161A48AAA95E}</ProjectGuid>
|
||||
<RootNamespace>rubberbanddll</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
@@ -91,7 +92,7 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -109,7 +110,7 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -129,7 +130,7 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -151,7 +152,7 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -180,4 +181,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -22,23 +22,24 @@
|
||||
<ProjectGuid>{020CEB11-EF4E-400E-971D-A35DB69D7CF9}</ProjectGuid>
|
||||
<RootNamespace>rubberband-library</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -63,6 +64,7 @@
|
||||
<OutDir>Debug\</OutDir>
|
||||
<IntDir>Debug\</IntDir>
|
||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||
<SourcePath>$(SourcePath)</SourcePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||
@@ -74,7 +76,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
@@ -88,7 +90,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
@@ -106,7 +108,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@@ -124,7 +126,7 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.;.\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
@@ -137,59 +139,59 @@
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="rubberband\rubberband-c.h" />
|
||||
<ClInclude Include="rubberband\RubberBandStretcher.h" />
|
||||
<ClInclude Include="src\audiocurves\CompoundAudioCurve.h" />
|
||||
<ClInclude Include="src\audiocurves\ConstantAudioCurve.h" />
|
||||
<ClInclude Include="src\audiocurves\HighFrequencyAudioCurve.h" />
|
||||
<ClInclude Include="src\audiocurves\PercussiveAudioCurve.h" />
|
||||
<ClInclude Include="src\audiocurves\SilentAudioCurve.h" />
|
||||
<ClInclude Include="src\audiocurves\SpectralDifferenceAudioCurve.h" />
|
||||
<ClInclude Include="src\base\Profiler.h" />
|
||||
<ClInclude Include="src\base\RingBuffer.h" />
|
||||
<ClInclude Include="src\base\Scavenger.h" />
|
||||
<ClInclude Include="src\dsp\AudioCurveCalculator.h" />
|
||||
<ClInclude Include="src\dsp\FFT.h" />
|
||||
<ClInclude Include="src\dsp\MovingMedian.h" />
|
||||
<ClInclude Include="src\dsp\Resampler.h" />
|
||||
<ClInclude Include="src\dsp\SampleFilter.h" />
|
||||
<ClInclude Include="src\dsp\SincWindow.h" />
|
||||
<ClInclude Include="src\dsp\Window.h" />
|
||||
<ClInclude Include="src\float_cast\float_cast.h" />
|
||||
<ClInclude Include="src\speex\speex_resampler.h" />
|
||||
<ClInclude Include="src\StretchCalculator.h" />
|
||||
<ClInclude Include="src\StretcherChannelData.h" />
|
||||
<ClInclude Include="src\StretcherImpl.h" />
|
||||
<ClInclude Include="src\system\Allocators.h" />
|
||||
<ClInclude Include="src\system\sysutils.h" />
|
||||
<ClInclude Include="src\system\Thread.h" />
|
||||
<ClInclude Include="src\system\VectorOps.h" />
|
||||
<ClInclude Include="..\rubberband\rubberband-c.h" />
|
||||
<ClInclude Include="..\rubberband\RubberBandStretcher.h" />
|
||||
<ClInclude Include="..\src\audiocurves\CompoundAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\ConstantAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\HighFrequencyAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\PercussiveAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\SilentAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\SpectralDifferenceAudioCurve.h" />
|
||||
<ClInclude Include="..\src\base\Profiler.h" />
|
||||
<ClInclude Include="..\src\base\RingBuffer.h" />
|
||||
<ClInclude Include="..\src\base\Scavenger.h" />
|
||||
<ClInclude Include="..\src\dsp\AudioCurveCalculator.h" />
|
||||
<ClInclude Include="..\src\dsp\FFT.h" />
|
||||
<ClInclude Include="..\src\dsp\MovingMedian.h" />
|
||||
<ClInclude Include="..\src\dsp\Resampler.h" />
|
||||
<ClInclude Include="..\src\dsp\SampleFilter.h" />
|
||||
<ClInclude Include="..\src\dsp\SincWindow.h" />
|
||||
<ClInclude Include="..\src\dsp\Window.h" />
|
||||
<ClInclude Include="..\src\float_cast\float_cast.h" />
|
||||
<ClInclude Include="..\src\speex\speex_resampler.h" />
|
||||
<ClInclude Include="..\src\StretchCalculator.h" />
|
||||
<ClInclude Include="..\src\StretcherChannelData.h" />
|
||||
<ClInclude Include="..\src\StretcherImpl.h" />
|
||||
<ClInclude Include="..\src\system\Allocators.h" />
|
||||
<ClInclude Include="..\src\system\sysutils.h" />
|
||||
<ClInclude Include="..\src\system\Thread.h" />
|
||||
<ClInclude Include="..\src\system\VectorOps.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\audiocurves\CompoundAudioCurve.cpp" />
|
||||
<ClCompile Include="src\audiocurves\ConstantAudioCurve.cpp" />
|
||||
<ClCompile Include="src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
||||
<ClCompile Include="src\audiocurves\PercussiveAudioCurve.cpp" />
|
||||
<ClCompile Include="src\audiocurves\SilentAudioCurve.cpp" />
|
||||
<ClCompile Include="src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
||||
<ClCompile Include="src\base\Profiler.cpp" />
|
||||
<ClCompile Include="src\dsp\AudioCurveCalculator.cpp" />
|
||||
<ClCompile Include="src\dsp\FFT.cpp" />
|
||||
<ClCompile Include="src\dsp\Resampler.cpp" />
|
||||
<ClCompile Include="src\kissfft\kiss_fft.c" />
|
||||
<ClCompile Include="src\kissfft\kiss_fftr.c" />
|
||||
<ClCompile Include="src\rubberband-c.cpp" />
|
||||
<ClCompile Include="src\RubberBandStretcher.cpp" />
|
||||
<ClCompile Include="src\speex\resample.c" />
|
||||
<ClCompile Include="src\StretchCalculator.cpp" />
|
||||
<ClCompile Include="src\StretcherChannelData.cpp" />
|
||||
<ClCompile Include="src\StretcherImpl.cpp" />
|
||||
<ClCompile Include="src\StretcherProcess.cpp" />
|
||||
<ClCompile Include="src\system\Allocators.cpp" />
|
||||
<ClCompile Include="src\system\sysutils.cpp" />
|
||||
<ClCompile Include="src\system\Thread.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\CompoundAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\ConstantAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\PercussiveAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\SilentAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\base\Profiler.cpp" />
|
||||
<ClCompile Include="..\src\dsp\AudioCurveCalculator.cpp" />
|
||||
<ClCompile Include="..\src\dsp\FFT.cpp" />
|
||||
<ClCompile Include="..\src\dsp\Resampler.cpp" />
|
||||
<ClCompile Include="..\src\kissfft\kiss_fft.c" />
|
||||
<ClCompile Include="..\src\kissfft\kiss_fftr.c" />
|
||||
<ClCompile Include="..\src\rubberband-c.cpp" />
|
||||
<ClCompile Include="..\src\RubberBandStretcher.cpp" />
|
||||
<ClCompile Include="..\src\speex\resample.c" />
|
||||
<ClCompile Include="..\src\StretchCalculator.cpp" />
|
||||
<ClCompile Include="..\src\StretcherChannelData.cpp" />
|
||||
<ClCompile Include="..\src\StretcherImpl.cpp" />
|
||||
<ClCompile Include="..\src\StretcherProcess.cpp" />
|
||||
<ClCompile Include="..\src\system\Allocators.cpp" />
|
||||
<ClCompile Include="..\src\system\sysutils.cpp" />
|
||||
<ClCompile Include="..\src\system\Thread.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -1,15 +1,10 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.31005.135
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-library", "rubberband-library.vcxproj", "{020CEB11-EF4E-400E-971D-A35DB69D7CF9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-program", "rubberband-program.vcxproj", "{06838307-FEAA-4DB0-8E08-AF19698E9C40}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-dll", "rubberband-dll.vcxproj", "{32C11C5C-3D27-4E57-B72C-161A48AAA95E}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9}
|
||||
@@ -30,32 +25,26 @@ Global
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x64.Build.0 = Debug|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x86.Build.0 = Debug|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|Any CPU.Build.0 = Release|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x64.ActiveCfg = Release|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x64.Build.0 = Release|x64
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.ActiveCfg = Release|Win32
|
||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.Build.0 = Release|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x64.Build.0 = Debug|x64
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x86.Build.0 = Debug|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x64.ActiveCfg = Release|x64
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x64.Build.0 = Release|x64
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x86.ActiveCfg = Release|Win32
|
||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Release|x86.Build.0 = Release|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x64.Build.0 = Debug|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|Any CPU.Build.0 = Release|Win32
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.ActiveCfg = Release|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.Build.0 = Release|x64
|
||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x86.ActiveCfg = Release|Win32
|
||||
@@ -76,4 +65,7 @@ Global
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {3CFE825B-BD44-4909-B002-AFE8DA45D614}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_PITCH_SHIFTER_H_
|
||||
#define _RUBBERBAND_PITCH_SHIFTER_H_
|
||||
#ifndef RUBBERBAND_PITCH_SHIFTER_H
|
||||
#define RUBBERBAND_PITCH_SHIFTER_H
|
||||
|
||||
#include <ladspa.h>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
533
main/main.cpp
533
main/main.cpp
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
#include "system/sysutils.h"
|
||||
|
||||
#ifdef __MSVC__
|
||||
#ifdef _MSC_VER
|
||||
#include "getopt/getopt.h"
|
||||
#else
|
||||
#include <getopt.h>
|
||||
@@ -52,8 +52,9 @@ using namespace RubberBand;
|
||||
using RubberBand::gettimeofday;
|
||||
#endif
|
||||
|
||||
#ifdef __MSVC__
|
||||
#ifdef _MSC_VER
|
||||
using RubberBand::usleep;
|
||||
#define strdup _strdup
|
||||
#endif
|
||||
|
||||
double tempo_convert(const char *str)
|
||||
@@ -104,10 +105,7 @@ int main(int argc, char **argv)
|
||||
|
||||
bool haveRatio = false;
|
||||
|
||||
std::string timeMapFile;
|
||||
std::string freqMapFile;
|
||||
std::string pitchMapFile;
|
||||
bool freqOrPitchMapSpecified = false;
|
||||
std::string mapfile;
|
||||
|
||||
enum {
|
||||
NoTransients,
|
||||
@@ -121,8 +119,6 @@ int main(int argc, char **argv)
|
||||
SoftDetector
|
||||
} detector = CompoundDetector;
|
||||
|
||||
bool ignoreClipping = false;
|
||||
|
||||
while (1) {
|
||||
int optionIndex = 0;
|
||||
|
||||
@@ -155,9 +151,6 @@ int main(int argc, char **argv)
|
||||
{ "threads", 0, 0, '@' },
|
||||
{ "quiet", 0, 0, 'q' },
|
||||
{ "timemap", 1, 0, 'M' },
|
||||
{ "freqmap", 1, 0, 'Q' },
|
||||
{ "pitchmap", 1, 0, 'C' },
|
||||
{ "ignore-clipping", 0, 0, 'i' },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
@@ -178,7 +171,7 @@ int main(int argc, char **argv)
|
||||
case 'R': realtime = true; break;
|
||||
case 'L': precise = false; break;
|
||||
case 'P': precise = true; break;
|
||||
case 'F': formant = true; break;
|
||||
case 'F': formant = true; break;
|
||||
case '0': threading = 1; break;
|
||||
case '@': threading = 2; break;
|
||||
case '1': transients = NoTransients; crispchanged = true; break;
|
||||
@@ -193,10 +186,7 @@ int main(int argc, char **argv)
|
||||
case '%': hqpitch = true; break;
|
||||
case 'c': crispness = atoi(optarg); break;
|
||||
case 'q': quiet = true; break;
|
||||
case 'M': timeMapFile = optarg; break;
|
||||
case 'Q': freqMapFile = optarg; freqOrPitchMapSpecified = true; break;
|
||||
case 'C': pitchMapFile = optarg; freqOrPitchMapSpecified = true; break;
|
||||
case 'i': ignoreClipping = true; break;
|
||||
case 'M': mapfile = optarg; break;
|
||||
default: help = true; break;
|
||||
}
|
||||
}
|
||||
@@ -206,22 +196,13 @@ int main(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (freqOrPitchMapSpecified) {
|
||||
if (freqMapFile != "" && pitchMapFile != "") {
|
||||
cerr << "ERROR: Please specify either pitch map or frequency map, not both" << endl;
|
||||
return 1;
|
||||
}
|
||||
haveRatio = true;
|
||||
realtime = true;
|
||||
}
|
||||
|
||||
if (help || !haveRatio || optind + 2 != argc) {
|
||||
cerr << endl;
|
||||
cerr << "Rubber Band" << endl;
|
||||
cerr << "Rubber Band" << endl;
|
||||
cerr << "An audio time-stretching and pitch-shifting library and utility program." << endl;
|
||||
cerr << "Copyright 2007-2020 Particular Programs Ltd." << endl;
|
||||
cerr << "Copyright 2007-2021 Particular Programs Ltd." << endl;
|
||||
cerr << endl;
|
||||
cerr << " Usage: " << argv[0] << " [options] <infile.wav> <outfile.wav>" << endl;
|
||||
cerr << " Usage: " << argv[0] << " [options] <infile.wav> <outfile.wav>" << endl;
|
||||
cerr << endl;
|
||||
cerr << "You must specify at least one of the following time and pitch ratio options." << endl;
|
||||
cerr << endl;
|
||||
@@ -233,45 +214,23 @@ int main(int argc, char **argv)
|
||||
cerr << " -p<X>, --pitch <X> Raise pitch by X semitones, or" << endl;
|
||||
cerr << " -f<X>, --frequency <X> Change frequency by multiple X" << endl;
|
||||
cerr << endl;
|
||||
cerr << "The following options provide ways of making the time and frequency ratios" << endl;
|
||||
cerr << "change during the audio." << endl;
|
||||
cerr << " -M<F>, --timemap <F> Use file F as the source for key frame map" << endl;
|
||||
cerr << endl;
|
||||
cerr << " -M<F>, --timemap <F> Use file F as the source for time map" << endl;
|
||||
cerr << "A map file consists of a series of lines each having two numbers separated" << endl;
|
||||
cerr << "by a single space. These are source and target sample frame numbers for fixed" << endl;
|
||||
cerr << "time points within the audio data, defining a varying stretch factor through" << endl;
|
||||
cerr << "the audio. You must specify an overall stretch factor using e.g. -t as well." << endl;
|
||||
cerr << endl;
|
||||
cerr << " A time map (or key-frame map) file contains a series of lines, each with two" << endl;
|
||||
cerr << " sample frame numbers separated by a single space. These are source and" << endl;
|
||||
cerr << " target frames for fixed time points within the audio data, defining a varying" << endl;
|
||||
cerr << " stretch factor through the audio. When supplying a time map you must specify" << endl;
|
||||
cerr << " an overall stretch factor using -t, -T, or -D as well, to determine the" << endl;
|
||||
cerr << " total output duration." << endl;
|
||||
cerr << endl;
|
||||
cerr << " --pitchmap <F> Use file F as the source for pitch map" << endl;
|
||||
cerr << endl;
|
||||
cerr << " A pitch map file contains a series of lines, each with two values: the input" << endl;
|
||||
cerr << " sample frame number and a pitch offset in semitones, separated by a single" << endl;
|
||||
cerr << " space. These specify a varying pitch factor through the audio. The offsets" << endl;
|
||||
cerr << " are all relative to an initial offset specified by the pitch or frequency" << endl;
|
||||
cerr << " option, or relative to no shift if neither was specified. Offsets are" << endl;
|
||||
cerr << " not cumulative. This option implies realtime mode (-R) and also enables a" << endl;
|
||||
cerr << " high-consistency pitch shifting mode, appropriate for dynamic pitch changes." << endl;
|
||||
cerr << " Because of the use of realtime mode, the overall duration will not be exact." << endl;
|
||||
cerr << endl;
|
||||
cerr << " --freqmap <F> Use file F as the source for frequency map" << endl;
|
||||
cerr << endl;
|
||||
cerr << " As --pitchmap, except that the second column in the file contains frequency" << endl;
|
||||
cerr << " multipliers rather than pitch offsets (the same as the difference between" << endl;
|
||||
cerr << " pitch and frequency options above)." << endl;
|
||||
cerr << endl;
|
||||
cerr << "The following options provide a simple way to adjust the sound. See below" << endl;
|
||||
cerr << "The following options provide a simple way to adjust the sound. See below" << endl;
|
||||
cerr << "for more details." << endl;
|
||||
cerr << endl;
|
||||
cerr << " -c<N>, --crisp <N> Crispness (N = 0,1,2,3,4,5,6); default 5 (see below)" << endl;
|
||||
cerr << " -F, --formant Enable formant preservation when pitch shifting" << endl;
|
||||
cerr << " -F, --formant Enable formant preservation when pitch shifting" << endl;
|
||||
cerr << endl;
|
||||
cerr << "The remaining options fine-tune the processing mode and stretch algorithm." << endl;
|
||||
cerr << "These are mostly included for test purposes; the default settings and standard" << endl;
|
||||
cerr << "crispness parameter are intended to provide the best sounding set of options" << endl;
|
||||
cerr << "for most situations. The default is to use none of these options." << endl;
|
||||
cerr << "for most situations. The default is to use none of these options." << endl;
|
||||
cerr << endl;
|
||||
cerr << " -L, --loose Relax timing in hope of better transient preservation" << endl;
|
||||
cerr << " -P, --precise Ignored: The opposite of -L, this is default from 1.6" << endl;
|
||||
@@ -289,8 +248,6 @@ int main(int argc, char **argv)
|
||||
cerr << " --pitch-hq In RT mode, use a slower, higher quality pitch shift" << endl;
|
||||
cerr << " --centre-focus Preserve focus of centre material in stereo" << endl;
|
||||
cerr << " (at a cost in width and individual channel quality)" << endl;
|
||||
cerr << " --ignore-clipping Ignore clipping at output; the default is to restart" << endl;
|
||||
cerr << " with reduced gain if clipping occurs" << endl;
|
||||
cerr << endl;
|
||||
cerr << " -d<N>, --debug <N> Select debug level (N = 0,1,2,3); default 0, full 3" << endl;
|
||||
cerr << " (N.B. debug level 3 includes audible ticks in output)" << endl;
|
||||
@@ -308,7 +265,7 @@ int main(int argc, char **argv)
|
||||
cerr << " -c 5 default processing options" << endl;
|
||||
cerr << " -c 6 equivalent to --no-lamination --window-short (may be good for drums)" << endl;
|
||||
cerr << endl;
|
||||
return 2;
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (ratio <= 0.0) {
|
||||
@@ -321,12 +278,6 @@ int main(int argc, char **argv)
|
||||
cerr << " provided -- crispness will override these other options" << endl;
|
||||
}
|
||||
|
||||
if (hqpitch && freqOrPitchMapSpecified) {
|
||||
cerr << "WARNING: High-quality pitch mode selected, but frequency or pitch map file is" << endl;
|
||||
cerr << " provided -- pitch mode will be overridden by high-consistency mode" << endl;
|
||||
hqpitch = false;
|
||||
}
|
||||
|
||||
switch (crispness) {
|
||||
case -1: crispness = 5; break;
|
||||
case 0: detector = CompoundDetector; transients = NoTransients; lamination = false; longwin = true; shortwin = false; break;
|
||||
@@ -352,35 +303,34 @@ int main(int argc, char **argv)
|
||||
cerr << ")" << endl;
|
||||
}
|
||||
|
||||
std::map<size_t, size_t> timeMap;
|
||||
if (timeMapFile != "") {
|
||||
std::ifstream ifile(timeMapFile.c_str());
|
||||
std::map<size_t, size_t> mapping;
|
||||
|
||||
if (mapfile != "") {
|
||||
std::ifstream ifile(mapfile.c_str());
|
||||
if (!ifile.is_open()) {
|
||||
cerr << "ERROR: Failed to open time map file \""
|
||||
<< timeMapFile << "\"" << endl;
|
||||
cerr << "ERROR: Failed to open time map file \"" << mapfile << "\""
|
||||
<< endl;
|
||||
return 1;
|
||||
}
|
||||
std::string line;
|
||||
int lineno = 0;
|
||||
while (!ifile.eof()) {
|
||||
std::getline(ifile, line);
|
||||
while (line.length() > 0 && line[0] == ' ') {
|
||||
line = line.substr(1);
|
||||
}
|
||||
while (line.length() > 0 && line[0] == ' ') line = line.substr(1);
|
||||
if (line == "") {
|
||||
++lineno;
|
||||
continue;
|
||||
}
|
||||
std::string::size_type i = line.find_first_of(" ");
|
||||
if (i == std::string::npos) {
|
||||
cerr << "ERROR: Time map file \"" << timeMapFile
|
||||
cerr << "ERROR: Time map file \"" << mapfile
|
||||
<< "\" is malformed at line " << lineno << endl;
|
||||
return 1;
|
||||
}
|
||||
size_t source = atoi(line.substr(0, i).c_str());
|
||||
while (i < line.length() && line[i] == ' ') ++i;
|
||||
size_t target = atoi(line.substr(i).c_str());
|
||||
timeMap[source] = target;
|
||||
mapping[source] = target;
|
||||
if (debug > 0) {
|
||||
cerr << "adding mapping from " << source << " to " << target << endl;
|
||||
}
|
||||
@@ -389,57 +339,7 @@ int main(int argc, char **argv)
|
||||
ifile.close();
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "Read " << timeMap.size() << " line(s) from time map file" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
std::map<size_t, double> freqMap;
|
||||
|
||||
if (freqOrPitchMapSpecified) {
|
||||
std::string file = freqMapFile;
|
||||
bool convertFromPitch = false;
|
||||
if (pitchMapFile != "") {
|
||||
file = pitchMapFile;
|
||||
convertFromPitch = true;
|
||||
}
|
||||
std::ifstream ifile(file.c_str());
|
||||
if (!ifile.is_open()) {
|
||||
cerr << "ERROR: Failed to open map file \"" << file << "\"" << endl;
|
||||
return 1;
|
||||
}
|
||||
std::string line;
|
||||
int lineno = 0;
|
||||
while (!ifile.eof()) {
|
||||
std::getline(ifile, line);
|
||||
while (line.length() > 0 && line[0] == ' ') {
|
||||
line = line.substr(1);
|
||||
}
|
||||
if (line == "") {
|
||||
++lineno;
|
||||
continue;
|
||||
}
|
||||
std::string::size_type i = line.find_first_of(" ");
|
||||
if (i == std::string::npos) {
|
||||
cerr << "ERROR: Map file \"" << file
|
||||
<< "\" is malformed at line " << lineno << endl;
|
||||
return 1;
|
||||
}
|
||||
size_t source = atoi(line.substr(0, i).c_str());
|
||||
while (i < line.length() && line[i] == ' ') ++i;
|
||||
double freq = atof(line.substr(i).c_str());
|
||||
if (convertFromPitch) {
|
||||
freq = pow(2.0, freq / 12.0);
|
||||
}
|
||||
freqMap[source] = freq;
|
||||
if (debug > 0) {
|
||||
cerr << "adding mapping for source frame " << source << " of frequency multiplier " << freq << endl;
|
||||
}
|
||||
++lineno;
|
||||
}
|
||||
ifile.close();
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "Read " << freqMap.size() << " line(s) from frequency map file" << endl;
|
||||
cerr << "Read " << mapping.size() << " line(s) from map file" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,9 +355,9 @@ int main(int argc, char **argv)
|
||||
|
||||
sndfile = sf_open(fileName, SFM_READ, &sfinfo);
|
||||
if (!sndfile) {
|
||||
cerr << "ERROR: Failed to open input file \"" << fileName << "\": "
|
||||
<< sf_strerror(sndfile) << endl;
|
||||
return 1;
|
||||
cerr << "ERROR: Failed to open input file \"" << fileName << "\": "
|
||||
<< sf_strerror(sndfile) << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (sfinfo.samplerate == 0) {
|
||||
@@ -483,9 +383,9 @@ int main(int argc, char **argv)
|
||||
|
||||
sndfileOut = sf_open(fileNameOut, SFM_WRITE, &sfinfoOut) ;
|
||||
if (!sndfileOut) {
|
||||
cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: "
|
||||
<< sf_strerror(sndfileOut) << endl;
|
||||
return 1;
|
||||
cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: "
|
||||
<< sf_strerror(sndfileOut) << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ibs = 1024;
|
||||
@@ -502,10 +402,6 @@ int main(int argc, char **argv)
|
||||
if (hqpitch) options |= RubberBandStretcher::OptionPitchHighQuality;
|
||||
if (together) options |= RubberBandStretcher::OptionChannelsTogether;
|
||||
|
||||
if (freqOrPitchMapSpecified) {
|
||||
options |= RubberBandStretcher::OptionPitchHighConsistency;
|
||||
}
|
||||
|
||||
switch (threading) {
|
||||
case 0:
|
||||
options |= RubberBandStretcher::OptionThreadingAuto;
|
||||
@@ -543,134 +439,46 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (pitchshift != 0.0) {
|
||||
frequencyshift *= pow(2.0, pitchshift / 12.0);
|
||||
frequencyshift *= pow(2.0, pitchshift / 12);
|
||||
}
|
||||
|
||||
cerr << "Using time ratio " << ratio;
|
||||
cerr << " and frequency ratio " << frequencyshift << endl;
|
||||
|
||||
if (!freqOrPitchMapSpecified) {
|
||||
cerr << " and frequency ratio " << frequencyshift << endl;
|
||||
} else {
|
||||
cerr << " and initial frequency ratio " << frequencyshift << endl;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
RubberBand::
|
||||
#endif
|
||||
timeval tv;
|
||||
(void)gettimeofday(&tv, 0);
|
||||
|
||||
|
||||
RubberBandStretcher::setDefaultDebugLevel(debug);
|
||||
|
||||
size_t countIn = 0, countOut = 0;
|
||||
RubberBandStretcher ts(sfinfo.samplerate, channels, options,
|
||||
ratio, frequencyshift);
|
||||
|
||||
float gain = 1.f;
|
||||
bool successful = false;
|
||||
ts.setExpectedInputDuration(sfinfo.frames);
|
||||
|
||||
while (!successful) { // we may have to repeat with a modified
|
||||
// gain, if clipping occurs
|
||||
successful = true;
|
||||
float *fbuf = new float[channels * ibs];
|
||||
float **ibuf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) ibuf[i] = new float[ibs];
|
||||
|
||||
RubberBandStretcher ts(sfinfo.samplerate, channels, options,
|
||||
ratio, frequencyshift);
|
||||
ts.setExpectedInputDuration(sfinfo.frames);
|
||||
int frame = 0;
|
||||
int percent = 0;
|
||||
|
||||
float *fbuf = new float[channels * ibs];
|
||||
float **ibuf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
ibuf[i] = new float[ibs];
|
||||
sf_seek(sndfile, 0, SEEK_SET);
|
||||
|
||||
if (!realtime) {
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "Pass 1: Studying..." << endl;
|
||||
}
|
||||
|
||||
int frame = 0;
|
||||
int percent = 0;
|
||||
|
||||
sf_seek(sndfile, 0, SEEK_SET);
|
||||
|
||||
if (!realtime) {
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "Pass 1: Studying..." << endl;
|
||||
}
|
||||
|
||||
while (frame < sfinfo.frames) {
|
||||
|
||||
int count = -1;
|
||||
|
||||
if ((count = sf_readf_float(sndfile, fbuf, ibs)) <= 0) break;
|
||||
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < count; ++i) {
|
||||
float value = fbuf[i * channels + c];
|
||||
ibuf[c][i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
bool final = (frame + ibs >= sfinfo.frames);
|
||||
|
||||
ts.study(ibuf, count, final);
|
||||
|
||||
int p = int((double(frame) * 100.0) / sfinfo.frames);
|
||||
if (p > percent || frame == 0) {
|
||||
percent = p;
|
||||
if (!quiet) {
|
||||
cerr << "\r" << percent << "% ";
|
||||
}
|
||||
}
|
||||
|
||||
frame += ibs;
|
||||
}
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "\rCalculating profile..." << endl;
|
||||
}
|
||||
|
||||
sf_seek(sndfile, 0, SEEK_SET);
|
||||
}
|
||||
|
||||
frame = 0;
|
||||
percent = 0;
|
||||
|
||||
if (!timeMap.empty()) {
|
||||
ts.setKeyFrameMap(timeMap);
|
||||
}
|
||||
|
||||
std::map<size_t, double>::const_iterator freqMapItr = freqMap.begin();
|
||||
|
||||
countIn = 0;
|
||||
countOut = 0;
|
||||
bool clipping = false;
|
||||
|
||||
while (frame < sfinfo.frames) {
|
||||
|
||||
int count = -1;
|
||||
int thisBlockSize = ibs;
|
||||
|
||||
while (freqMapItr != freqMap.end()) {
|
||||
size_t nextFreqFrame = freqMapItr->first + ts.getLatency();
|
||||
if (nextFreqFrame <= countIn) {
|
||||
double s = frequencyshift * freqMapItr->second;
|
||||
if (debug > 0) {
|
||||
cerr << "at frame " << countIn
|
||||
<< " (requested at " << freqMapItr->first
|
||||
<< " plus latency " << ts.getLatency()
|
||||
<< ") updating frequency ratio to " << s << endl;
|
||||
}
|
||||
ts.setPitchScale(s);
|
||||
++freqMapItr;
|
||||
} else {
|
||||
if (nextFreqFrame < countIn + thisBlockSize) {
|
||||
thisBlockSize = nextFreqFrame - countIn;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((count = sf_readf_float(sndfile, fbuf, ibs)) <= 0) break;
|
||||
|
||||
if ((count = sf_readf_float(sndfile, fbuf, thisBlockSize)) < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
countIn += count;
|
||||
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < count; ++i) {
|
||||
float value = fbuf[i * channels + c];
|
||||
@@ -678,70 +486,9 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
bool final = (frame + thisBlockSize >= sfinfo.frames);
|
||||
bool final = (frame + ibs >= sfinfo.frames);
|
||||
|
||||
if (debug > 2) {
|
||||
cerr << "count = " << count << ", ibs = " << thisBlockSize << ", frame = " << frame << ", frames = " << sfinfo.frames << ", final = " << final << endl;
|
||||
}
|
||||
|
||||
ts.process(ibuf, count, final);
|
||||
|
||||
int avail = ts.available();
|
||||
if (debug > 1) cerr << "available = " << avail << endl;
|
||||
|
||||
if (avail > 0) {
|
||||
float **obf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
obf[i] = new float[avail];
|
||||
}
|
||||
ts.retrieve(obf, avail);
|
||||
countOut += avail;
|
||||
float *fobf = new float[channels * avail];
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < avail; ++i) {
|
||||
float value = gain * obf[c][i];
|
||||
if (ignoreClipping) { // i.e. just clamp, don't bail out
|
||||
if (value > 1.f) value = 1.f;
|
||||
if (value < -1.f) value = -1.f;
|
||||
} else {
|
||||
if (value >= 1.f || value < -1.f) {
|
||||
clipping = true;
|
||||
gain = (0.999f / fabsf(obf[c][i]));
|
||||
}
|
||||
}
|
||||
fobf[i * channels + c] = value;
|
||||
}
|
||||
}
|
||||
sf_writef_float(sndfileOut, fobf, avail);
|
||||
delete[] fobf;
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
delete[] obf[i];
|
||||
}
|
||||
delete[] obf;
|
||||
}
|
||||
|
||||
if (clipping) {
|
||||
if (!quiet) {
|
||||
cerr << "NOTE: Clipping detected at output sample "
|
||||
<< countOut << ", restarting with "
|
||||
<< "reduced gain of " << gain
|
||||
<< " (supply --ignore-clipping to avoid this)" << endl;
|
||||
}
|
||||
const float mingain = 0.75f;
|
||||
if (gain < mingain) {
|
||||
cerr << "WARNING: Clipped values were implausibly high: "
|
||||
<< "something wrong with input or process - "
|
||||
<< "not reducing gain below " << mingain << endl;
|
||||
gain = mingain;
|
||||
ignoreClipping = true;
|
||||
}
|
||||
successful = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (frame == 0 && !realtime && !quiet) {
|
||||
cerr << "Pass 2: Processing..." << endl;
|
||||
}
|
||||
ts.study(ibuf, count, final);
|
||||
|
||||
int p = int((double(frame) * 100.0) / sfinfo.frames);
|
||||
if (p > percent || frame == 0) {
|
||||
@@ -751,55 +498,136 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
frame += thisBlockSize;
|
||||
frame += ibs;
|
||||
}
|
||||
|
||||
if (!successful) {
|
||||
sf_seek(sndfile, 0, SEEK_SET);
|
||||
sf_seek(sndfileOut, 0, SEEK_SET);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "\r " << endl;
|
||||
cerr << "\rCalculating profile..." << endl;
|
||||
}
|
||||
int avail;
|
||||
|
||||
while ((avail = ts.available()) >= 0) {
|
||||
sf_seek(sndfile, 0, SEEK_SET);
|
||||
}
|
||||
|
||||
if (debug > 1) {
|
||||
cerr << "(completing) available = " << avail << endl;
|
||||
}
|
||||
|
||||
if (avail > 0) {
|
||||
float **obf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
obf[i] = new float[avail];
|
||||
}
|
||||
ts.retrieve(obf, avail);
|
||||
countOut += avail;
|
||||
float *fobf = new float[channels * avail];
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < avail; ++i) {
|
||||
float value = gain * obf[c][i];
|
||||
if (value > 1.f) value = 1.f;
|
||||
if (value < -1.f) value = -1.f;
|
||||
fobf[i * channels + c] = value;
|
||||
}
|
||||
}
|
||||
|
||||
sf_writef_float(sndfileOut, fobf, avail);
|
||||
delete[] fobf;
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
delete[] obf[i];
|
||||
}
|
||||
delete[] obf;
|
||||
} else {
|
||||
usleep(10000);
|
||||
}
|
||||
}
|
||||
frame = 0;
|
||||
percent = 0;
|
||||
|
||||
if (!mapping.empty()) {
|
||||
ts.setKeyFrameMap(mapping);
|
||||
}
|
||||
|
||||
size_t countIn = 0, countOut = 0;
|
||||
|
||||
while (frame < sfinfo.frames) {
|
||||
|
||||
int count = -1;
|
||||
|
||||
if ((count = sf_readf_float(sndfile, fbuf, ibs)) < 0) break;
|
||||
|
||||
countIn += count;
|
||||
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < count; ++i) {
|
||||
float value = fbuf[i * channels + c];
|
||||
ibuf[c][i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
bool final = (frame + ibs >= sfinfo.frames);
|
||||
|
||||
if (debug > 2) {
|
||||
cerr << "count = " << count << ", ibs = " << ibs << ", frame = " << frame << ", frames = " << sfinfo.frames << ", final = " << final << endl;
|
||||
}
|
||||
|
||||
ts.process(ibuf, count, final);
|
||||
|
||||
int avail = ts.available();
|
||||
if (debug > 1) cerr << "available = " << avail << endl;
|
||||
|
||||
if (avail > 0) {
|
||||
float **obf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
obf[i] = new float[avail];
|
||||
}
|
||||
ts.retrieve(obf, avail);
|
||||
countOut += avail;
|
||||
float *fobf = new float[channels * avail];
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < avail; ++i) {
|
||||
float value = obf[c][i];
|
||||
if (value > 1.f) value = 1.f;
|
||||
if (value < -1.f) value = -1.f;
|
||||
fobf[i * channels + c] = value;
|
||||
}
|
||||
}
|
||||
// cout << "fobf mean: ";
|
||||
// double d = 0;
|
||||
// for (int i = 0; i < avail; ++i) {
|
||||
// d += fobf[i];
|
||||
// }
|
||||
// d /= avail;
|
||||
// cout << d << endl;
|
||||
sf_writef_float(sndfileOut, fobf, avail);
|
||||
delete[] fobf;
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
delete[] obf[i];
|
||||
}
|
||||
delete[] obf;
|
||||
}
|
||||
|
||||
if (frame == 0 && !realtime && !quiet) {
|
||||
cerr << "Pass 2: Processing..." << endl;
|
||||
}
|
||||
|
||||
int p = int((double(frame) * 100.0) / sfinfo.frames);
|
||||
if (p > percent || frame == 0) {
|
||||
percent = p;
|
||||
if (!quiet) {
|
||||
cerr << "\r" << percent << "% ";
|
||||
}
|
||||
}
|
||||
|
||||
frame += ibs;
|
||||
}
|
||||
|
||||
if (!quiet) {
|
||||
cerr << "\r " << endl;
|
||||
}
|
||||
int avail;
|
||||
|
||||
while ((avail = ts.available()) >= 0) {
|
||||
|
||||
if (debug > 1) {
|
||||
cerr << "(completing) available = " << avail << endl;
|
||||
}
|
||||
|
||||
if (avail > 0) {
|
||||
float **obf = new float *[channels];
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
obf[i] = new float[avail];
|
||||
}
|
||||
ts.retrieve(obf, avail);
|
||||
countOut += avail;
|
||||
float *fobf = new float[channels * avail];
|
||||
for (size_t c = 0; c < channels; ++c) {
|
||||
for (int i = 0; i < avail; ++i) {
|
||||
float value = obf[c][i];
|
||||
if (value > 1.f) value = 1.f;
|
||||
if (value < -1.f) value = -1.f;
|
||||
fobf[i * channels + c] = value;
|
||||
}
|
||||
}
|
||||
|
||||
sf_writef_float(sndfileOut, fobf, avail);
|
||||
delete[] fobf;
|
||||
for (size_t i = 0; i < channels; ++i) {
|
||||
delete[] obf[i];
|
||||
}
|
||||
delete[] obf;
|
||||
} else {
|
||||
usleep(10000);
|
||||
}
|
||||
}
|
||||
|
||||
sf_close(sndfile);
|
||||
sf_close(sndfileOut);
|
||||
|
||||
@@ -810,7 +638,7 @@ int main(int argc, char **argv)
|
||||
#ifdef _WIN32
|
||||
RubberBand::
|
||||
#endif
|
||||
timeval etv;
|
||||
timeval etv;
|
||||
(void)gettimeofday(&etv, 0);
|
||||
|
||||
etv.tv_sec -= tv.tv_sec;
|
||||
@@ -821,7 +649,10 @@ int main(int argc, char **argv)
|
||||
etv.tv_usec -= tv.tv_usec;
|
||||
|
||||
double sec = double(etv.tv_sec) + (double(etv.tv_usec) / 1000000.0);
|
||||
cerr << "elapsed time: " << sec << " sec, in frames/sec: " << countIn/sec << ", out frames/sec: " << countOut/sec << endl;
|
||||
cerr << "elapsed time: " << sec
|
||||
<< " sec, in frames/sec: " << int64_t(round(countIn/sec))
|
||||
<< ", out frames/sec: " << int64_t(round(countOut/sec))
|
||||
<< endl;
|
||||
}
|
||||
|
||||
RubberBand::Profiler::dump();
|
||||
|
||||
541
meson.build
Normal file
541
meson.build
Normal file
@@ -0,0 +1,541 @@
|
||||
|
||||
project(
|
||||
'Rubber Band Library',
|
||||
'c', 'cpp',
|
||||
version: '1.9.0',
|
||||
license: 'GPL-2.0-or-later',
|
||||
default_options: [
|
||||
# All Rubber Band code is actually C++98, but some compilers no
|
||||
# longer support that
|
||||
'cpp_std=c++14',
|
||||
'buildtype=release',
|
||||
'b_ndebug=if-release',
|
||||
'b_lundef=true',
|
||||
],
|
||||
meson_version: '>= 0.53.0'
|
||||
)
|
||||
|
||||
rubberband_dynamic_library_version = '2.1.2'
|
||||
|
||||
system = build_machine.system()
|
||||
architecture = host_machine.cpu_family()
|
||||
cpp = meson.get_compiler('cpp')
|
||||
|
||||
pkg = import('pkgconfig')
|
||||
|
||||
|
||||
# Define the project source sets
|
||||
|
||||
public_headers = [
|
||||
'rubberband/rubberband-c.h',
|
||||
'rubberband/RubberBandStretcher.h',
|
||||
]
|
||||
|
||||
library_sources = [
|
||||
'src/rubberband-c.cpp',
|
||||
'src/RubberBandStretcher.cpp',
|
||||
'src/StretcherProcess.cpp',
|
||||
'src/StretchCalculator.cpp',
|
||||
'src/base/Profiler.cpp',
|
||||
'src/dsp/AudioCurveCalculator.cpp',
|
||||
'src/audiocurves/CompoundAudioCurve.cpp',
|
||||
'src/audiocurves/SpectralDifferenceAudioCurve.cpp',
|
||||
'src/audiocurves/HighFrequencyAudioCurve.cpp',
|
||||
'src/audiocurves/SilentAudioCurve.cpp',
|
||||
'src/audiocurves/ConstantAudioCurve.cpp',
|
||||
'src/audiocurves/PercussiveAudioCurve.cpp',
|
||||
'src/dsp/Resampler.cpp',
|
||||
'src/dsp/FFT.cpp',
|
||||
'src/system/Allocators.cpp',
|
||||
'src/system/sysutils.cpp',
|
||||
'src/system/Thread.cpp',
|
||||
'src/StretcherChannelData.cpp',
|
||||
'src/StretcherImpl.cpp',
|
||||
]
|
||||
|
||||
jni_sources = [
|
||||
'src/jni/RubberBandStretcherJNI.cpp',
|
||||
]
|
||||
|
||||
java_sources = [
|
||||
'com/breakfastquay/rubberband/RubberBandStretcher.java',
|
||||
]
|
||||
|
||||
program_sources = [
|
||||
'main/main.cpp',
|
||||
]
|
||||
|
||||
if system == 'windows'
|
||||
program_sources += [
|
||||
'src/getopt/getopt.c',
|
||||
'src/getopt/getopt_long.c'
|
||||
]
|
||||
endif
|
||||
|
||||
vamp_sources = [
|
||||
'vamp/RubberBandVampPlugin.cpp',
|
||||
'vamp/libmain.cpp',
|
||||
]
|
||||
|
||||
ladspa_sources = [
|
||||
'ladspa/RubberBandPitchShifter.cpp',
|
||||
'ladspa/libmain.cpp',
|
||||
]
|
||||
|
||||
general_include_dirs = [
|
||||
'rubberband',
|
||||
'src',
|
||||
]
|
||||
|
||||
|
||||
# Scan for any dependencies we may use later; all are optional
|
||||
|
||||
fftw3_dep = dependency('fftw3', version: '>= 3.0.0', required: false)
|
||||
samplerate_dep = dependency('samplerate', version: '>= 0.1.8', required: false)
|
||||
sndfile_dep = dependency('sndfile', version: '>= 1.0.16', required: false)
|
||||
vamp_dep = dependency('vamp-sdk', version: '>= 2.9', required: false)
|
||||
thread_dep = dependency('threads')
|
||||
have_ladspa = cpp.has_header('ladspa.h')
|
||||
|
||||
|
||||
# Check FFT and resampler options and set up dependencies and paths
|
||||
|
||||
feature_dependencies = []
|
||||
feature_defines = []
|
||||
feature_libraries = []
|
||||
feature_sources = []
|
||||
pkgconfig_requirements = []
|
||||
arch_flags = []
|
||||
|
||||
config_summary = {}
|
||||
target_summary = {}
|
||||
|
||||
resampler = get_option('resampler')
|
||||
fft = get_option('fft')
|
||||
ipp_path = get_option('ipp_path')
|
||||
ipp_needed = false
|
||||
|
||||
if fft == 'auto'
|
||||
if system == 'darwin'
|
||||
fft = 'vdsp'
|
||||
else
|
||||
fft = 'kissfft'
|
||||
endif
|
||||
endif
|
||||
|
||||
if resampler == 'auto'
|
||||
if samplerate_dep.found()
|
||||
resampler = 'libsamplerate'
|
||||
else
|
||||
resampler = 'speex'
|
||||
endif
|
||||
endif
|
||||
|
||||
extra_include_args = []
|
||||
foreach d: get_option('extra_include_dirs')
|
||||
extra_include_args += [ '-I' + d ]
|
||||
endforeach
|
||||
|
||||
if fft == 'kissfft'
|
||||
config_summary += { 'FFT': 'KissFFT' }
|
||||
message('For FFT: using KissFFT')
|
||||
if fftw3_dep.found()
|
||||
message('(to use FFTW instead, reconfigure with -Dfft=fftw)')
|
||||
endif
|
||||
feature_sources += ['src/kissfft/kiss_fft.c', 'src/kissfft/kiss_fftr.c']
|
||||
feature_defines += ['-DUSE_KISSFFT']
|
||||
|
||||
elif fft == 'fftw'
|
||||
if fftw3_dep.found()
|
||||
config_summary += { 'FFT': 'FFTW' }
|
||||
message('For FFT: using FFTW')
|
||||
pkgconfig_requirements += fftw3_dep
|
||||
else
|
||||
fftw_dep = cpp.find_library('fftw3',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['fftw3.h'],
|
||||
header_args: extra_include_args,
|
||||
required: true)
|
||||
endif
|
||||
feature_dependencies += fftw3_dep
|
||||
feature_defines += ['-DHAVE_FFTW3', '-DFFTW_DOUBLE_ONLY']
|
||||
|
||||
elif fft == 'vdsp'
|
||||
config_summary += { 'FFT': 'vDSP' }
|
||||
message('For FFT: using vDSP')
|
||||
feature_defines += ['-DHAVE_VDSP']
|
||||
feature_libraries += ['-framework', 'Accelerate']
|
||||
|
||||
elif fft == 'ipp'
|
||||
if ipp_path != ''
|
||||
config_summary += { 'FFT': 'Intel IPP' }
|
||||
message('For FFT: using IPP')
|
||||
message('IPP path defined as ' + ipp_path)
|
||||
else
|
||||
error('For FFT: IPP selected, but ipp_path not specified')
|
||||
endif
|
||||
ipp_needed = true
|
||||
|
||||
else
|
||||
error('Unknown or unsupported FFT option: ' + fft)
|
||||
|
||||
endif # fft
|
||||
|
||||
if resampler == 'libsamplerate'
|
||||
if samplerate_dep.found()
|
||||
config_summary += { 'Resampler': 'libsamplerate' }
|
||||
message('For resampler: using libsamplerate')
|
||||
pkgconfig_requirements += samplerate_dep
|
||||
else
|
||||
samplerate_dep = cpp.find_library('samplerate',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['samplerate.h'],
|
||||
header_args: extra_include_args,
|
||||
required: true)
|
||||
endif
|
||||
feature_dependencies += samplerate_dep
|
||||
feature_defines += ['-DHAVE_LIBSAMPLERATE']
|
||||
|
||||
elif resampler == 'speex'
|
||||
config_summary += { 'Resampler': 'Speex' }
|
||||
message('For resampler: using Speex')
|
||||
message('(consider libsamplerate if time-varying pitch shift is required)')
|
||||
feature_sources += ['src/speex/resample.c']
|
||||
feature_defines += ['-DUSE_SPEEX']
|
||||
|
||||
elif resampler == 'ipp'
|
||||
if ipp_path != ''
|
||||
config_summary += { 'Resampler': 'Intel IPP' }
|
||||
message('For resampler: using IPP')
|
||||
message('(consider libsamplerate if time-varying pitch shift is required)')
|
||||
message('IPP path defined as ' + ipp_path)
|
||||
else
|
||||
error('For resampler: IPP selected, but ipp_path not specified')
|
||||
endif
|
||||
ipp_needed = true
|
||||
|
||||
else
|
||||
error('Unknown or unsupported resampler option: ' + resampler)
|
||||
|
||||
endif # resampler
|
||||
|
||||
if ipp_needed
|
||||
feature_defines += [
|
||||
'-DHAVE_IPP',
|
||||
'-DUSE_IPP_STATIC',
|
||||
'-I' + ipp_path / 'include'
|
||||
]
|
||||
if architecture == 'x86'
|
||||
feature_libraries += [
|
||||
'-L' + ipp_path / 'lib/ia32',
|
||||
]
|
||||
elif architecture == 'x86_64'
|
||||
feature_libraries += [
|
||||
'-L' + ipp_path / 'lib/intel64',
|
||||
]
|
||||
else
|
||||
error('IPP is not supported for this architecture')
|
||||
endif
|
||||
if system == 'windows'
|
||||
feature_libraries += [
|
||||
'-lippsmt', '-lippvmmt', '-lippcoremt',
|
||||
]
|
||||
elif system == 'linux'
|
||||
feature_libraries += [
|
||||
'-Wl,-Bstatic', '-lipps', '-lippvm', '-lippcore', '-Wl,-Bdynamic',
|
||||
]
|
||||
else
|
||||
feature_libraries += [
|
||||
'-lipps', '-lippvm', '-lippcore',
|
||||
]
|
||||
endif
|
||||
endif # ipp_needed
|
||||
|
||||
if not vamp_dep.found()
|
||||
vamp_dep = cpp.find_library('VampPluginSDK',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['vamp-sdk.h'],
|
||||
header_args: extra_include_args,
|
||||
required: false)
|
||||
if not vamp_dep.found()
|
||||
vamp_dep = cpp.find_library('vamp-sdk',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['vamp-sdk.h'],
|
||||
header_args: extra_include_args,
|
||||
required: false)
|
||||
endif
|
||||
endif
|
||||
have_vamp = vamp_dep.found()
|
||||
|
||||
if not sndfile_dep.found()
|
||||
sndfile_dep = cpp.find_library('sndfile',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['sndfile.h'],
|
||||
header_args: extra_include_args,
|
||||
required: false)
|
||||
if not sndfile_dep.found()
|
||||
sndfile_dep = cpp.find_library('sndfile-1',
|
||||
dirs: get_option('extra_lib_dirs'),
|
||||
has_headers: ['sndfile.h'],
|
||||
header_args: extra_include_args,
|
||||
required: false)
|
||||
endif
|
||||
endif
|
||||
have_sndfile = sndfile_dep.found()
|
||||
|
||||
|
||||
# General platform and compiler expectations
|
||||
|
||||
ladspa_symbol_args = []
|
||||
vamp_symbol_args = []
|
||||
|
||||
if get_option('buildtype').startswith('release')
|
||||
config_summary += { 'Build type': 'Release' }
|
||||
feature_defines += ['-DNO_THREAD_CHECKS', '-DNO_TIMING', '-DNDEBUG']
|
||||
else
|
||||
config_summary += { 'Build type': 'Debug' }
|
||||
endif
|
||||
|
||||
if system == 'darwin'
|
||||
feature_defines += ['-DUSE_PTHREADS', '-DMALLOC_IS_ALIGNED']
|
||||
ladspa_symbol_args += [
|
||||
'-exported_symbols_list', meson.source_root() / 'ladspa/ladspa-plugin.list'
|
||||
]
|
||||
vamp_symbol_args += [
|
||||
'-exported_symbols_list', meson.source_root() / 'vamp/vamp-plugin.list'
|
||||
]
|
||||
|
||||
have_version_min = false
|
||||
foreach arg: get_option('cpp_args')
|
||||
if arg.contains('version-min')
|
||||
have_version_min = true
|
||||
endif
|
||||
endforeach
|
||||
|
||||
if architecture == 'aarch64'
|
||||
mac_platform_arguments = [
|
||||
'-arch', 'arm64',
|
||||
]
|
||||
if not have_version_min
|
||||
mac_platform_arguments += [ '-mmacosx-version-min=11' ]
|
||||
endif
|
||||
elif architecture == 'x86_64'
|
||||
mac_platform_arguments = [
|
||||
'-arch', 'x86_64',
|
||||
]
|
||||
if not have_version_min
|
||||
mac_platform_arguments += [ '-mmacosx-version-min=10.13' ]
|
||||
endif
|
||||
else # begin architecture != 'aarch64' or 'x86_64'
|
||||
error('Build for architecture ' + architecture + ' is not supported on this platform')
|
||||
endif # end architecture
|
||||
|
||||
elif system == 'windows'
|
||||
feature_defines += ['-D_WIN32', '-DNOMINMAX', '-D_USE_MATH_DEFINES', '-DGETOPT_API=']
|
||||
if cpp.get_id() == 'msvc'
|
||||
ladspa_symbol_args += ['-EXPORT:ladspa_descriptor']
|
||||
vamp_symbol_args += ['-EXPORT:vampGetPluginDescriptor']
|
||||
endif
|
||||
|
||||
else # system not darwin or windows
|
||||
feature_defines += ['-DUSE_PTHREADS', '-DHAVE_POSIX_MEMALIGN']
|
||||
ladspa_symbol_args += [
|
||||
'-Wl,--version-script=' + meson.source_root() / 'ladspa/ladspa-plugin.map'
|
||||
]
|
||||
vamp_symbol_args += [
|
||||
'-Wl,--version-script=' + meson.source_root() / 'vamp/vamp-plugin.map'
|
||||
]
|
||||
endif # system
|
||||
|
||||
|
||||
general_include_dirs += get_option('extra_include_dirs')
|
||||
general_compile_args = [ arch_flags, feature_defines ]
|
||||
general_dependencies = [ feature_dependencies, thread_dep ]
|
||||
|
||||
if system == 'windows'
|
||||
if get_option('no_shared')
|
||||
rubberband_static_name = 'rubberband'
|
||||
else
|
||||
rubberband_static_name = 'rubberband-static'
|
||||
endif
|
||||
rubberband_dynamic_name = 'rubberband'
|
||||
rubberband_program_name = 'rubberband-program'
|
||||
rubberband_ladspa_name = 'ladspa-rubberband'
|
||||
rubberband_vamp_name = 'vamp-rubberband'
|
||||
# Meson likes libxxx.a even on Windows, and so might we for a
|
||||
# new library, but not here
|
||||
platform_static_name_prefix = ''
|
||||
platform_static_name_suffix = 'lib'
|
||||
else
|
||||
rubberband_static_name = 'rubberband'
|
||||
rubberband_dynamic_name = 'rubberband'
|
||||
rubberband_program_name = 'rubberband'
|
||||
rubberband_ladspa_name = 'ladspa-rubberband'
|
||||
rubberband_vamp_name = 'vamp-rubberband'
|
||||
platform_static_name_prefix = 'lib'
|
||||
platform_static_name_suffix = 'a'
|
||||
endif
|
||||
|
||||
|
||||
# And the build targets: Static and dynamic libraries, command-line
|
||||
# utility, LADSPA plugin, Vamp plugin
|
||||
|
||||
message('Will build Rubber Band Library static library')
|
||||
target_summary += { 'Static library': [ true, 'Name: ' + rubberband_static_name ] }
|
||||
rubberband_static = static_library(
|
||||
rubberband_static_name,
|
||||
library_sources,
|
||||
feature_sources,
|
||||
include_directories: general_include_dirs,
|
||||
cpp_args: general_compile_args,
|
||||
c_args: general_compile_args,
|
||||
dependencies: general_dependencies,
|
||||
name_prefix: platform_static_name_prefix,
|
||||
name_suffix: platform_static_name_suffix,
|
||||
pic: true,
|
||||
install: true,
|
||||
)
|
||||
|
||||
rubberband_static_dep = declare_dependency(
|
||||
link_with: rubberband_static,
|
||||
)
|
||||
|
||||
if not get_option('no_shared')
|
||||
target_summary += { 'Shared library': [ true, 'Name: ' + rubberband_dynamic_name ] }
|
||||
message('Will build Rubber Band Library shared library')
|
||||
rubberband_dynamic = shared_library(
|
||||
rubberband_dynamic_name,
|
||||
objects: rubberband_static.extract_all_objects(),
|
||||
link_args: [
|
||||
arch_flags,
|
||||
feature_libraries,
|
||||
],
|
||||
dependencies: general_dependencies,
|
||||
version: rubberband_dynamic_library_version,
|
||||
install: true,
|
||||
)
|
||||
else
|
||||
target_summary += { 'Shared library': false }
|
||||
message('Not building Rubber Band Library dynamic library: no_shared option set')
|
||||
endif
|
||||
|
||||
if have_ladspa
|
||||
target_summary += { 'LADSPA plugin': [ true, 'Name: ' + rubberband_ladspa_name ] }
|
||||
message('Will build LADSPA plugin')
|
||||
rubberband_ladspa = shared_library(
|
||||
rubberband_ladspa_name,
|
||||
ladspa_sources,
|
||||
include_directories: general_include_dirs,
|
||||
cpp_args: general_compile_args,
|
||||
c_args: general_compile_args,
|
||||
link_args: [
|
||||
arch_flags,
|
||||
feature_libraries,
|
||||
ladspa_symbol_args,
|
||||
],
|
||||
dependencies: [
|
||||
rubberband_static_dep,
|
||||
general_dependencies,
|
||||
],
|
||||
name_prefix: '',
|
||||
install: true,
|
||||
install_dir: get_option('libdir') / 'ladspa',
|
||||
)
|
||||
install_data(
|
||||
'ladspa/ladspa-rubberband.cat',
|
||||
install_dir: get_option('libdir') / 'ladspa',
|
||||
)
|
||||
install_data(
|
||||
'ladspa/ladspa-rubberband.rdf',
|
||||
install_dir: get_option('datadir') / 'ladspa/rdf',
|
||||
)
|
||||
else
|
||||
target_summary += { 'LADSPA plugin': false }
|
||||
message('Not building LADSPA plugin: ladspa.h header not found')
|
||||
endif
|
||||
|
||||
if have_vamp
|
||||
target_summary += { 'Vamp plugin': [ true, 'Name: ' + rubberband_vamp_name ] }
|
||||
message('Will build Vamp plugin')
|
||||
rubberband_vamp = shared_library(
|
||||
rubberband_vamp_name,
|
||||
vamp_sources,
|
||||
include_directories: general_include_dirs,
|
||||
cpp_args: general_compile_args,
|
||||
c_args: general_compile_args,
|
||||
link_args: [
|
||||
arch_flags,
|
||||
feature_libraries,
|
||||
vamp_symbol_args,
|
||||
],
|
||||
dependencies: [
|
||||
rubberband_static_dep,
|
||||
general_dependencies,
|
||||
vamp_dep,
|
||||
],
|
||||
name_prefix: '',
|
||||
install: true,
|
||||
install_dir: get_option('libdir') / 'vamp',
|
||||
)
|
||||
install_data(
|
||||
'vamp/vamp-rubberband.cat',
|
||||
install_dir: get_option('libdir') / 'vamp',
|
||||
)
|
||||
else
|
||||
target_summary += { 'Vamp plugin': false }
|
||||
message('Not building Vamp plugin: Vamp dependency not found')
|
||||
endif
|
||||
|
||||
if have_sndfile
|
||||
target_summary += { 'Command-line utility': [ true, 'Name: ' + rubberband_program_name ] }
|
||||
message('Will build command-line utility')
|
||||
rubberband_program = executable(
|
||||
rubberband_program_name,
|
||||
program_sources,
|
||||
include_directories: general_include_dirs,
|
||||
cpp_args: general_compile_args,
|
||||
c_args: general_compile_args,
|
||||
link_args: [
|
||||
arch_flags,
|
||||
feature_libraries,
|
||||
],
|
||||
dependencies: [
|
||||
rubberband_static_dep,
|
||||
general_dependencies,
|
||||
sndfile_dep,
|
||||
],
|
||||
install: true,
|
||||
)
|
||||
else
|
||||
target_summary += { 'Command-line utility': false }
|
||||
message('Not building command-line utility: libsndfile dependency not found')
|
||||
endif
|
||||
|
||||
pkg.generate(
|
||||
name: 'rubberband',
|
||||
description: 'Audio time-stretching and pitch-shifting library',
|
||||
url: 'https://breakfastquay.com/rubberband/',
|
||||
version: meson.project_version(),
|
||||
requires: pkgconfig_requirements,
|
||||
libraries: '-L${libdir} -lrubberband',
|
||||
extra_cflags: '-I${includedir}',
|
||||
)
|
||||
|
||||
summary({'prefix': get_option('prefix'),
|
||||
'bindir': get_option('bindir'),
|
||||
'libdir': get_option('libdir'),
|
||||
'datadir': get_option('datadir'),
|
||||
}, section: 'Directories')
|
||||
|
||||
summary(config_summary + { 'Architecture': architecture },
|
||||
section: 'Configuration', bool_yn: true)
|
||||
summary(target_summary, section: 'Build targets', bool_yn: true)
|
||||
|
||||
if system == 'darwin'
|
||||
foreach arg: get_option('cpp_args')
|
||||
if arg.contains('iPhone')
|
||||
summary({'Please note': 'You cannot legally distribute the Rubber Band Library\n in an iOS app on the App Store, unless you have first obtained a\n commercial licence.'}, section: '***')
|
||||
break
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
33
meson_options.txt
Normal file
33
meson_options.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
option('fft',
|
||||
type: 'combo',
|
||||
choices: ['auto', 'kissfft', 'fftw', 'vdsp', 'ipp'],
|
||||
value: 'auto',
|
||||
description: 'FFT library to use. The default (auto) will use vDSP if available, KissFFT otherwise.')
|
||||
|
||||
option('resampler',
|
||||
type: 'combo',
|
||||
choices: ['auto', 'libsamplerate', 'speex', 'ipp'],
|
||||
value: 'auto',
|
||||
description: 'Resampler library to use. Recommended is libsamplerate. The default (auto) will use libsamplerate if available, speex otherwise.')
|
||||
|
||||
option('ipp_path',
|
||||
type: 'string',
|
||||
value: '',
|
||||
description: 'Path to Intel IPP libraries, if selected for any of the other options.')
|
||||
|
||||
option('extra_include_dirs',
|
||||
type: 'array',
|
||||
value: [],
|
||||
description: 'Additional local header directories to search for dependencies.')
|
||||
|
||||
option('extra_lib_dirs',
|
||||
type: 'array',
|
||||
value: [],
|
||||
description: 'Additional local library directories to search for dependencies.')
|
||||
|
||||
option('no_shared',
|
||||
type: 'boolean',
|
||||
value: 'false',
|
||||
description: 'Do not build shared libraries. On Windows this will also ensure that the static library is called simply rubberband.lib, not rubberband-static.lib as it is in the default build.')
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
CXX := clang++
|
||||
CC := clang
|
||||
OPTFLAGS := -ffast-math -freciprocal-math -O3 -ftree-vectorize
|
||||
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -freciprocal-math -O3 -ftree-vectorize
|
||||
|
||||
# For the device
|
||||
ARCHFLAGS_DEV := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6 -stdlib=libc++ -arch armv7 -arch arm64 -fembed-bitcode
|
||||
@@ -19,7 +20,7 @@ CFLAGS_SIM := $(ARCHFLAGS_SIM) $(OPTFLAGS)
|
||||
|
||||
AR := ar
|
||||
LIPO := lipo
|
||||
MKDIR := mkdir
|
||||
MKDIR := mkdir -p
|
||||
|
||||
LIBNAME := librubberband
|
||||
|
||||
@@ -28,10 +29,8 @@ STATIC_TARGET_DEV := lib/$(LIBNAME).dev.a
|
||||
STATIC_TARGET_SIM := lib/$(LIBNAME).sim.a
|
||||
|
||||
default: lib $(STATIC_TARGET)
|
||||
|
||||
all: lib $(STATIC_TARGET)
|
||||
|
||||
static: $(STATIC_TARGET)
|
||||
static: lib $(STATIC_TARGET)
|
||||
|
||||
PUBLIC_INCLUDES := \
|
||||
rubberband/rubberband-c.h \
|
||||
@@ -137,9 +136,9 @@ distclean: clean
|
||||
rm -f $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM)
|
||||
|
||||
depend:
|
||||
touch Makefile.dev_depends Makefile.sim_depends
|
||||
makedepend -f Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES)
|
||||
makedepend -f Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES)
|
||||
touch otherbuilds/Makefile.dev_depends otherbuilds/Makefile.sim_depends
|
||||
makedepend -f otherbuilds/Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES)
|
||||
makedepend -f otherbuilds/Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES)
|
||||
|
||||
-include Makefile.dev_depends
|
||||
-include Makefile.sim_depends
|
||||
-include otherbuilds/Makefile.dev_depends
|
||||
-include otherbuilds/Makefile.sim_depends
|
||||
@@ -1,75 +1,25 @@
|
||||
|
||||
PREFIX := @prefix@
|
||||
CXX := @CXX@
|
||||
CC := @CC@
|
||||
CXXFLAGS := -DHAVE_LIBSAMPLERATE -DHAVE_FFTW3 -DFFTW_DOUBLE_ONLY -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DNDEBUG -I. -Isrc -Irubberband @CXXFLAGS@ @SRC_CFLAGS@ @SNDFILE_CFLAGS@ @FFTW_CFLAGS@ @Vamp_CFLAGS@ $(OPTFLAGS)
|
||||
CFLAGS := @CFLAGS@ $(OPTFLAGS)
|
||||
LDFLAGS := @LDFLAGS@ -lpthread $(LDFLAGS)
|
||||
WITH_PROGRAMS := @WITH_PROGRAMS@
|
||||
WITH_VAMP := @WITH_VAMP@
|
||||
WITH_LADSPA := @WITH_LADSPA@
|
||||
CXX := g++
|
||||
CC := gcc
|
||||
|
||||
JNI_CXXFLAGS := -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
|
||||
JAVAC := $(JAVA_HOME)/bin/javac
|
||||
JAR := $(JAVA_HOME)/bin/jar
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize
|
||||
|
||||
LIBRARY_LIBS := @SRC_LIBS@ @FFTW_LIBS@
|
||||
PROGRAM_LIBS := @SNDFILE_LIBS@ $(LIBRARY_LIBS)
|
||||
VAMP_PLUGIN_LIBS := @Vamp_LIBS@ $(LIBRARY_LIBS)
|
||||
LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS)
|
||||
ARCHFLAGS :=
|
||||
|
||||
MKDIR := mkdir
|
||||
AR := ar
|
||||
CXXFLAGS := -std=c++98 $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE -DUSE_KISSFFT -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DHAVE_POSIX_MEMALIGN -DNDEBUG
|
||||
|
||||
INSTALL_BINDIR := $(PREFIX)/bin
|
||||
INSTALL_INCDIR := $(PREFIX)/include/rubberband
|
||||
INSTALL_LIBDIR := $(PREFIX)/lib
|
||||
INSTALL_VAMPDIR := $(PREFIX)/lib/vamp
|
||||
INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa
|
||||
INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf
|
||||
INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig
|
||||
CFLAGS := $(ARCHFLAGS) $(OPTFLAGS)
|
||||
|
||||
LIBNAME := librubberband
|
||||
JNINAME := librubberband-jni
|
||||
JARNAME := rubberband.jar
|
||||
AR := ar
|
||||
MKDIR := mkdir -p
|
||||
|
||||
DYNAMIC_EXTENSION := .so
|
||||
DYNAMIC_FULL_VERSION := 2.1.2
|
||||
DYNAMIC_ABI_VERSION := 2
|
||||
DYNAMIC_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
|
||||
VAMP_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=vamp/vamp-plugin.map
|
||||
LADSPA_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,--version-script=ladspa/ladspa-plugin.map
|
||||
LIBNAME := librubberband
|
||||
|
||||
PROGRAM_TARGET := bin/rubberband
|
||||
STATIC_TARGET := lib/$(LIBNAME).a
|
||||
DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
JNI_TARGET := lib/$(JNINAME)$(DYNAMIC_EXTENSION)
|
||||
JAR_TARGET := lib/$(JARNAME)
|
||||
VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION)
|
||||
LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION)
|
||||
STATIC_TARGET := lib/$(LIBNAME).a
|
||||
|
||||
ALL_TARGETS := lib $(STATIC_TARGET) $(DYNAMIC_TARGET)
|
||||
|
||||
ifeq ($(WITH_PROGRAMS), yes)
|
||||
ALL_TARGETS += bin $(PROGRAM_TARGET)
|
||||
endif
|
||||
|
||||
ifeq ($(WITH_VAMP), yes)
|
||||
ALL_TARGETS += $(VAMP_TARGET)
|
||||
endif
|
||||
|
||||
ifeq ($(WITH_LADSPA), yes)
|
||||
ALL_TARGETS += $(LADSPA_TARGET)
|
||||
endif
|
||||
|
||||
all: $(ALL_TARGETS)
|
||||
static: $(STATIC_TARGET)
|
||||
dynamic: $(DYNAMIC_TARGET)
|
||||
library: $(STATIC_TARGET) $(DYNAMIC_TARGET)
|
||||
jni: $(JNI_TARGET) $(JAR_TARGET)
|
||||
program: $(PROGRAM_TARGET)
|
||||
vamp: $(VAMP_TARGET)
|
||||
ladspa: $(LADSPA_TARGET)
|
||||
default: lib $(STATIC_TARGET)
|
||||
all: lib $(STATIC_TARGET)
|
||||
static: lib $(STATIC_TARGET)
|
||||
|
||||
PUBLIC_INCLUDES := \
|
||||
rubberband/rubberband-c.h \
|
||||
@@ -119,109 +69,27 @@ LIBRARY_SOURCES := \
|
||||
src/system/sysutils.cpp \
|
||||
src/system/Thread.cpp \
|
||||
src/StretcherChannelData.cpp \
|
||||
src/StretcherImpl.cpp
|
||||
|
||||
JNI_SOURCE := \
|
||||
src/jni/RubberBandStretcherJNI.cpp
|
||||
|
||||
JAVA_SOURCE := \
|
||||
com/breakfastquay/rubberband/RubberBandStretcher.java
|
||||
|
||||
PROGRAM_SOURCES := \
|
||||
main/main.cpp
|
||||
|
||||
VAMP_HEADERS := \
|
||||
vamp/RubberBandVampPlugin.h
|
||||
|
||||
VAMP_SOURCES := \
|
||||
vamp/RubberBandVampPlugin.cpp \
|
||||
vamp/libmain.cpp
|
||||
|
||||
LADSPA_HEADERS := \
|
||||
ladspa/RubberBandPitchShifter.h
|
||||
|
||||
LADSPA_SOURCES := \
|
||||
ladspa/RubberBandPitchShifter.cpp \
|
||||
ladspa/libmain.cpp
|
||||
src/StretcherImpl.cpp \
|
||||
src/kissfft/kiss_fft.c \
|
||||
src/kissfft/kiss_fftr.c
|
||||
|
||||
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
|
||||
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o)
|
||||
JNI_OBJECT := $(JNI_SOURCE:.cpp=.o)
|
||||
JAVA_OBJECT := $(JAVA_SOURCE:.java=.class)
|
||||
PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o)
|
||||
VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o)
|
||||
LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o)
|
||||
|
||||
$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS)
|
||||
$(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS)
|
||||
|
||||
$(STATIC_TARGET): $(LIBRARY_OBJECTS)
|
||||
$(AR) rsc $@ $^
|
||||
|
||||
$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS)
|
||||
$(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS)
|
||||
|
||||
$(JNI_OBJECT): $(JNI_SOURCE)
|
||||
$(CXX) -c $(JNI_CXXFLAGS) $(CXXFLAGS) $^ -o $@
|
||||
|
||||
$(JNI_TARGET): $(LIBRARY_OBJECTS) $(JNI_OBJECT)
|
||||
$(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS)
|
||||
|
||||
$(JAR_TARGET): $(JAVA_SOURCE)
|
||||
$(JAVAC) $^
|
||||
$(JAR) cvf $@ $(JAVA_OBJECT)
|
||||
|
||||
$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS)
|
||||
$(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS)
|
||||
|
||||
$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS)
|
||||
$(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS)
|
||||
|
||||
bin:
|
||||
$(MKDIR) $@
|
||||
lib:
|
||||
$(MKDIR) $@
|
||||
|
||||
install: all
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR)
|
||||
cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR)
|
||||
cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)
|
||||
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
|
||||
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
|
||||
cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION)
|
||||
ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
|
||||
ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
test -f $(JNI_TARGET) && cp -f $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION) || true
|
||||
sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \
|
||||
> $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc
|
||||
ifeq ($(WITH_PROGRAMS), yes)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR)
|
||||
cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR)
|
||||
endif
|
||||
ifeq ($(WITH_VAMP), yes)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
endif
|
||||
ifeq ($(WITH_LADSPA), yes)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR)
|
||||
cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR)
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm -f $(LIBRARY_OBJECTS) $(JNI_OBJECT) $(JAVA_OBJECT) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
|
||||
rm -f $(LIBRARY_OBJECTS)
|
||||
|
||||
distclean: clean
|
||||
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(JNI_TARGET) $(JAR_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
||||
rm -f $(STATIC_TARGET)
|
||||
|
||||
depend:
|
||||
makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
makedepend -f otherbuilds/Makefile.linux -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
|
||||
|
||||
# DO NOT DELETE
|
||||
173
otherbuilds/Makefile.macos
Normal file
173
otherbuilds/Makefile.macos
Normal file
@@ -0,0 +1,173 @@
|
||||
|
||||
CXX := clang++ -stdlib=libc++
|
||||
CC := clang
|
||||
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize
|
||||
|
||||
ARCHFLAGS := -mmacosx-version-min=10.7
|
||||
|
||||
CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING
|
||||
|
||||
CFLAGS := $(ARCHFLAGS) $(OPTFLAGS)
|
||||
|
||||
AR := ar
|
||||
MKDIR := mkdir -p
|
||||
|
||||
LIBNAME := librubberband
|
||||
|
||||
STATIC_TARGET := lib/$(LIBNAME).a
|
||||
|
||||
default: lib $(STATIC_TARGET)
|
||||
all: lib $(STATIC_TARGET)
|
||||
static: lib $(STATIC_TARGET)
|
||||
|
||||
PUBLIC_INCLUDES := \
|
||||
rubberband/rubberband-c.h \
|
||||
rubberband/RubberBandStretcher.h
|
||||
|
||||
LIBRARY_INCLUDES := \
|
||||
src/StretcherChannelData.h \
|
||||
src/float_cast/float_cast.h \
|
||||
src/StretcherImpl.h \
|
||||
src/StretchCalculator.h \
|
||||
src/base/Profiler.h \
|
||||
src/base/RingBuffer.h \
|
||||
src/base/Scavenger.h \
|
||||
src/dsp/AudioCurveCalculator.h \
|
||||
src/audiocurves/CompoundAudioCurve.h \
|
||||
src/audiocurves/ConstantAudioCurve.h \
|
||||
src/audiocurves/HighFrequencyAudioCurve.h \
|
||||
src/audiocurves/PercussiveAudioCurve.h \
|
||||
src/audiocurves/SilentAudioCurve.h \
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.h \
|
||||
src/dsp/Resampler.h \
|
||||
src/dsp/FFT.h \
|
||||
src/dsp/MovingMedian.h \
|
||||
src/dsp/SincWindow.h \
|
||||
src/dsp/Window.h \
|
||||
src/system/Allocators.h \
|
||||
src/system/Thread.h \
|
||||
src/system/VectorOps.h \
|
||||
src/system/VectorOpsComplex.h \
|
||||
src/system/sysutils.h
|
||||
|
||||
LIBRARY_SOURCES := \
|
||||
src/rubberband-c.cpp \
|
||||
src/RubberBandStretcher.cpp \
|
||||
src/StretcherProcess.cpp \
|
||||
src/StretchCalculator.cpp \
|
||||
src/base/Profiler.cpp \
|
||||
src/dsp/AudioCurveCalculator.cpp \
|
||||
src/audiocurves/CompoundAudioCurve.cpp \
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.cpp \
|
||||
src/audiocurves/HighFrequencyAudioCurve.cpp \
|
||||
src/audiocurves/SilentAudioCurve.cpp \
|
||||
src/audiocurves/ConstantAudioCurve.cpp \
|
||||
src/audiocurves/PercussiveAudioCurve.cpp \
|
||||
src/dsp/Resampler.cpp \
|
||||
src/dsp/FFT.cpp \
|
||||
src/system/Allocators.cpp \
|
||||
src/system/sysutils.cpp \
|
||||
src/system/Thread.cpp \
|
||||
src/system/VectorOpsComplex.cpp \
|
||||
src/StretcherChannelData.cpp \
|
||||
src/StretcherImpl.cpp
|
||||
|
||||
# For Speex resampler -- comment these lines out if not specifying USE_SPEEX
|
||||
LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \
|
||||
src/speex/speex_resampler.h
|
||||
LIBRARY_SOURCES := $(LIBRARY_SOURCES) \
|
||||
src/speex/resample.c
|
||||
|
||||
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
|
||||
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o)
|
||||
|
||||
$(STATIC_TARGET): $(LIBRARY_OBJECTS)
|
||||
rm -f $@
|
||||
$(AR) rsc $@ $^
|
||||
|
||||
lib:
|
||||
$(MKDIR) $@
|
||||
|
||||
clean:
|
||||
rm -f $(LIBRARY_OBJECTS)
|
||||
|
||||
distclean: clean
|
||||
rm -f $(STATIC_TARGET)
|
||||
|
||||
depend:
|
||||
makedepend -f otherbuilds/Makefile.macos -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
|
||||
|
||||
# DO NOT DELETE
|
||||
|
||||
src/rubberband-c.o: rubberband/rubberband-c.h
|
||||
src/rubberband-c.o: rubberband/RubberBandStretcher.h
|
||||
src/RubberBandStretcher.o: src/StretcherImpl.h
|
||||
src/RubberBandStretcher.o: rubberband/RubberBandStretcher.h src/dsp/Window.h
|
||||
src/RubberBandStretcher.o: src/dsp/FFT.h src/base/RingBuffer.h
|
||||
src/RubberBandStretcher.o: src/base/Scavenger.h src/system/Thread.h
|
||||
src/RubberBandStretcher.o: src/system/Thread.h src/system/sysutils.h
|
||||
src/StretcherProcess.o: src/StretcherImpl.h rubberband/RubberBandStretcher.h
|
||||
src/StretcherProcess.o: src/dsp/Window.h src/dsp/FFT.h src/base/RingBuffer.h
|
||||
src/StretcherProcess.o: src/base/Scavenger.h src/system/Thread.h
|
||||
src/StretcherProcess.o: src/system/Thread.h src/system/sysutils.h
|
||||
src/StretcherProcess.o: src/audiocurves/PercussiveAudioCurve.h
|
||||
src/StretcherProcess.o: src/dsp/AudioCurveCalculator.h
|
||||
src/StretcherProcess.o: src/audiocurves/HighFrequencyAudioCurve.h
|
||||
src/StretcherProcess.o: src/audiocurves/ConstantAudioCurve.h src/StretchCalculator.h
|
||||
src/StretcherProcess.o: src/StretcherChannelData.h src/dsp/Resampler.h
|
||||
src/StretcherProcess.o: src/base/Profiler.h src/system/VectorOps.h
|
||||
src/StretcherProcess.o: src/system/sysutils.h
|
||||
src/StretchCalculator.o: src/StretchCalculator.h src/system/sysutils.h
|
||||
src/system/Thread.o: src/system/Thread.h
|
||||
src/base/Profiler.o: src/base/Profiler.h src/system/sysutils.h
|
||||
src/dsp/AudioCurveCalculator.o: src/dsp/AudioCurveCalculator.h
|
||||
src/dsp/AudioCurveCalculator.o: src/system/sysutils.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/audiocurves/SpectralDifferenceAudioCurve.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/dsp/AudioCurveCalculator.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/sysutils.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/dsp/Window.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/VectorOps.h
|
||||
src/audiocurves/SpectralDifferenceAudioCurve.o: src/system/sysutils.h
|
||||
src/audiocurves/HighFrequencyAudioCurve.o: src/audiocurves/HighFrequencyAudioCurve.h
|
||||
src/audiocurves/HighFrequencyAudioCurve.o: src/dsp/AudioCurveCalculator.h
|
||||
src/audiocurves/HighFrequencyAudioCurve.o: src/system/sysutils.h
|
||||
src/audiocurves/SilentAudioCurve.o: src/audiocurves/SilentAudioCurve.h
|
||||
src/audiocurves/SilentAudioCurve.o: src/dsp/AudioCurveCalculator.h
|
||||
src/audiocurves/SilentAudioCurve.o: src/system/sysutils.h
|
||||
src/audiocurves/ConstantAudioCurve.o: src/audiocurves/ConstantAudioCurve.h
|
||||
src/audiocurves/ConstantAudioCurve.o: src/dsp/AudioCurveCalculator.h
|
||||
src/audiocurves/ConstantAudioCurve.o: src/system/sysutils.h
|
||||
src/audiocurves/PercussiveAudioCurve.o: src/audiocurves/PercussiveAudioCurve.h
|
||||
src/audiocurves/PercussiveAudioCurve.o: src/dsp/AudioCurveCalculator.h
|
||||
src/audiocurves/PercussiveAudioCurve.o: src/system/sysutils.h src/system/VectorOps.h
|
||||
src/audiocurves/PercussiveAudioCurve.o: src/system/sysutils.h
|
||||
src/dsp/Resampler.o: src/dsp/Resampler.h src/system/sysutils.h
|
||||
src/dsp/Resampler.o: src/base/Profiler.h
|
||||
src/dsp/FFT.o: src/dsp/FFT.h src/system/sysutils.h src/system/Thread.h
|
||||
src/dsp/FFT.o: src/base/Profiler.h src/system/VectorOps.h
|
||||
src/dsp/FFT.o: src/system/sysutils.h
|
||||
src/system/Allocators.o: src/system/Allocators.h src/system/VectorOps.h
|
||||
src/system/Allocators.o: src/system/sysutils.h
|
||||
src/system/sysutils.o: src/system/sysutils.h
|
||||
src/StretcherChannelData.o: src/StretcherChannelData.h src/StretcherImpl.h
|
||||
src/StretcherChannelData.o: rubberband/RubberBandStretcher.h src/dsp/Window.h
|
||||
src/StretcherChannelData.o: src/dsp/FFT.h src/base/RingBuffer.h
|
||||
src/StretcherChannelData.o: src/base/Scavenger.h src/system/Thread.h
|
||||
src/StretcherChannelData.o: src/system/Thread.h src/system/sysutils.h
|
||||
src/StretcherChannelData.o: src/dsp/Resampler.h src/system/Allocators.h
|
||||
src/StretcherChannelData.o: src/system/VectorOps.h src/system/sysutils.h
|
||||
src/StretcherImpl.o: src/StretcherImpl.h rubberband/RubberBandStretcher.h
|
||||
src/StretcherImpl.o: src/dsp/Window.h src/dsp/FFT.h src/base/RingBuffer.h
|
||||
src/StretcherImpl.o: src/base/Scavenger.h src/system/Thread.h src/system/Thread.h
|
||||
src/StretcherImpl.o: src/system/sysutils.h src/audiocurves/PercussiveAudioCurve.h
|
||||
src/StretcherImpl.o: src/dsp/AudioCurveCalculator.h
|
||||
src/StretcherImpl.o: src/audiocurves/HighFrequencyAudioCurve.h
|
||||
src/StretcherImpl.o: src/audiocurves/SpectralDifferenceAudioCurve.h src/dsp/Window.h
|
||||
src/StretcherImpl.o: src/system/VectorOps.h src/system/sysutils.h
|
||||
src/StretcherImpl.o: src/audiocurves/SilentAudioCurve.h src/audiocurves/ConstantAudioCurve.h
|
||||
src/StretcherImpl.o: src/dsp/Resampler.h src/StretchCalculator.h
|
||||
src/StretcherImpl.o: src/StretcherChannelData.h src/base/Profiler.h
|
||||
main/main.o: rubberband/RubberBandStretcher.h src/system/sysutils.h
|
||||
main/main.o: src/base/Profiler.h
|
||||
@@ -1,56 +1,27 @@
|
||||
|
||||
PREFIX := /usr/local
|
||||
CXX := clang++ -stdlib=libc++
|
||||
CC := clang
|
||||
ARCHFLAGS := -arch x86_64 -mmacosx-version-min=10.7
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -mfpmath=sse -msse -msse2 -O3 -ftree-vectorize
|
||||
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize
|
||||
|
||||
ARCHFLAGS := -arch arm64 -arch x86_64 -mmacosx-version-min=10.7
|
||||
|
||||
CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING
|
||||
|
||||
CFLAGS := $(ARCHFLAGS) $(OPTFLAGS)
|
||||
LDFLAGS := $(ARCHFLAGS) -lpthread $(LDFLAGS)
|
||||
|
||||
LIBRARY_LIBS := -framework Accelerate
|
||||
PROGRAM_LIBS := -L$(PREFIX)/lib -lsndfile $(LIBRARY_LIBS)
|
||||
VAMP_PLUGIN_LIBS := -L$(PREFIX)/lib -lvamp-sdk $(LIBRARY_LIBS)
|
||||
LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS)
|
||||
|
||||
MKDIR := mkdir
|
||||
AR := ar
|
||||
|
||||
INSTALL_BINDIR := $(PREFIX)/bin
|
||||
INSTALL_INCDIR := $(PREFIX)/include/rubberband
|
||||
INSTALL_LIBDIR := $(PREFIX)/lib
|
||||
INSTALL_VAMPDIR := $(PREFIX)/lib/vamp
|
||||
INSTALL_LADSPADIR := $(PREFIX)/lib/ladspa
|
||||
INSTALL_LRDFDIR := $(PREFIX)/share/ladspa/rdf
|
||||
INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig
|
||||
MKDIR := mkdir
|
||||
|
||||
LIBNAME := librubberband
|
||||
|
||||
DYNAMIC_EXTENSION := .dylib
|
||||
DYNAMIC_FULL_VERSION := 2.1.2
|
||||
DYNAMIC_ABI_VERSION := 2
|
||||
DYNAMIC_LDFLAGS := -dynamiclib -install_name $(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION) -current_version $(DYNAMIC_FULL_VERSION) -compatibility_version $(DYNAMIC_ABI_VERSION)
|
||||
VAMP_LDFLAGS := -dynamiclib -install_name vamp-rubberband.dylib -exported_symbols_list vamp/vamp-plugin.list
|
||||
LADSPA_LDFLAGS := -dynamiclib -install_name ladspa-rubberband.dylib -exported_symbols_list ladspa/ladspa-plugin.list
|
||||
|
||||
PROGRAM_TARGET := bin/rubberband
|
||||
STATIC_TARGET := lib/$(LIBNAME).a
|
||||
DYNAMIC_TARGET := lib/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
VAMP_TARGET := lib/vamp-rubberband$(DYNAMIC_EXTENSION)
|
||||
LADSPA_TARGET := lib/ladspa-rubberband$(DYNAMIC_EXTENSION)
|
||||
|
||||
default: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET)
|
||||
default: $(STATIC_TARGET)
|
||||
|
||||
all: bin lib $(STATIC_TARGET) $(DYNAMIC_TARGET) $(PROGRAM_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
||||
all: $(STATIC_TARGET)
|
||||
|
||||
static: $(STATIC_TARGET)
|
||||
dynamic: $(DYNAMIC_TARGET)
|
||||
library: $(STATIC_TARGET) $(DYNAMIC_TARGET)
|
||||
program: $(PROGRAM_TARGET)
|
||||
vamp: $(VAMP_TARGET)
|
||||
ladspa: $(LADSPA_TARGET)
|
||||
|
||||
PUBLIC_INCLUDES := \
|
||||
rubberband/rubberband-c.h \
|
||||
@@ -110,83 +81,24 @@ LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \
|
||||
LIBRARY_SOURCES := $(LIBRARY_SOURCES) \
|
||||
src/speex/resample.c
|
||||
|
||||
PROGRAM_SOURCES := \
|
||||
main/main.cpp
|
||||
|
||||
VAMP_HEADERS := \
|
||||
vamp/RubberBandVampPlugin.h
|
||||
|
||||
VAMP_SOURCES := \
|
||||
vamp/RubberBandVampPlugin.cpp \
|
||||
vamp/libmain.cpp
|
||||
|
||||
LADSPA_HEADERS := \
|
||||
ladspa/RubberBandPitchShifter.h
|
||||
|
||||
LADSPA_SOURCES := \
|
||||
ladspa/RubberBandPitchShifter.cpp \
|
||||
ladspa/libmain.cpp
|
||||
|
||||
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
|
||||
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.o)
|
||||
|
||||
PROGRAM_OBJECTS := $(PROGRAM_SOURCES:.cpp=.o)
|
||||
VAMP_OBJECTS := $(VAMP_SOURCES:.cpp=.o)
|
||||
LADSPA_OBJECTS := $(LADSPA_SOURCES:.cpp=.o)
|
||||
|
||||
$(PROGRAM_TARGET): $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS)
|
||||
$(CXX) -o $@ $^ $(PROGRAM_LIBS) $(LDFLAGS)
|
||||
|
||||
$(STATIC_TARGET): $(LIBRARY_OBJECTS)
|
||||
rm -f $@
|
||||
$(AR) rsc $@ $^
|
||||
|
||||
$(DYNAMIC_TARGET): $(LIBRARY_OBJECTS)
|
||||
$(CXX) $(DYNAMIC_LDFLAGS) $^ -o $@ $(LIBRARY_LIBS) $(LDFLAGS)
|
||||
|
||||
$(VAMP_TARGET): $(LIBRARY_OBJECTS) $(VAMP_OBJECTS)
|
||||
$(CXX) $(VAMP_LDFLAGS) -o $@ $^ $(VAMP_PLUGIN_LIBS) $(LDFLAGS)
|
||||
|
||||
$(LADSPA_TARGET): $(LIBRARY_OBJECTS) $(LADSPA_OBJECTS)
|
||||
$(CXX) $(LADSPA_LDFLAGS) -o $@ $^ $(LADSPA_PLUGIN_LIBS) $(LDFLAGS)
|
||||
|
||||
bin:
|
||||
$(MKDIR) $@
|
||||
lib:
|
||||
$(MKDIR) $@
|
||||
|
||||
install: default
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_BINDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_INCDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LIBDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_LRDFDIR)
|
||||
$(MKDIR) -p $(DESTDIR)$(INSTALL_PKGDIR)
|
||||
cp $(PROGRAM_TARGET) $(DESTDIR)$(INSTALL_BINDIR)
|
||||
cp $(PUBLIC_INCLUDES) $(DESTDIR)$(INSTALL_INCDIR)
|
||||
cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)
|
||||
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION)
|
||||
rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION)
|
||||
ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME).$(DYNAMIC_ABI_VERSION)$(DYNAMIC_EXTENSION)
|
||||
ln -s $(LIBNAME).$(DYNAMIC_FULL_VERSION)$(DYNAMIC_EXTENSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
|
||||
cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
cp ladspa/ladspa-rubberband.cat $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
cp ladspa/ladspa-rubberband.rdf $(DESTDIR)$(INSTALL_LRDFDIR)
|
||||
sed "s,%PREFIX%,$(PREFIX)," rubberband.pc.in \
|
||||
> $(DESTDIR)$(INSTALL_PKGDIR)/rubberband.pc
|
||||
|
||||
clean:
|
||||
rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
|
||||
rm -f $(LIBRARY_OBJECTS)
|
||||
|
||||
distclean: clean
|
||||
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
||||
rm -f $(STATIC_TARGET)
|
||||
|
||||
depend:
|
||||
makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
makedepend -f otherbuilds/Makefile.macos-universal -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
|
||||
|
||||
# DO NOT DELETE
|
||||
13
otherbuilds/check.sh
Executable file
13
otherbuilds/check.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
if [ ! -d /Applications ]; then
|
||||
make -f otherbuilds/Makefile.linux
|
||||
g++ main/main.cpp lib/librubberband.a -I. -Isrc -o test -lsndfile -lsamplerate -lpthread
|
||||
./test -V
|
||||
else
|
||||
make -f otherbuilds/Makefile.macos
|
||||
c++ main/main.cpp lib/librubberband.a -I. -Isrc -o test -lsndfile -lsamplerate -framework Accelerate
|
||||
./test -V
|
||||
make -f otherbuilds/Makefile.macos clean
|
||||
make -f otherbuilds/Makefile.ios
|
||||
fi
|
||||
@@ -19,26 +19,27 @@
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{06838307-FEAA-4DB0-8E08-AF19698E9C40}</ProjectGuid>
|
||||
<RootNamespace>rubberband-program</RootNamespace>
|
||||
<ProjectGuid>{020CEB11-EF4E-400E-971D-A35DB69D7CF9}</ProjectGuid>
|
||||
<RootNamespace>rubberband-library</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
@@ -62,67 +63,43 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>Debug\</OutDir>
|
||||
<IntDir>Debug\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||
<SourcePath>$(SourcePath)</SourcePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>Release\</OutDir>
|
||||
<IntDir>Release\</IntDir>
|
||||
<LinkIncremental />
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental />
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRules />
|
||||
<CodeAnalysisRuleAssemblies />
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<ShowIncludes>false</ShowIncludes>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>.\Debug\rubberband-library.lib;C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ShowIncludes>false</ShowIncludes>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>.\x64\Debug\rubberband-library.lib;C:\Program Files\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
@@ -131,23 +108,16 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>.\Release\rubberband-library.lib;C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
@@ -156,9 +126,10 @@
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
@@ -166,30 +137,61 @@
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>.\x64\Release\rubberband-library.lib;C:\Program Files\Mega-Nerd\libsndfile\lib\libsndfile-1.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="rubberband\RubberBandStretcher.h" />
|
||||
<ClInclude Include="src\float_cast\float_cast.h" />
|
||||
<ClInclude Include="src\getopt\getopt.h" />
|
||||
<ClInclude Include="src\getopt\unistd.h" />
|
||||
<ClInclude Include="..\rubberband\rubberband-c.h" />
|
||||
<ClInclude Include="..\rubberband\RubberBandStretcher.h" />
|
||||
<ClInclude Include="..\src\audiocurves\CompoundAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\ConstantAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\HighFrequencyAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\PercussiveAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\SilentAudioCurve.h" />
|
||||
<ClInclude Include="..\src\audiocurves\SpectralDifferenceAudioCurve.h" />
|
||||
<ClInclude Include="..\src\base\Profiler.h" />
|
||||
<ClInclude Include="..\src\base\RingBuffer.h" />
|
||||
<ClInclude Include="..\src\base\Scavenger.h" />
|
||||
<ClInclude Include="..\src\dsp\AudioCurveCalculator.h" />
|
||||
<ClInclude Include="..\src\dsp\FFT.h" />
|
||||
<ClInclude Include="..\src\dsp\MovingMedian.h" />
|
||||
<ClInclude Include="..\src\dsp\Resampler.h" />
|
||||
<ClInclude Include="..\src\dsp\SampleFilter.h" />
|
||||
<ClInclude Include="..\src\dsp\SincWindow.h" />
|
||||
<ClInclude Include="..\src\dsp\Window.h" />
|
||||
<ClInclude Include="..\src\float_cast\float_cast.h" />
|
||||
<ClInclude Include="..\src\speex\speex_resampler.h" />
|
||||
<ClInclude Include="..\src\StretchCalculator.h" />
|
||||
<ClInclude Include="..\src\StretcherChannelData.h" />
|
||||
<ClInclude Include="..\src\StretcherImpl.h" />
|
||||
<ClInclude Include="..\src\system\Allocators.h" />
|
||||
<ClInclude Include="..\src\system\sysutils.h" />
|
||||
<ClInclude Include="..\src\system\Thread.h" />
|
||||
<ClInclude Include="..\src\system\VectorOps.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main\main.cpp" />
|
||||
<ClCompile Include="src\getopt\getopt.c" />
|
||||
<ClCompile Include="src\getopt\getopt_long.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="debug\BuildLog.htm" />
|
||||
<None Include="wub\index.html" />
|
||||
<ClCompile Include="..\src\audiocurves\CompoundAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\ConstantAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\PercussiveAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\SilentAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
||||
<ClCompile Include="..\src\base\Profiler.cpp" />
|
||||
<ClCompile Include="..\src\dsp\AudioCurveCalculator.cpp" />
|
||||
<ClCompile Include="..\src\dsp\FFT.cpp" />
|
||||
<ClCompile Include="..\src\dsp\Resampler.cpp" />
|
||||
<ClCompile Include="..\src\kissfft\kiss_fft.c" />
|
||||
<ClCompile Include="..\src\kissfft\kiss_fftr.c" />
|
||||
<ClCompile Include="..\src\rubberband-c.cpp" />
|
||||
<ClCompile Include="..\src\RubberBandStretcher.cpp" />
|
||||
<ClCompile Include="..\src\speex\resample.c" />
|
||||
<ClCompile Include="..\src\StretchCalculator.cpp" />
|
||||
<ClCompile Include="..\src\StretcherChannelData.cpp" />
|
||||
<ClCompile Include="..\src\StretcherImpl.cpp" />
|
||||
<ClCompile Include="..\src\StretcherProcess.cpp" />
|
||||
<ClCompile Include="..\src\system\Allocators.cpp" />
|
||||
<ClCompile Include="..\src\system\sysutils.cpp" />
|
||||
<ClCompile Include="..\src\system\Thread.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,13 +21,20 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBANDSTRETCHER_H_
|
||||
#define _RUBBERBANDSTRETCHER_H_
|
||||
#ifndef RUBBERBAND_STRETCHER_H
|
||||
#define RUBBERBAND_STRETCHER_H
|
||||
|
||||
#define RUBBERBAND_VERSION "1.9.0"
|
||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
||||
|
||||
#undef RUBBERBAND_DLLEXPORT
|
||||
#ifdef _MSC_VER
|
||||
#define RUBBERBAND_DLLEXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define RUBBERBAND_DLLEXPORT
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <cstddef>
|
||||
@@ -60,7 +67,8 @@
|
||||
namespace RubberBand
|
||||
{
|
||||
|
||||
class RubberBandStretcher
|
||||
class RUBBERBAND_DLLEXPORT
|
||||
RubberBandStretcher
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@@ -310,7 +318,7 @@ public:
|
||||
OptionPitchHighConsistency = 0x04000000,
|
||||
|
||||
OptionChannelsApart = 0x00000000,
|
||||
OptionChannelsTogether = 0x10000000,
|
||||
OptionChannelsTogether = 0x10000000
|
||||
|
||||
// n.b. Options is int, so we must stop before 0x80000000
|
||||
};
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_C_API_H_
|
||||
#define _RUBBERBAND_C_API_H_
|
||||
#ifndef RUBBERBAND_C_API_H
|
||||
#define RUBBERBAND_C_API_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -32,6 +32,13 @@ extern "C" {
|
||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
||||
|
||||
#undef RB_EXTERN
|
||||
#ifdef _MSC_VER
|
||||
#define RB_EXTERN extern __declspec(dllexport)
|
||||
#else
|
||||
#define RB_EXTERN extern
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This is a C-linkage interface to the Rubber Band time stretcher.
|
||||
*
|
||||
@@ -83,7 +90,7 @@ enum RubberBandOption {
|
||||
RubberBandOptionPitchHighConsistency = 0x04000000,
|
||||
|
||||
RubberBandOptionChannelsApart = 0x00000000,
|
||||
RubberBandOptionChannelsTogether = 0x10000000,
|
||||
RubberBandOptionChannelsTogether = 0x10000000
|
||||
};
|
||||
|
||||
typedef int RubberBandOptions;
|
||||
@@ -91,52 +98,54 @@ typedef int RubberBandOptions;
|
||||
struct RubberBandState_;
|
||||
typedef struct RubberBandState_ *RubberBandState;
|
||||
|
||||
extern RubberBandState rubberband_new(unsigned int sampleRate,
|
||||
RB_EXTERN RubberBandState rubberband_new(unsigned int sampleRate,
|
||||
unsigned int channels,
|
||||
RubberBandOptions options,
|
||||
double initialTimeRatio,
|
||||
double initialPitchScale);
|
||||
|
||||
extern void rubberband_delete(RubberBandState);
|
||||
RB_EXTERN void rubberband_delete(RubberBandState);
|
||||
|
||||
extern void rubberband_reset(RubberBandState);
|
||||
RB_EXTERN void rubberband_reset(RubberBandState);
|
||||
|
||||
extern void rubberband_set_time_ratio(RubberBandState, double ratio);
|
||||
extern void rubberband_set_pitch_scale(RubberBandState, double scale);
|
||||
RB_EXTERN void rubberband_set_time_ratio(RubberBandState, double ratio);
|
||||
RB_EXTERN void rubberband_set_pitch_scale(RubberBandState, double scale);
|
||||
|
||||
extern double rubberband_get_time_ratio(const RubberBandState);
|
||||
extern double rubberband_get_pitch_scale(const RubberBandState);
|
||||
RB_EXTERN double rubberband_get_time_ratio(const RubberBandState);
|
||||
RB_EXTERN double rubberband_get_pitch_scale(const RubberBandState);
|
||||
|
||||
extern unsigned int rubberband_get_latency(const RubberBandState);
|
||||
RB_EXTERN unsigned int rubberband_get_latency(const RubberBandState);
|
||||
|
||||
extern void rubberband_set_transients_option(RubberBandState, RubberBandOptions options);
|
||||
extern void rubberband_set_detector_option(RubberBandState, RubberBandOptions options);
|
||||
extern void rubberband_set_phase_option(RubberBandState, RubberBandOptions options);
|
||||
extern void rubberband_set_formant_option(RubberBandState, RubberBandOptions options);
|
||||
extern void rubberband_set_pitch_option(RubberBandState, RubberBandOptions options);
|
||||
RB_EXTERN void rubberband_set_transients_option(RubberBandState, RubberBandOptions options);
|
||||
RB_EXTERN void rubberband_set_detector_option(RubberBandState, RubberBandOptions options);
|
||||
RB_EXTERN void rubberband_set_phase_option(RubberBandState, RubberBandOptions options);
|
||||
RB_EXTERN void rubberband_set_formant_option(RubberBandState, RubberBandOptions options);
|
||||
RB_EXTERN void rubberband_set_pitch_option(RubberBandState, RubberBandOptions options);
|
||||
|
||||
extern void rubberband_set_expected_input_duration(RubberBandState, unsigned int samples);
|
||||
RB_EXTERN void rubberband_set_expected_input_duration(RubberBandState, unsigned int samples);
|
||||
|
||||
extern unsigned int rubberband_get_samples_required(const RubberBandState);
|
||||
RB_EXTERN unsigned int rubberband_get_samples_required(const RubberBandState);
|
||||
|
||||
extern void rubberband_set_max_process_size(RubberBandState, unsigned int samples);
|
||||
extern void rubberband_set_key_frame_map(RubberBandState, unsigned int keyframecount, unsigned int *from, unsigned int *to);
|
||||
RB_EXTERN void rubberband_set_max_process_size(RubberBandState, unsigned int samples);
|
||||
RB_EXTERN void rubberband_set_key_frame_map(RubberBandState, unsigned int keyframecount, unsigned int *from, unsigned int *to);
|
||||
|
||||
extern void rubberband_study(RubberBandState, const float *const *input, unsigned int samples, int final);
|
||||
extern void rubberband_process(RubberBandState, const float *const *input, unsigned int samples, int final);
|
||||
RB_EXTERN void rubberband_study(RubberBandState, const float *const *input, unsigned int samples, int final);
|
||||
RB_EXTERN void rubberband_process(RubberBandState, const float *const *input, unsigned int samples, int final);
|
||||
|
||||
extern int rubberband_available(const RubberBandState);
|
||||
extern unsigned int rubberband_retrieve(const RubberBandState, float *const *output, unsigned int samples);
|
||||
RB_EXTERN int rubberband_available(const RubberBandState);
|
||||
RB_EXTERN unsigned int rubberband_retrieve(const RubberBandState, float *const *output, unsigned int samples);
|
||||
|
||||
extern unsigned int rubberband_get_channel_count(const RubberBandState);
|
||||
RB_EXTERN unsigned int rubberband_get_channel_count(const RubberBandState);
|
||||
|
||||
extern void rubberband_calculate_stretch(RubberBandState);
|
||||
RB_EXTERN void rubberband_calculate_stretch(RubberBandState);
|
||||
|
||||
extern void rubberband_set_debug_level(RubberBandState, int level);
|
||||
extern void rubberband_set_default_debug_level(int level);
|
||||
RB_EXTERN void rubberband_set_debug_level(RubberBandState, int level);
|
||||
RB_EXTERN void rubberband_set_default_debug_level(int level);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef RB_EXTERN
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_STRETCH_CALCULATOR_H_
|
||||
#define _RUBBERBAND_STRETCH_CALCULATOR_H_
|
||||
#ifndef RUBBERBAND_STRETCH_CALCULATOR_H
|
||||
#define RUBBERBAND_STRETCH_CALCULATOR_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_STRETCHERCHANNELDATA_H_
|
||||
#define _RUBBERBAND_STRETCHERCHANNELDATA_H_
|
||||
#ifndef RUBBERBAND_STRETCHERCHANNELDATA_H
|
||||
#define RUBBERBAND_STRETCHERCHANNELDATA_H
|
||||
|
||||
#include "StretcherImpl.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_STRETCHERIMPL_H_
|
||||
#define _RUBBERBAND_STRETCHERIMPL_H_
|
||||
#ifndef RUBBERBAND_STRETCHERIMPL_H
|
||||
#define RUBBERBAND_STRETCHERIMPL_H
|
||||
|
||||
#include "rubberband/RubberBandStretcher.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _COMPOUND_AUDIO_CURVE_H_
|
||||
#define _COMPOUND_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_COMPOUND_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_COMPOUND_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
#include "PercussiveAudioCurve.h"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _CONSTANT_AUDIO_CURVE_H_
|
||||
#define _CONSTANT_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_CONSTANT_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_CONSTANT_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _HIGHFREQUENCY_AUDIO_CURVE_H_
|
||||
#define _HIGHFREQUENCY_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _PERCUSSIVE_AUDIO_CURVE_H_
|
||||
#define _PERCUSSIVE_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _SILENT_AUDIO_CURVE_H_
|
||||
#define _SILENT_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_SILENT_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_SILENT_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _SPECTRALDIFFERENCE_AUDIO_CURVE_H_
|
||||
#define _SPECTRALDIFFERENCE_AUDIO_CURVE_H_
|
||||
#ifndef RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H
|
||||
#define RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H
|
||||
|
||||
#include "dsp/AudioCurveCalculator.h"
|
||||
#include "dsp/Window.h"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __MSVC__
|
||||
#ifdef _MSC_VER
|
||||
// Ugh --cc
|
||||
#define snprintf sprintf_s
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _PROFILER_H_
|
||||
#define _PROFILER_H_
|
||||
#ifndef RUBBERBAND_PROFILER_H
|
||||
#define RUBBERBAND_PROFILER_H
|
||||
|
||||
//#define NO_TIMING 1
|
||||
//#define WANT_TIMING 1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_RINGBUFFER_H_
|
||||
#define _RUBBERBAND_RINGBUFFER_H_
|
||||
#ifndef RUBBERBAND_RINGBUFFER_H
|
||||
#define RUBBERBAND_RINGBUFFER_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
@@ -524,4 +524,4 @@ RingBuffer<T>::zero(int n)
|
||||
|
||||
}
|
||||
|
||||
#endif // _RINGBUFFER_H_
|
||||
#endif // _RINGBUFFER_H
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,15 +21,15 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_SCAVENGER_H_
|
||||
#define _RUBBERBAND_SCAVENGER_H_
|
||||
#ifndef RUBBERBAND_SCAVENGER_H
|
||||
#define RUBBERBAND_SCAVENGER_H
|
||||
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <utility>
|
||||
#include <iostream>
|
||||
|
||||
#ifndef WIN32
|
||||
#ifndef _MSC_VER
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _AUDIO_CURVE_CALCULATOR_H_
|
||||
#define _AUDIO_CURVE_CALCULATOR_H_
|
||||
#ifndef RUBBERBAND_AUDIO_CURVE_CALCULATOR_H
|
||||
#define RUBBERBAND_AUDIO_CURVE_CALCULATOR_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_FFT_H_
|
||||
#define _RUBBERBAND_FFT_H_
|
||||
#ifndef RUBBERBAND_FFT_H
|
||||
#define RUBBERBAND_FFT_H
|
||||
|
||||
#include "system/sysutils.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _MOVING_MEDIAN_H_
|
||||
#define _MOVING_MEDIAN_H_
|
||||
#ifndef RUBBERBAND_MOVING_MEDIAN_H
|
||||
#define RUBBERBAND_MOVING_MEDIAN_H
|
||||
|
||||
#include "SampleFilter.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _SAMPLE_FILTER_H_
|
||||
#define _SAMPLE_FILTER_H_
|
||||
#ifndef RUBBERBAND_SAMPLE_FILTER_H
|
||||
#define RUBBERBAND_SAMPLE_FILTER_H
|
||||
|
||||
#include <cassert>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_SINC_WINDOW_H_
|
||||
#define _RUBBERBAND_SINC_WINDOW_H_
|
||||
#ifndef RUBBERBAND_SINC_WINDOW_H
|
||||
#define RUBBERBAND_SINC_WINDOW_H
|
||||
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_WINDOW_H_
|
||||
#define _RUBBERBAND_WINDOW_H_
|
||||
#ifndef RUBBERBAND_WINDOW_H
|
||||
#define RUBBERBAND_WINDOW_H
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
#ifndef _POMMIER_SSE_MATHFUN_H_
|
||||
#define _POMMIER_SSE_MATHFUN_H_
|
||||
#ifndef POMMIER_SSE_MATHFUN_H
|
||||
#define POMMIER_SSE_MATHFUN_H
|
||||
|
||||
/* SIMD (SSE1+MMX or SSE2) implementation of sin, cos, exp and log
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -90,10 +90,7 @@ static void *speex_alloc (int count, int size)
|
||||
#ifdef HAVE_IPP
|
||||
void *rv;
|
||||
#endif
|
||||
|
||||
// fprintf(stderr, "speex_alloc(%d,%d)\n", count, size);
|
||||
if (count * size < ALLOC_MINIMUM) {
|
||||
// fprintf(stderr, "upgrading count from %d to %d\n", count, ALLOC_MINIMUM / size);
|
||||
if (count * size < ALLOC_MINIMUM) {
|
||||
count = ALLOC_MINIMUM / size;
|
||||
}
|
||||
|
||||
@@ -105,9 +102,7 @@ static void *speex_alloc (int count, int size)
|
||||
} else {
|
||||
rv = ippsMalloc_8u(count * size);
|
||||
}
|
||||
// fprintf(stderr, "allocated at %p; now setting %d bytes to zero\n", rv, count*size);
|
||||
memset(rv, count * size, 0);
|
||||
// fprintf(stderr, "returning %p\n",rv);
|
||||
memset(rv, 0, count * size);
|
||||
return rv;
|
||||
#else
|
||||
return calloc(count, size);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_THREAD_H_
|
||||
#define _RUBBERBAND_THREAD_H_
|
||||
#ifndef RUBBERBAND_THREAD_H
|
||||
#define RUBBERBAND_THREAD_H
|
||||
|
||||
#include <string>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_VECTOR_OPS_H_
|
||||
#define _RUBBERBAND_VECTOR_OPS_H_
|
||||
#ifndef RUBBERBAND_VECTOR_OPS_H
|
||||
#define RUBBERBAND_VECTOR_OPS_H
|
||||
|
||||
#ifdef HAVE_IPP
|
||||
#ifndef _MSC_VER
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_VECTOR_OPS_COMPLEX_H_
|
||||
#define _RUBBERBAND_VECTOR_OPS_COMPLEX_H_
|
||||
#ifndef RUBBERBAND_VECTOR_OPS_COMPLEX_H
|
||||
#define RUBBERBAND_VECTOR_OPS_COMPLEX_H
|
||||
|
||||
#include "VectorOps.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -237,7 +237,7 @@ system_get_process_status(int pid)
|
||||
#ifdef _WIN32
|
||||
void system_memorybarrier()
|
||||
{
|
||||
#ifdef __MSVC__
|
||||
#ifdef _MSC_VER
|
||||
MemoryBarrier();
|
||||
#else /* (mingw) */
|
||||
LONG Barrier = 0;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,15 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_SYSUTILS_H_
|
||||
#define _RUBBERBAND_SYSUTILS_H_
|
||||
|
||||
#ifdef __MSVC__
|
||||
# if _MSC_VER < 1800
|
||||
# include "float_cast/float_cast.h"
|
||||
# endif
|
||||
# define R__ __restrict
|
||||
#endif
|
||||
#ifndef RUBBERBAND_SYSUTILS_H
|
||||
#define RUBBERBAND_SYSUTILS_H
|
||||
|
||||
#ifdef __clang__
|
||||
# define R__ __restrict__
|
||||
@@ -39,11 +32,20 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# if _MSC_VER < 1800
|
||||
# include "float_cast/float_cast.h"
|
||||
# endif
|
||||
# ifndef R__
|
||||
# define R__ __restrict
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef R__
|
||||
# define R__
|
||||
#endif
|
||||
|
||||
#if defined(__MSVC__)
|
||||
#if defined(_MSC_VER)
|
||||
# include <malloc.h>
|
||||
# include <process.h>
|
||||
# define alloca _alloca
|
||||
@@ -65,11 +67,11 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__MSVC__) && _MSC_VER < 1700
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1700
|
||||
# define uint8_t unsigned __int8
|
||||
# define uint16_t unsigned __int16
|
||||
# define uint32_t unsigned __int32
|
||||
#elif defined(__MSVC__)
|
||||
#elif defined(_MSC_VER)
|
||||
# define ssize_t long
|
||||
# include <stdint.h>
|
||||
#else
|
||||
@@ -93,9 +95,9 @@ struct timeval { long tv_sec; long tv_usec; };
|
||||
void gettimeofday(struct timeval *p, void *tz);
|
||||
#endif // _WIN32
|
||||
|
||||
#ifdef __MSVC__
|
||||
#ifdef _MSC_VER
|
||||
void usleep(unsigned long);
|
||||
#endif // __MSVC__
|
||||
#endif // _MSC_VER
|
||||
|
||||
inline double mod(double x, double y) { return x - (y * floor(x / y)); }
|
||||
inline float modf(float x, float y) { return x - (y * float(floor(x / y))); }
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -441,7 +441,7 @@ RubberBandVampPlugin::getRemainingFeatures()
|
||||
|
||||
RubberBandVampPlugin::FeatureSet
|
||||
RubberBandVampPlugin::Impl::processOffline(const float *const *inputBuffers,
|
||||
Vamp::RealTime timestamp)
|
||||
Vamp::RealTime /* timestamp */)
|
||||
{
|
||||
if (!m_stretcher) {
|
||||
cerr << "ERROR: RubberBandVampPlugin::processOffline: "
|
||||
@@ -480,7 +480,7 @@ RubberBandVampPlugin::Impl::getRemainingFeaturesOffline()
|
||||
|
||||
RubberBandVampPlugin::FeatureSet
|
||||
RubberBandVampPlugin::Impl::processRealTime(const float *const *inputBuffers,
|
||||
Vamp::RealTime timestamp)
|
||||
Vamp::RealTime /* timestamp */)
|
||||
{
|
||||
// This function is not in any way a real-time function (i.e. it
|
||||
// has no requirement to be RT safe); it simply operates the
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -21,8 +21,8 @@
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#ifndef _RUBBERBAND_VAMP_PLUGIN_H_
|
||||
#define _RUBBERBAND_VAMP_PLUGIN_H_
|
||||
#ifndef RUBBERBAND_VAMP_PLUGIN_H
|
||||
#define RUBBERBAND_VAMP_PLUGIN_H
|
||||
|
||||
#include <vamp-sdk/Plugin.h>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2020 Particular Programs Ltd.
|
||||
Copyright 2007-2021 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
Reference in New Issue
Block a user