Merge from default branch
This commit is contained in:
@@ -1,18 +1,22 @@
|
|||||||
|
|
||||||
|
image:
|
||||||
|
- Visual Studio 2019
|
||||||
|
|
||||||
configuration:
|
configuration:
|
||||||
- Release
|
- Release
|
||||||
|
|
||||||
platform:
|
platform:
|
||||||
- x86
|
|
||||||
- x64
|
- x64
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- cinst wget
|
- cinst wget
|
||||||
- c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w32-setup.exe
|
- cinst meson
|
||||||
- c:\ProgramData\chocolatey\bin\wget.exe http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe
|
- cinst libsndfile
|
||||||
- ps: .\libsndfile-1.0.28-w32-setup.exe /silent /sp- /norestart
|
|
||||||
- ps: .\libsndfile-1.0.28-w64-setup.exe /silent /sp- /norestart
|
|
||||||
|
|
||||||
build_script:
|
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
|
*.rej
|
||||||
cov-int
|
cov-int
|
||||||
*~
|
*~
|
||||||
re:^x64/Debug/
|
x64/Debug/
|
||||||
re:^x64/Release/
|
x64/Release/
|
||||||
re:^Release/
|
Release/
|
||||||
re:^Debug/
|
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.
|
Written by Chris Cannam, chris.cannam@breakfastquay.com.
|
||||||
Published by Particular Programs Ltd t/a Breakfast Quay.
|
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
|
Rubber Band is a library and utility program that permits changing the
|
||||||
tempo and pitch of an audio recording independently of one another.
|
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:
|
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)
|
* [](https://ci.appveyor.com/project/breakfastquay/rubberband) (Windows)
|
||||||
|
|
||||||
|
|
||||||
## Licence
|
## Licence
|
||||||
|
|
||||||
Rubber Band is distributed under the GNU General Public License. See
|
Rubber Band Library is distributed under the GNU General Public
|
||||||
the file COPYING for more information.
|
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
|
If you wish to distribute code using the Rubber Band Library under
|
||||||
terms other than those of the GNU General Public License, you must
|
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
|
Rubber Band includes a .NET interface generously contributed by
|
||||||
Jonathan Gilbert under a BSD-like licence. The files in the
|
Jonathan Gilbert under a BSD-like licence. The files in the
|
||||||
rubberband-dll and rubberband-sharp directories fall under this
|
dotnet/rubberband-dll and dotnet/rubberband-sharp directories fall
|
||||||
licence. If you make use of this interface, please ensure you comply
|
under this licence. If you make use of this interface, please ensure
|
||||||
with the terms of its licence.
|
you comply with the terms of its licence.
|
||||||
|
|
||||||
Rubber Band may link with other libraries or be compiled with other
|
Rubber Band may link with other libraries or be compiled with other
|
||||||
source code, depending on its build configuration. It is your
|
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
|
2. Using the Rubber Band command-line tool
|
||||||
3. Using the Rubber Band Library
|
3. Using the Rubber Band Library
|
||||||
4. Compiling Rubber Band
|
4. Compiling Rubber Band
|
||||||
a. FFT and resampler selection
|
a. Building on Linux
|
||||||
b. Other supported #defines
|
b. Building on macOS
|
||||||
c. Building on Linux
|
c. Building for iOS
|
||||||
d. Building on macOS
|
d. Building on Windows
|
||||||
e. Building for iOS
|
e. Building for Android and Java integration
|
||||||
f. Building on Windows with Visual C++
|
f. FFT and resampler selection
|
||||||
g. Building for Android and Java integration
|
g. Other supported #defines
|
||||||
5. Copyright notes for bundled libraries
|
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
|
The Rubber Band command-line tool builds as bin/rubberband. The basic
|
||||||
incantation is
|
incantation is
|
||||||
|
|
||||||
|
```
|
||||||
$ rubberband -t <timeratio> -p <pitchratio> <infile.wav> <outfile.wav>
|
$ rubberband -t <timeratio> -p <pitchratio> <infile.wav> <outfile.wav>
|
||||||
|
```
|
||||||
|
|
||||||
For example,
|
For example,
|
||||||
|
|
||||||
|
```
|
||||||
$ rubberband -t 1.5 -p 2.0 test.wav output.wav
|
$ rubberband -t 1.5 -p 2.0 test.wav output.wav
|
||||||
|
```
|
||||||
|
|
||||||
stretches the file test.wav to 50% longer than its original duration,
|
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.
|
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.
|
one of the two headers, not both.
|
||||||
|
|
||||||
A .NET interface is also included, contributed by Jonathan Gilbert;
|
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`)
|
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
|
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
|
## 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
|
Rubber Band requires additional library code for FFT calculation and
|
||||||
resampling. Several libraries are supported. The selection is
|
resampling. Several libraries are supported. The selection is
|
||||||
controlled using preprocessor flags at compile time, as detailed in
|
controlled (in Meson) using `-D` options and (in the code itself)
|
||||||
the tables below.
|
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
|
At least one resampler implementation and one FFT implementation must
|
||||||
`HAVE_`; flags that select from the bundled options begin with `USE_`.
|
be enabled. It is technically possible to enable more than one, but
|
||||||
|
it's confusing and not often useful.
|
||||||
You must enable one resampler implementation and one FFT
|
|
||||||
implementation. Do not enable more than one of either unless you know
|
|
||||||
what you're doing.
|
|
||||||
|
|
||||||
If you are building this software using one of the bundled library
|
If you are building this software using one of the bundled library
|
||||||
options (Speex or KissFFT), please be sure to review the terms for
|
options (Speex or KissFFT), please be sure to review the terms for
|
||||||
@@ -175,44 +362,42 @@ applicable.
|
|||||||
#### FFT libraries supported
|
#### 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
|
FFTW3 -Dfft=fftw -DHAVE_FFTW3 GPL.
|
||||||
Rubber Band commercial licence. Define
|
|
||||||
USE_IPP_STATIC as well to build with static
|
|
||||||
IPP libraries.
|
|
||||||
|
|
||||||
KissFFT -DUSE_KISSFFT Bundled, can be distributed with either the
|
Intel IPP -Dfft=ipp -DHAVE_IPP Proprietary, can only be used with
|
||||||
Rubber Band GPL or commercial licence.
|
Rubber Band commercial licence.
|
||||||
Single-precision. Slower than the above
|
|
||||||
options.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Resampler libraries supported
|
#### 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.
|
libsamplerate -DHAVE_LIBSAMPLERATE
|
||||||
This is the preferred choice in almost
|
-Dresampler=libsamplerate Best choice in most cases.
|
||||||
all cases.
|
|
||||||
|
|
||||||
libresample -DHAVE_LIBRESAMPLE LGPL.
|
Speex -DUSE_SPEEX
|
||||||
|
-Dresampler=speex Bundled, can be distributed with
|
||||||
Speex -DUSE_SPEEX Bundled, can be distributed with either the
|
either the Rubber Band GPL or
|
||||||
Rubber Band GPL or commercial licence.
|
commercial licence.
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4b. Other supported #defines
|
### 4g. Other supported #defines
|
||||||
|
|
||||||
Other symbols you may define at compile time are as follows. (Usually
|
Other known preprocessor symbols are as follows. (Usually the supplied
|
||||||
the supplied build files will handle these for you.)
|
build files will handle these for you.)
|
||||||
|
|
||||||
-DLACK_BAD_ALLOC
|
-DLACK_BAD_ALLOC
|
||||||
Define on systems lacking std::bad_alloc in the C++ library.
|
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.
|
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
|
## 5. Copyright notes for bundled libraries
|
||||||
|
|
||||||
### 5a. Speex
|
### 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>
|
<ProjectGuid>{32C11C5C-3D27-4E57-B72C-161A48AAA95E}</ProjectGuid>
|
||||||
<RootNamespace>rubberbanddll</RootNamespace>
|
<RootNamespace>rubberbanddll</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
@@ -91,7 +92,7 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@@ -109,7 +110,7 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@@ -129,7 +130,7 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@@ -151,7 +152,7 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;RUBBERBANDDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(SolutionDir)\..\rubberband;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@@ -180,4 +181,4 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -22,23 +22,24 @@
|
|||||||
<ProjectGuid>{020CEB11-EF4E-400E-971D-A35DB69D7CF9}</ProjectGuid>
|
<ProjectGuid>{020CEB11-EF4E-400E-971D-A35DB69D7CF9}</ProjectGuid>
|
||||||
<RootNamespace>rubberband-library</RootNamespace>
|
<RootNamespace>rubberband-library</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@@ -63,6 +64,7 @@
|
|||||||
<OutDir>Debug\</OutDir>
|
<OutDir>Debug\</OutDir>
|
||||||
<IntDir>Debug\</IntDir>
|
<IntDir>Debug\</IntDir>
|
||||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
|
<SourcePath>$(SourcePath)</SourcePath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
@@ -74,7 +76,7 @@
|
|||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<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>
|
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
@@ -88,7 +90,7 @@
|
|||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<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>
|
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
@@ -106,7 +108,7 @@
|
|||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<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>
|
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
@@ -124,7 +126,7 @@
|
|||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<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>
|
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
@@ -137,59 +139,59 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="rubberband\rubberband-c.h" />
|
<ClInclude Include="..\rubberband\rubberband-c.h" />
|
||||||
<ClInclude Include="rubberband\RubberBandStretcher.h" />
|
<ClInclude Include="..\rubberband\RubberBandStretcher.h" />
|
||||||
<ClInclude Include="src\audiocurves\CompoundAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\CompoundAudioCurve.h" />
|
||||||
<ClInclude Include="src\audiocurves\ConstantAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\ConstantAudioCurve.h" />
|
||||||
<ClInclude Include="src\audiocurves\HighFrequencyAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\HighFrequencyAudioCurve.h" />
|
||||||
<ClInclude Include="src\audiocurves\PercussiveAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\PercussiveAudioCurve.h" />
|
||||||
<ClInclude Include="src\audiocurves\SilentAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\SilentAudioCurve.h" />
|
||||||
<ClInclude Include="src\audiocurves\SpectralDifferenceAudioCurve.h" />
|
<ClInclude Include="..\src\audiocurves\SpectralDifferenceAudioCurve.h" />
|
||||||
<ClInclude Include="src\base\Profiler.h" />
|
<ClInclude Include="..\src\base\Profiler.h" />
|
||||||
<ClInclude Include="src\base\RingBuffer.h" />
|
<ClInclude Include="..\src\base\RingBuffer.h" />
|
||||||
<ClInclude Include="src\base\Scavenger.h" />
|
<ClInclude Include="..\src\base\Scavenger.h" />
|
||||||
<ClInclude Include="src\dsp\AudioCurveCalculator.h" />
|
<ClInclude Include="..\src\dsp\AudioCurveCalculator.h" />
|
||||||
<ClInclude Include="src\dsp\FFT.h" />
|
<ClInclude Include="..\src\dsp\FFT.h" />
|
||||||
<ClInclude Include="src\dsp\MovingMedian.h" />
|
<ClInclude Include="..\src\dsp\MovingMedian.h" />
|
||||||
<ClInclude Include="src\dsp\Resampler.h" />
|
<ClInclude Include="..\src\dsp\Resampler.h" />
|
||||||
<ClInclude Include="src\dsp\SampleFilter.h" />
|
<ClInclude Include="..\src\dsp\SampleFilter.h" />
|
||||||
<ClInclude Include="src\dsp\SincWindow.h" />
|
<ClInclude Include="..\src\dsp\SincWindow.h" />
|
||||||
<ClInclude Include="src\dsp\Window.h" />
|
<ClInclude Include="..\src\dsp\Window.h" />
|
||||||
<ClInclude Include="src\float_cast\float_cast.h" />
|
<ClInclude Include="..\src\float_cast\float_cast.h" />
|
||||||
<ClInclude Include="src\speex\speex_resampler.h" />
|
<ClInclude Include="..\src\speex\speex_resampler.h" />
|
||||||
<ClInclude Include="src\StretchCalculator.h" />
|
<ClInclude Include="..\src\StretchCalculator.h" />
|
||||||
<ClInclude Include="src\StretcherChannelData.h" />
|
<ClInclude Include="..\src\StretcherChannelData.h" />
|
||||||
<ClInclude Include="src\StretcherImpl.h" />
|
<ClInclude Include="..\src\StretcherImpl.h" />
|
||||||
<ClInclude Include="src\system\Allocators.h" />
|
<ClInclude Include="..\src\system\Allocators.h" />
|
||||||
<ClInclude Include="src\system\sysutils.h" />
|
<ClInclude Include="..\src\system\sysutils.h" />
|
||||||
<ClInclude Include="src\system\Thread.h" />
|
<ClInclude Include="..\src\system\Thread.h" />
|
||||||
<ClInclude Include="src\system\VectorOps.h" />
|
<ClInclude Include="..\src\system\VectorOps.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\audiocurves\CompoundAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\CompoundAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\audiocurves\ConstantAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\ConstantAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\audiocurves\PercussiveAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\PercussiveAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\audiocurves\SilentAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\SilentAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
<ClCompile Include="..\src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\base\Profiler.cpp" />
|
<ClCompile Include="..\src\base\Profiler.cpp" />
|
||||||
<ClCompile Include="src\dsp\AudioCurveCalculator.cpp" />
|
<ClCompile Include="..\src\dsp\AudioCurveCalculator.cpp" />
|
||||||
<ClCompile Include="src\dsp\FFT.cpp" />
|
<ClCompile Include="..\src\dsp\FFT.cpp" />
|
||||||
<ClCompile Include="src\dsp\Resampler.cpp" />
|
<ClCompile Include="..\src\dsp\Resampler.cpp" />
|
||||||
<ClCompile Include="src\kissfft\kiss_fft.c" />
|
<ClCompile Include="..\src\kissfft\kiss_fft.c" />
|
||||||
<ClCompile Include="src\kissfft\kiss_fftr.c" />
|
<ClCompile Include="..\src\kissfft\kiss_fftr.c" />
|
||||||
<ClCompile Include="src\rubberband-c.cpp" />
|
<ClCompile Include="..\src\rubberband-c.cpp" />
|
||||||
<ClCompile Include="src\RubberBandStretcher.cpp" />
|
<ClCompile Include="..\src\RubberBandStretcher.cpp" />
|
||||||
<ClCompile Include="src\speex\resample.c" />
|
<ClCompile Include="..\src\speex\resample.c" />
|
||||||
<ClCompile Include="src\StretchCalculator.cpp" />
|
<ClCompile Include="..\src\StretchCalculator.cpp" />
|
||||||
<ClCompile Include="src\StretcherChannelData.cpp" />
|
<ClCompile Include="..\src\StretcherChannelData.cpp" />
|
||||||
<ClCompile Include="src\StretcherImpl.cpp" />
|
<ClCompile Include="..\src\StretcherImpl.cpp" />
|
||||||
<ClCompile Include="src\StretcherProcess.cpp" />
|
<ClCompile Include="..\src\StretcherProcess.cpp" />
|
||||||
<ClCompile Include="src\system\Allocators.cpp" />
|
<ClCompile Include="..\src\system\Allocators.cpp" />
|
||||||
<ClCompile Include="src\system\sysutils.cpp" />
|
<ClCompile Include="..\src\system\sysutils.cpp" />
|
||||||
<ClCompile Include="src\system\Thread.cpp" />
|
<ClCompile Include="..\src\system\Thread.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,15 +1,10 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 16.0.31005.135
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-library", "rubberband-library.vcxproj", "{020CEB11-EF4E-400E-971D-A35DB69D7CF9}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-library", "rubberband-library.vcxproj", "{020CEB11-EF4E-400E-971D-A35DB69D7CF9}"
|
||||||
EndProject
|
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}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rubberband-dll", "rubberband-dll.vcxproj", "{32C11C5C-3D27-4E57-B72C-161A48AAA95E}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9}
|
{020CEB11-EF4E-400E-971D-A35DB69D7CF9} = {020CEB11-EF4E-400E-971D-A35DB69D7CF9}
|
||||||
@@ -30,32 +25,26 @@ Global
|
|||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
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.ActiveCfg = Debug|x64
|
||||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x64.Build.0 = 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.ActiveCfg = Debug|Win32
|
||||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Debug|x86.Build.0 = 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.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.ActiveCfg = Release|x64
|
||||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x64.Build.0 = 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.ActiveCfg = Release|Win32
|
||||||
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.Build.0 = Release|Win32
|
{020CEB11-EF4E-400E-971D-A35DB69D7CF9}.Release|x86.Build.0 = Release|Win32
|
||||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{06838307-FEAA-4DB0-8E08-AF19698E9C40}.Debug|x64.ActiveCfg = Debug|x64
|
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|Any CPU.Build.0 = 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|x64.ActiveCfg = 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|x64.Build.0 = Debug|x64
|
||||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Debug|x86.ActiveCfg = Debug|Win32
|
{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}.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.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.ActiveCfg = Release|x64
|
||||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.Build.0 = Release|x64
|
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x64.Build.0 = Release|x64
|
||||||
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x86.ActiveCfg = Release|Win32
|
{32C11C5C-3D27-4E57-B72C-161A48AAA95E}.Release|x86.ActiveCfg = Release|Win32
|
||||||
@@ -76,4 +65,7 @@ Global
|
|||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {3CFE825B-BD44-4909-B002-AFE8DA45D614}
|
||||||
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_PITCH_SHIFTER_H_
|
#ifndef RUBBERBAND_PITCH_SHIFTER_H
|
||||||
#define _RUBBERBAND_PITCH_SHIFTER_H_
|
#define RUBBERBAND_PITCH_SHIFTER_H
|
||||||
|
|
||||||
#include <ladspa.h>
|
#include <ladspa.h>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include "system/sysutils.h"
|
#include "system/sysutils.h"
|
||||||
|
|
||||||
#ifdef __MSVC__
|
#ifdef _MSC_VER
|
||||||
#include "getopt/getopt.h"
|
#include "getopt/getopt.h"
|
||||||
#else
|
#else
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@@ -52,8 +52,9 @@ using namespace RubberBand;
|
|||||||
using RubberBand::gettimeofday;
|
using RubberBand::gettimeofday;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __MSVC__
|
#ifdef _MSC_VER
|
||||||
using RubberBand::usleep;
|
using RubberBand::usleep;
|
||||||
|
#define strdup _strdup
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
double tempo_convert(const char *str)
|
double tempo_convert(const char *str)
|
||||||
@@ -104,10 +105,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
bool haveRatio = false;
|
bool haveRatio = false;
|
||||||
|
|
||||||
std::string timeMapFile;
|
std::string mapfile;
|
||||||
std::string freqMapFile;
|
|
||||||
std::string pitchMapFile;
|
|
||||||
bool freqOrPitchMapSpecified = false;
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NoTransients,
|
NoTransients,
|
||||||
@@ -121,8 +119,6 @@ int main(int argc, char **argv)
|
|||||||
SoftDetector
|
SoftDetector
|
||||||
} detector = CompoundDetector;
|
} detector = CompoundDetector;
|
||||||
|
|
||||||
bool ignoreClipping = false;
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int optionIndex = 0;
|
int optionIndex = 0;
|
||||||
|
|
||||||
@@ -155,9 +151,6 @@ int main(int argc, char **argv)
|
|||||||
{ "threads", 0, 0, '@' },
|
{ "threads", 0, 0, '@' },
|
||||||
{ "quiet", 0, 0, 'q' },
|
{ "quiet", 0, 0, 'q' },
|
||||||
{ "timemap", 1, 0, 'M' },
|
{ "timemap", 1, 0, 'M' },
|
||||||
{ "freqmap", 1, 0, 'Q' },
|
|
||||||
{ "pitchmap", 1, 0, 'C' },
|
|
||||||
{ "ignore-clipping", 0, 0, 'i' },
|
|
||||||
{ 0, 0, 0, 0 }
|
{ 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -178,7 +171,7 @@ int main(int argc, char **argv)
|
|||||||
case 'R': realtime = true; break;
|
case 'R': realtime = true; break;
|
||||||
case 'L': precise = false; break;
|
case 'L': precise = false; break;
|
||||||
case 'P': precise = true; break;
|
case 'P': precise = true; break;
|
||||||
case 'F': formant = true; break;
|
case 'F': formant = true; break;
|
||||||
case '0': threading = 1; break;
|
case '0': threading = 1; break;
|
||||||
case '@': threading = 2; break;
|
case '@': threading = 2; break;
|
||||||
case '1': transients = NoTransients; crispchanged = true; break;
|
case '1': transients = NoTransients; crispchanged = true; break;
|
||||||
@@ -193,10 +186,7 @@ int main(int argc, char **argv)
|
|||||||
case '%': hqpitch = true; break;
|
case '%': hqpitch = true; break;
|
||||||
case 'c': crispness = atoi(optarg); break;
|
case 'c': crispness = atoi(optarg); break;
|
||||||
case 'q': quiet = true; break;
|
case 'q': quiet = true; break;
|
||||||
case 'M': timeMapFile = optarg; break;
|
case 'M': mapfile = optarg; break;
|
||||||
case 'Q': freqMapFile = optarg; freqOrPitchMapSpecified = true; break;
|
|
||||||
case 'C': pitchMapFile = optarg; freqOrPitchMapSpecified = true; break;
|
|
||||||
case 'i': ignoreClipping = true; break;
|
|
||||||
default: help = true; break;
|
default: help = true; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,22 +196,13 @@ int main(int argc, char **argv)
|
|||||||
return 0;
|
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) {
|
if (help || !haveRatio || optind + 2 != argc) {
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
cerr << "Rubber Band" << endl;
|
cerr << "Rubber Band" << endl;
|
||||||
cerr << "An audio time-stretching and pitch-shifting library and utility program." << 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 << endl;
|
||||||
cerr << " Usage: " << argv[0] << " [options] <infile.wav> <outfile.wav>" << endl;
|
cerr << " Usage: " << argv[0] << " [options] <infile.wav> <outfile.wav>" << endl;
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
cerr << "You must specify at least one of the following time and pitch ratio options." << endl;
|
cerr << "You must specify at least one of the following time and pitch ratio options." << endl;
|
||||||
cerr << 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 << " -p<X>, --pitch <X> Raise pitch by X semitones, or" << endl;
|
||||||
cerr << " -f<X>, --frequency <X> Change frequency by multiple X" << endl;
|
cerr << " -f<X>, --frequency <X> Change frequency by multiple X" << endl;
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
cerr << "The following options provide ways of making the time and frequency ratios" << endl;
|
cerr << " -M<F>, --timemap <F> Use file F as the source for key frame map" << endl;
|
||||||
cerr << "change during the audio." << endl;
|
|
||||||
cerr << 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 << endl;
|
||||||
cerr << " A time map (or key-frame map) file contains a series of lines, each with two" << endl;
|
cerr << "The following options provide a simple way to adjust the sound. See below" << 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 << "for more details." << endl;
|
cerr << "for more details." << endl;
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
cerr << " -c<N>, --crisp <N> Crispness (N = 0,1,2,3,4,5,6); default 5 (see below)" << 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 << endl;
|
||||||
cerr << "The remaining options fine-tune the processing mode and stretch algorithm." << 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 << "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 << "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 << endl;
|
||||||
cerr << " -L, --loose Relax timing in hope of better transient preservation" << 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;
|
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 << " --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 << " --centre-focus Preserve focus of centre material in stereo" << endl;
|
||||||
cerr << " (at a cost in width and individual channel quality)" << 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 << endl;
|
||||||
cerr << " -d<N>, --debug <N> Select debug level (N = 0,1,2,3); default 0, full 3" << 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;
|
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 5 default processing options" << endl;
|
||||||
cerr << " -c 6 equivalent to --no-lamination --window-short (may be good for drums)" << endl;
|
cerr << " -c 6 equivalent to --no-lamination --window-short (may be good for drums)" << endl;
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ratio <= 0.0) {
|
if (ratio <= 0.0) {
|
||||||
@@ -321,12 +278,6 @@ int main(int argc, char **argv)
|
|||||||
cerr << " provided -- crispness will override these other options" << endl;
|
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) {
|
switch (crispness) {
|
||||||
case -1: crispness = 5; break;
|
case -1: crispness = 5; break;
|
||||||
case 0: detector = CompoundDetector; transients = NoTransients; lamination = false; longwin = true; shortwin = false; 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;
|
cerr << ")" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<size_t, size_t> timeMap;
|
std::map<size_t, size_t> mapping;
|
||||||
if (timeMapFile != "") {
|
|
||||||
std::ifstream ifile(timeMapFile.c_str());
|
if (mapfile != "") {
|
||||||
|
std::ifstream ifile(mapfile.c_str());
|
||||||
if (!ifile.is_open()) {
|
if (!ifile.is_open()) {
|
||||||
cerr << "ERROR: Failed to open time map file \""
|
cerr << "ERROR: Failed to open time map file \"" << mapfile << "\""
|
||||||
<< timeMapFile << "\"" << endl;
|
<< endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
std::string line;
|
std::string line;
|
||||||
int lineno = 0;
|
int lineno = 0;
|
||||||
while (!ifile.eof()) {
|
while (!ifile.eof()) {
|
||||||
std::getline(ifile, line);
|
std::getline(ifile, line);
|
||||||
while (line.length() > 0 && line[0] == ' ') {
|
while (line.length() > 0 && line[0] == ' ') line = line.substr(1);
|
||||||
line = line.substr(1);
|
|
||||||
}
|
|
||||||
if (line == "") {
|
if (line == "") {
|
||||||
++lineno;
|
++lineno;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
std::string::size_type i = line.find_first_of(" ");
|
std::string::size_type i = line.find_first_of(" ");
|
||||||
if (i == std::string::npos) {
|
if (i == std::string::npos) {
|
||||||
cerr << "ERROR: Time map file \"" << timeMapFile
|
cerr << "ERROR: Time map file \"" << mapfile
|
||||||
<< "\" is malformed at line " << lineno << endl;
|
<< "\" is malformed at line " << lineno << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
size_t source = atoi(line.substr(0, i).c_str());
|
size_t source = atoi(line.substr(0, i).c_str());
|
||||||
while (i < line.length() && line[i] == ' ') ++i;
|
while (i < line.length() && line[i] == ' ') ++i;
|
||||||
size_t target = atoi(line.substr(i).c_str());
|
size_t target = atoi(line.substr(i).c_str());
|
||||||
timeMap[source] = target;
|
mapping[source] = target;
|
||||||
if (debug > 0) {
|
if (debug > 0) {
|
||||||
cerr << "adding mapping from " << source << " to " << target << endl;
|
cerr << "adding mapping from " << source << " to " << target << endl;
|
||||||
}
|
}
|
||||||
@@ -389,57 +339,7 @@ int main(int argc, char **argv)
|
|||||||
ifile.close();
|
ifile.close();
|
||||||
|
|
||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
cerr << "Read " << timeMap.size() << " line(s) from time map file" << endl;
|
cerr << "Read " << mapping.size() << " line(s) from 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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -455,9 +355,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
sndfile = sf_open(fileName, SFM_READ, &sfinfo);
|
sndfile = sf_open(fileName, SFM_READ, &sfinfo);
|
||||||
if (!sndfile) {
|
if (!sndfile) {
|
||||||
cerr << "ERROR: Failed to open input file \"" << fileName << "\": "
|
cerr << "ERROR: Failed to open input file \"" << fileName << "\": "
|
||||||
<< sf_strerror(sndfile) << endl;
|
<< sf_strerror(sndfile) << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sfinfo.samplerate == 0) {
|
if (sfinfo.samplerate == 0) {
|
||||||
@@ -483,9 +383,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
sndfileOut = sf_open(fileNameOut, SFM_WRITE, &sfinfoOut) ;
|
sndfileOut = sf_open(fileNameOut, SFM_WRITE, &sfinfoOut) ;
|
||||||
if (!sndfileOut) {
|
if (!sndfileOut) {
|
||||||
cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: "
|
cerr << "ERROR: Failed to open output file \"" << fileNameOut << "\" for writing: "
|
||||||
<< sf_strerror(sndfileOut) << endl;
|
<< sf_strerror(sndfileOut) << endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ibs = 1024;
|
int ibs = 1024;
|
||||||
@@ -502,10 +402,6 @@ int main(int argc, char **argv)
|
|||||||
if (hqpitch) options |= RubberBandStretcher::OptionPitchHighQuality;
|
if (hqpitch) options |= RubberBandStretcher::OptionPitchHighQuality;
|
||||||
if (together) options |= RubberBandStretcher::OptionChannelsTogether;
|
if (together) options |= RubberBandStretcher::OptionChannelsTogether;
|
||||||
|
|
||||||
if (freqOrPitchMapSpecified) {
|
|
||||||
options |= RubberBandStretcher::OptionPitchHighConsistency;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (threading) {
|
switch (threading) {
|
||||||
case 0:
|
case 0:
|
||||||
options |= RubberBandStretcher::OptionThreadingAuto;
|
options |= RubberBandStretcher::OptionThreadingAuto;
|
||||||
@@ -543,134 +439,46 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pitchshift != 0.0) {
|
if (pitchshift != 0.0) {
|
||||||
frequencyshift *= pow(2.0, pitchshift / 12.0);
|
frequencyshift *= pow(2.0, pitchshift / 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
cerr << "Using time ratio " << ratio;
|
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
|
#ifdef _WIN32
|
||||||
RubberBand::
|
RubberBand::
|
||||||
#endif
|
#endif
|
||||||
timeval tv;
|
timeval tv;
|
||||||
(void)gettimeofday(&tv, 0);
|
(void)gettimeofday(&tv, 0);
|
||||||
|
|
||||||
RubberBandStretcher::setDefaultDebugLevel(debug);
|
RubberBandStretcher::setDefaultDebugLevel(debug);
|
||||||
|
|
||||||
size_t countIn = 0, countOut = 0;
|
RubberBandStretcher ts(sfinfo.samplerate, channels, options,
|
||||||
|
ratio, frequencyshift);
|
||||||
|
|
||||||
float gain = 1.f;
|
ts.setExpectedInputDuration(sfinfo.frames);
|
||||||
bool successful = false;
|
|
||||||
|
|
||||||
while (!successful) { // we may have to repeat with a modified
|
float *fbuf = new float[channels * ibs];
|
||||||
// gain, if clipping occurs
|
float **ibuf = new float *[channels];
|
||||||
successful = true;
|
for (size_t i = 0; i < channels; ++i) ibuf[i] = new float[ibs];
|
||||||
|
|
||||||
RubberBandStretcher ts(sfinfo.samplerate, channels, options,
|
int frame = 0;
|
||||||
ratio, frequencyshift);
|
int percent = 0;
|
||||||
ts.setExpectedInputDuration(sfinfo.frames);
|
|
||||||
|
|
||||||
float *fbuf = new float[channels * ibs];
|
sf_seek(sndfile, 0, SEEK_SET);
|
||||||
float **ibuf = new float *[channels];
|
|
||||||
for (size_t i = 0; i < channels; ++i) {
|
if (!realtime) {
|
||||||
ibuf[i] = new float[ibs];
|
|
||||||
|
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) {
|
while (frame < sfinfo.frames) {
|
||||||
|
|
||||||
int count = -1;
|
int count = -1;
|
||||||
int thisBlockSize = ibs;
|
|
||||||
|
|
||||||
while (freqMapItr != freqMap.end()) {
|
if ((count = sf_readf_float(sndfile, fbuf, ibs)) <= 0) break;
|
||||||
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, thisBlockSize)) < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
countIn += count;
|
|
||||||
|
|
||||||
for (size_t c = 0; c < channels; ++c) {
|
for (size_t c = 0; c < channels; ++c) {
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
float value = fbuf[i * channels + c];
|
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) {
|
ts.study(ibuf, count, final);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
int p = int((double(frame) * 100.0) / sfinfo.frames);
|
int p = int((double(frame) * 100.0) / sfinfo.frames);
|
||||||
if (p > percent || frame == 0) {
|
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) {
|
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) {
|
frame = 0;
|
||||||
cerr << "(completing) available = " << avail << endl;
|
percent = 0;
|
||||||
}
|
|
||||||
|
if (!mapping.empty()) {
|
||||||
if (avail > 0) {
|
ts.setKeyFrameMap(mapping);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(sndfile);
|
||||||
sf_close(sndfileOut);
|
sf_close(sndfileOut);
|
||||||
|
|
||||||
@@ -810,7 +638,7 @@ int main(int argc, char **argv)
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
RubberBand::
|
RubberBand::
|
||||||
#endif
|
#endif
|
||||||
timeval etv;
|
timeval etv;
|
||||||
(void)gettimeofday(&etv, 0);
|
(void)gettimeofday(&etv, 0);
|
||||||
|
|
||||||
etv.tv_sec -= tv.tv_sec;
|
etv.tv_sec -= tv.tv_sec;
|
||||||
@@ -821,7 +649,10 @@ int main(int argc, char **argv)
|
|||||||
etv.tv_usec -= tv.tv_usec;
|
etv.tv_usec -= tv.tv_usec;
|
||||||
|
|
||||||
double sec = double(etv.tv_sec) + (double(etv.tv_usec) / 1000000.0);
|
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();
|
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++
|
CXX := clang++
|
||||||
CC := clang
|
CC := clang
|
||||||
OPTFLAGS := -ffast-math -freciprocal-math -O3 -ftree-vectorize
|
|
||||||
|
OPTFLAGS := -DNDEBUG -ffast-math -freciprocal-math -O3 -ftree-vectorize
|
||||||
|
|
||||||
# For the device
|
# 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
|
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
|
AR := ar
|
||||||
LIPO := lipo
|
LIPO := lipo
|
||||||
MKDIR := mkdir
|
MKDIR := mkdir -p
|
||||||
|
|
||||||
LIBNAME := librubberband
|
LIBNAME := librubberband
|
||||||
|
|
||||||
@@ -28,10 +29,8 @@ STATIC_TARGET_DEV := lib/$(LIBNAME).dev.a
|
|||||||
STATIC_TARGET_SIM := lib/$(LIBNAME).sim.a
|
STATIC_TARGET_SIM := lib/$(LIBNAME).sim.a
|
||||||
|
|
||||||
default: lib $(STATIC_TARGET)
|
default: lib $(STATIC_TARGET)
|
||||||
|
|
||||||
all: lib $(STATIC_TARGET)
|
all: lib $(STATIC_TARGET)
|
||||||
|
static: lib $(STATIC_TARGET)
|
||||||
static: $(STATIC_TARGET)
|
|
||||||
|
|
||||||
PUBLIC_INCLUDES := \
|
PUBLIC_INCLUDES := \
|
||||||
rubberband/rubberband-c.h \
|
rubberband/rubberband-c.h \
|
||||||
@@ -137,9 +136,9 @@ distclean: clean
|
|||||||
rm -f $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM)
|
rm -f $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM)
|
||||||
|
|
||||||
depend:
|
depend:
|
||||||
touch Makefile.dev_depends Makefile.sim_depends
|
touch otherbuilds/Makefile.dev_depends otherbuilds/Makefile.sim_depends
|
||||||
makedepend -f Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES)
|
makedepend -f otherbuilds/Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES)
|
||||||
makedepend -f Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES)
|
makedepend -f otherbuilds/Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES)
|
||||||
|
|
||||||
-include Makefile.dev_depends
|
-include otherbuilds/Makefile.dev_depends
|
||||||
-include Makefile.sim_depends
|
-include otherbuilds/Makefile.sim_depends
|
||||||
@@ -1,75 +1,25 @@
|
|||||||
|
|
||||||
PREFIX := @prefix@
|
CXX := g++
|
||||||
CXX := @CXX@
|
CC := gcc
|
||||||
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@
|
|
||||||
|
|
||||||
JNI_CXXFLAGS := -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
|
OPTFLAGS := -DNDEBUG -ffast-math -O3 -ftree-vectorize
|
||||||
JAVAC := $(JAVA_HOME)/bin/javac
|
|
||||||
JAR := $(JAVA_HOME)/bin/jar
|
|
||||||
|
|
||||||
LIBRARY_LIBS := @SRC_LIBS@ @FFTW_LIBS@
|
ARCHFLAGS :=
|
||||||
PROGRAM_LIBS := @SNDFILE_LIBS@ $(LIBRARY_LIBS)
|
|
||||||
VAMP_PLUGIN_LIBS := @Vamp_LIBS@ $(LIBRARY_LIBS)
|
|
||||||
LADSPA_PLUGIN_LIBS := $(LIBRARY_LIBS)
|
|
||||||
|
|
||||||
MKDIR := mkdir
|
CXXFLAGS := -std=c++98 $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -DHAVE_LIBSAMPLERATE -DUSE_KISSFFT -DNO_THREAD_CHECKS -DUSE_PTHREADS -DNO_TIMING -DHAVE_POSIX_MEMALIGN -DNDEBUG
|
||||||
AR := ar
|
|
||||||
|
|
||||||
INSTALL_BINDIR := $(PREFIX)/bin
|
CFLAGS := $(ARCHFLAGS) $(OPTFLAGS)
|
||||||
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
|
|
||||||
|
|
||||||
LIBNAME := librubberband
|
AR := ar
|
||||||
JNINAME := librubberband-jni
|
MKDIR := mkdir -p
|
||||||
JARNAME := rubberband.jar
|
|
||||||
|
|
||||||
DYNAMIC_EXTENSION := .so
|
LIBNAME := librubberband
|
||||||
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
|
|
||||||
|
|
||||||
PROGRAM_TARGET := bin/rubberband
|
STATIC_TARGET := lib/$(LIBNAME).a
|
||||||
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)
|
|
||||||
|
|
||||||
ALL_TARGETS := lib $(STATIC_TARGET) $(DYNAMIC_TARGET)
|
default: lib $(STATIC_TARGET)
|
||||||
|
all: lib $(STATIC_TARGET)
|
||||||
ifeq ($(WITH_PROGRAMS), yes)
|
static: lib $(STATIC_TARGET)
|
||||||
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)
|
|
||||||
|
|
||||||
PUBLIC_INCLUDES := \
|
PUBLIC_INCLUDES := \
|
||||||
rubberband/rubberband-c.h \
|
rubberband/rubberband-c.h \
|
||||||
@@ -119,109 +69,27 @@ LIBRARY_SOURCES := \
|
|||||||
src/system/sysutils.cpp \
|
src/system/sysutils.cpp \
|
||||||
src/system/Thread.cpp \
|
src/system/Thread.cpp \
|
||||||
src/StretcherChannelData.cpp \
|
src/StretcherChannelData.cpp \
|
||||||
src/StretcherImpl.cpp
|
src/StretcherImpl.cpp \
|
||||||
|
src/kissfft/kiss_fft.c \
|
||||||
JNI_SOURCE := \
|
src/kissfft/kiss_fftr.c
|
||||||
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
|
|
||||||
|
|
||||||
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
|
LIBRARY_OBJECTS := $(LIBRARY_SOURCES:.cpp=.o)
|
||||||
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.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)
|
$(STATIC_TARGET): $(LIBRARY_OBJECTS)
|
||||||
$(AR) rsc $@ $^
|
$(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:
|
lib:
|
||||||
$(MKDIR) $@
|
$(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:
|
clean:
|
||||||
rm -f $(LIBRARY_OBJECTS) $(JNI_OBJECT) $(JAVA_OBJECT) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
|
rm -f $(LIBRARY_OBJECTS)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(JNI_TARGET) $(JAR_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
rm -f $(STATIC_TARGET)
|
||||||
|
|
||||||
depend:
|
depend:
|
||||||
makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
makedepend -f otherbuilds/Makefile.linux -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||||
|
|
||||||
|
|
||||||
# DO NOT DELETE
|
# 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++
|
CXX := clang++ -stdlib=libc++
|
||||||
CC := clang
|
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
|
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)
|
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
|
AR := ar
|
||||||
|
MKDIR := mkdir
|
||||||
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
|
|
||||||
|
|
||||||
LIBNAME := librubberband
|
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
|
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)
|
static: $(STATIC_TARGET)
|
||||||
dynamic: $(DYNAMIC_TARGET)
|
|
||||||
library: $(STATIC_TARGET) $(DYNAMIC_TARGET)
|
|
||||||
program: $(PROGRAM_TARGET)
|
|
||||||
vamp: $(VAMP_TARGET)
|
|
||||||
ladspa: $(LADSPA_TARGET)
|
|
||||||
|
|
||||||
PUBLIC_INCLUDES := \
|
PUBLIC_INCLUDES := \
|
||||||
rubberband/rubberband-c.h \
|
rubberband/rubberband-c.h \
|
||||||
@@ -110,83 +81,24 @@ LIBRARY_INCLUDES := $(LIBRARY_INCLUDES) \
|
|||||||
LIBRARY_SOURCES := $(LIBRARY_SOURCES) \
|
LIBRARY_SOURCES := $(LIBRARY_SOURCES) \
|
||||||
src/speex/resample.c
|
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_SOURCES:.cpp=.o)
|
||||||
LIBRARY_OBJECTS := $(LIBRARY_OBJECTS:.c=.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)
|
$(STATIC_TARGET): $(LIBRARY_OBJECTS)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
$(AR) rsc $@ $^
|
$(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:
|
lib:
|
||||||
$(MKDIR) $@
|
$(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:
|
clean:
|
||||||
rm -f $(LIBRARY_OBJECTS) $(PROGRAM_OBJECTS) $(LADSPA_OBJECTS) $(VAMP_OBJECTS)
|
rm -f $(LIBRARY_OBJECTS)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
rm -f $(STATIC_TARGET)
|
||||||
|
|
||||||
depend:
|
depend:
|
||||||
makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
makedepend -f otherbuilds/Makefile.macos-universal -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||||
|
|
||||||
|
|
||||||
# DO NOT DELETE
|
# 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>
|
</ProjectConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{06838307-FEAA-4DB0-8E08-AF19698E9C40}</ProjectGuid>
|
<ProjectGuid>{020CEB11-EF4E-400E-971D-A35DB69D7CF9}</ProjectGuid>
|
||||||
<RootNamespace>rubberband-program</RootNamespace>
|
<RootNamespace>rubberband-library</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@@ -62,67 +63,43 @@
|
|||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<OutDir>Debug\</OutDir>
|
<OutDir>Debug\</OutDir>
|
||||||
<IntDir>Debug\</IntDir>
|
<IntDir>Debug\</IntDir>
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
<SourcePath>$(SourcePath)</SourcePath>
|
||||||
<CodeAnalysisRules />
|
|
||||||
<CodeAnalysisRuleAssemblies />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LinkIncremental>true</LinkIncremental>
|
<EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules />
|
|
||||||
<CodeAnalysisRuleAssemblies />
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>Release\</OutDir>
|
<OutDir>Release\</OutDir>
|
||||||
<IntDir>Release\</IntDir>
|
<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>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
<PrecompiledHeader />
|
<PrecompiledHeader />
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level2</WarningLevel>
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
|
<ShowIncludes>false</ShowIncludes>
|
||||||
</ClCompile>
|
</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>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>__MSVC__;WIN32;_DEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;USE_SPEEX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
<PrecompiledHeader>
|
<PrecompiledHeader>
|
||||||
</PrecompiledHeader>
|
</PrecompiledHeader>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level2</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<ShowIncludes>false</ShowIncludes>
|
||||||
</ClCompile>
|
</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>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@@ -131,23 +108,16 @@
|
|||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files (x86)\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||||
<FloatingPointModel>Fast</FloatingPointModel>
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
<PrecompiledHeader />
|
<PrecompiledHeader />
|
||||||
<WarningLevel>Level2</WarningLevel>
|
<WarningLevel>Level2</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
</ClCompile>
|
</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>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
@@ -156,9 +126,10 @@
|
|||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
<OmitFramePointers>true</OmitFramePointers>
|
<OmitFramePointers>true</OmitFramePointers>
|
||||||
<AdditionalIncludeDirectories>.;.\rubberband;.\src;C:\Program Files\Mega-Nerd\libsndfile\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..;..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_CONSOLE;WANT_TIMING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>__MSVC__;WIN32;NDEBUG;_LIB;NOMINMAX;_USE_MATH_DEFINES;USE_KISSFFT;NO_TIMING;USE_SPEEX;NO_THREAD_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
|
||||||
<FloatingPointModel>Fast</FloatingPointModel>
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
<PrecompiledHeader>
|
<PrecompiledHeader>
|
||||||
@@ -166,30 +137,61 @@
|
|||||||
<WarningLevel>Level2</WarningLevel>
|
<WarningLevel>Level2</WarningLevel>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
</ClCompile>
|
</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>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="rubberband\RubberBandStretcher.h" />
|
<ClInclude Include="..\rubberband\rubberband-c.h" />
|
||||||
<ClInclude Include="src\float_cast\float_cast.h" />
|
<ClInclude Include="..\rubberband\RubberBandStretcher.h" />
|
||||||
<ClInclude Include="src\getopt\getopt.h" />
|
<ClInclude Include="..\src\audiocurves\CompoundAudioCurve.h" />
|
||||||
<ClInclude Include="src\getopt\unistd.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>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="main\main.cpp" />
|
<ClCompile Include="..\src\audiocurves\CompoundAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\getopt\getopt.c" />
|
<ClCompile Include="..\src\audiocurves\ConstantAudioCurve.cpp" />
|
||||||
<ClCompile Include="src\getopt\getopt_long.c" />
|
<ClCompile Include="..\src\audiocurves\HighFrequencyAudioCurve.cpp" />
|
||||||
</ItemGroup>
|
<ClCompile Include="..\src\audiocurves\PercussiveAudioCurve.cpp" />
|
||||||
<ItemGroup>
|
<ClCompile Include="..\src\audiocurves\SilentAudioCurve.cpp" />
|
||||||
<None Include="debug\BuildLog.htm" />
|
<ClCompile Include="..\src\audiocurves\SpectralDifferenceAudioCurve.cpp" />
|
||||||
<None Include="wub\index.html" />
|
<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>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBANDSTRETCHER_H_
|
#ifndef RUBBERBAND_STRETCHER_H
|
||||||
#define _RUBBERBANDSTRETCHER_H_
|
#define RUBBERBAND_STRETCHER_H
|
||||||
|
|
||||||
#define RUBBERBAND_VERSION "1.9.0"
|
#define RUBBERBAND_VERSION "1.9.0"
|
||||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
#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 <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
@@ -60,7 +67,8 @@
|
|||||||
namespace RubberBand
|
namespace RubberBand
|
||||||
{
|
{
|
||||||
|
|
||||||
class RubberBandStretcher
|
class RUBBERBAND_DLLEXPORT
|
||||||
|
RubberBandStretcher
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
@@ -310,7 +318,7 @@ public:
|
|||||||
OptionPitchHighConsistency = 0x04000000,
|
OptionPitchHighConsistency = 0x04000000,
|
||||||
|
|
||||||
OptionChannelsApart = 0x00000000,
|
OptionChannelsApart = 0x00000000,
|
||||||
OptionChannelsTogether = 0x10000000,
|
OptionChannelsTogether = 0x10000000
|
||||||
|
|
||||||
// n.b. Options is int, so we must stop before 0x80000000
|
// n.b. Options is int, so we must stop before 0x80000000
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_C_API_H_
|
#ifndef RUBBERBAND_C_API_H
|
||||||
#define _RUBBERBAND_C_API_H_
|
#define RUBBERBAND_C_API_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -32,6 +32,13 @@ extern "C" {
|
|||||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
#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.
|
* This is a C-linkage interface to the Rubber Band time stretcher.
|
||||||
*
|
*
|
||||||
@@ -83,7 +90,7 @@ enum RubberBandOption {
|
|||||||
RubberBandOptionPitchHighConsistency = 0x04000000,
|
RubberBandOptionPitchHighConsistency = 0x04000000,
|
||||||
|
|
||||||
RubberBandOptionChannelsApart = 0x00000000,
|
RubberBandOptionChannelsApart = 0x00000000,
|
||||||
RubberBandOptionChannelsTogether = 0x10000000,
|
RubberBandOptionChannelsTogether = 0x10000000
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef int RubberBandOptions;
|
typedef int RubberBandOptions;
|
||||||
@@ -91,52 +98,54 @@ typedef int RubberBandOptions;
|
|||||||
struct RubberBandState_;
|
struct RubberBandState_;
|
||||||
typedef struct RubberBandState_ *RubberBandState;
|
typedef struct RubberBandState_ *RubberBandState;
|
||||||
|
|
||||||
extern RubberBandState rubberband_new(unsigned int sampleRate,
|
RB_EXTERN RubberBandState rubberband_new(unsigned int sampleRate,
|
||||||
unsigned int channels,
|
unsigned int channels,
|
||||||
RubberBandOptions options,
|
RubberBandOptions options,
|
||||||
double initialTimeRatio,
|
double initialTimeRatio,
|
||||||
double initialPitchScale);
|
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);
|
RB_EXTERN void rubberband_set_time_ratio(RubberBandState, double ratio);
|
||||||
extern void rubberband_set_pitch_scale(RubberBandState, double scale);
|
RB_EXTERN void rubberband_set_pitch_scale(RubberBandState, double scale);
|
||||||
|
|
||||||
extern double rubberband_get_time_ratio(const RubberBandState);
|
RB_EXTERN double rubberband_get_time_ratio(const RubberBandState);
|
||||||
extern double rubberband_get_pitch_scale(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);
|
RB_EXTERN void rubberband_set_transients_option(RubberBandState, RubberBandOptions options);
|
||||||
extern void rubberband_set_detector_option(RubberBandState, RubberBandOptions options);
|
RB_EXTERN void rubberband_set_detector_option(RubberBandState, RubberBandOptions options);
|
||||||
extern void rubberband_set_phase_option(RubberBandState, RubberBandOptions options);
|
RB_EXTERN void rubberband_set_phase_option(RubberBandState, RubberBandOptions options);
|
||||||
extern void rubberband_set_formant_option(RubberBandState, RubberBandOptions options);
|
RB_EXTERN void rubberband_set_formant_option(RubberBandState, RubberBandOptions options);
|
||||||
extern void rubberband_set_pitch_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);
|
RB_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_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);
|
RB_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_process(RubberBandState, const float *const *input, unsigned int samples, int final);
|
||||||
|
|
||||||
extern int rubberband_available(const RubberBandState);
|
RB_EXTERN int rubberband_available(const RubberBandState);
|
||||||
extern unsigned int rubberband_retrieve(const RubberBandState, float *const *output, unsigned int samples);
|
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);
|
RB_EXTERN void rubberband_set_debug_level(RubberBandState, int level);
|
||||||
extern void rubberband_set_default_debug_level(int level);
|
RB_EXTERN void rubberband_set_default_debug_level(int level);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef RB_EXTERN
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_STRETCH_CALCULATOR_H_
|
#ifndef RUBBERBAND_STRETCH_CALCULATOR_H
|
||||||
#define _RUBBERBAND_STRETCH_CALCULATOR_H_
|
#define RUBBERBAND_STRETCH_CALCULATOR_H
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_STRETCHERCHANNELDATA_H_
|
#ifndef RUBBERBAND_STRETCHERCHANNELDATA_H
|
||||||
#define _RUBBERBAND_STRETCHERCHANNELDATA_H_
|
#define RUBBERBAND_STRETCHERCHANNELDATA_H
|
||||||
|
|
||||||
#include "StretcherImpl.h"
|
#include "StretcherImpl.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_STRETCHERIMPL_H_
|
#ifndef RUBBERBAND_STRETCHERIMPL_H
|
||||||
#define _RUBBERBAND_STRETCHERIMPL_H_
|
#define RUBBERBAND_STRETCHERIMPL_H
|
||||||
|
|
||||||
#include "rubberband/RubberBandStretcher.h"
|
#include "rubberband/RubberBandStretcher.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _COMPOUND_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_COMPOUND_AUDIO_CURVE_H
|
||||||
#define _COMPOUND_AUDIO_CURVE_H_
|
#define RUBBERBAND_COMPOUND_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
#include "PercussiveAudioCurve.h"
|
#include "PercussiveAudioCurve.h"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CONSTANT_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_CONSTANT_AUDIO_CURVE_H
|
||||||
#define _CONSTANT_AUDIO_CURVE_H_
|
#define RUBBERBAND_CONSTANT_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _HIGHFREQUENCY_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H
|
||||||
#define _HIGHFREQUENCY_AUDIO_CURVE_H_
|
#define RUBBERBAND_HIGHFREQUENCY_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PERCUSSIVE_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H
|
||||||
#define _PERCUSSIVE_AUDIO_CURVE_H_
|
#define RUBBERBAND_PERCUSSIVE_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SILENT_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_SILENT_AUDIO_CURVE_H
|
||||||
#define _SILENT_AUDIO_CURVE_H_
|
#define RUBBERBAND_SILENT_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SPECTRALDIFFERENCE_AUDIO_CURVE_H_
|
#ifndef RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H
|
||||||
#define _SPECTRALDIFFERENCE_AUDIO_CURVE_H_
|
#define RUBBERBAND_SPECTRALDIFFERENCE_AUDIO_CURVE_H
|
||||||
|
|
||||||
#include "dsp/AudioCurveCalculator.h"
|
#include "dsp/AudioCurveCalculator.h"
|
||||||
#include "dsp/Window.h"
|
#include "dsp/Window.h"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef __MSVC__
|
#ifdef _MSC_VER
|
||||||
// Ugh --cc
|
// Ugh --cc
|
||||||
#define snprintf sprintf_s
|
#define snprintf sprintf_s
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _PROFILER_H_
|
#ifndef RUBBERBAND_PROFILER_H
|
||||||
#define _PROFILER_H_
|
#define RUBBERBAND_PROFILER_H
|
||||||
|
|
||||||
//#define NO_TIMING 1
|
//#define NO_TIMING 1
|
||||||
//#define WANT_TIMING 1
|
//#define WANT_TIMING 1
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_RINGBUFFER_H_
|
#ifndef RUBBERBAND_RINGBUFFER_H
|
||||||
#define _RUBBERBAND_RINGBUFFER_H_
|
#define RUBBERBAND_RINGBUFFER_H
|
||||||
|
|
||||||
#include <sys/types.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
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_SCAVENGER_H_
|
#ifndef RUBBERBAND_SCAVENGER_H
|
||||||
#define _RUBBERBAND_SCAVENGER_H_
|
#define RUBBERBAND_SCAVENGER_H
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef _MSC_VER
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _AUDIO_CURVE_CALCULATOR_H_
|
#ifndef RUBBERBAND_AUDIO_CURVE_CALCULATOR_H
|
||||||
#define _AUDIO_CURVE_CALCULATOR_H_
|
#define RUBBERBAND_AUDIO_CURVE_CALCULATOR_H
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_FFT_H_
|
#ifndef RUBBERBAND_FFT_H
|
||||||
#define _RUBBERBAND_FFT_H_
|
#define RUBBERBAND_FFT_H
|
||||||
|
|
||||||
#include "system/sysutils.h"
|
#include "system/sysutils.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _MOVING_MEDIAN_H_
|
#ifndef RUBBERBAND_MOVING_MEDIAN_H
|
||||||
#define _MOVING_MEDIAN_H_
|
#define RUBBERBAND_MOVING_MEDIAN_H
|
||||||
|
|
||||||
#include "SampleFilter.h"
|
#include "SampleFilter.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SAMPLE_FILTER_H_
|
#ifndef RUBBERBAND_SAMPLE_FILTER_H
|
||||||
#define _SAMPLE_FILTER_H_
|
#define RUBBERBAND_SAMPLE_FILTER_H
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_SINC_WINDOW_H_
|
#ifndef RUBBERBAND_SINC_WINDOW_H
|
||||||
#define _RUBBERBAND_SINC_WINDOW_H_
|
#define RUBBERBAND_SINC_WINDOW_H
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_WINDOW_H_
|
#ifndef RUBBERBAND_WINDOW_H
|
||||||
#define _RUBBERBAND_WINDOW_H_
|
#define RUBBERBAND_WINDOW_H
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#ifndef _POMMIER_SSE_MATHFUN_H_
|
#ifndef POMMIER_SSE_MATHFUN_H
|
||||||
#define _POMMIER_SSE_MATHFUN_H_
|
#define POMMIER_SSE_MATHFUN_H
|
||||||
|
|
||||||
/* SIMD (SSE1+MMX or SSE2) implementation of sin, cos, exp and log
|
/* SIMD (SSE1+MMX or SSE2) implementation of sin, cos, exp and log
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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
|
#ifdef HAVE_IPP
|
||||||
void *rv;
|
void *rv;
|
||||||
#endif
|
#endif
|
||||||
|
if (count * size < ALLOC_MINIMUM) {
|
||||||
// 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);
|
|
||||||
count = ALLOC_MINIMUM / size;
|
count = ALLOC_MINIMUM / size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,9 +102,7 @@ static void *speex_alloc (int count, int size)
|
|||||||
} else {
|
} else {
|
||||||
rv = ippsMalloc_8u(count * size);
|
rv = ippsMalloc_8u(count * size);
|
||||||
}
|
}
|
||||||
// fprintf(stderr, "allocated at %p; now setting %d bytes to zero\n", rv, count*size);
|
memset(rv, 0, count * size);
|
||||||
memset(rv, count * size, 0);
|
|
||||||
// fprintf(stderr, "returning %p\n",rv);
|
|
||||||
return rv;
|
return rv;
|
||||||
#else
|
#else
|
||||||
return calloc(count, size);
|
return calloc(count, size);
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_THREAD_H_
|
#ifndef RUBBERBAND_THREAD_H
|
||||||
#define _RUBBERBAND_THREAD_H_
|
#define RUBBERBAND_THREAD_H
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_VECTOR_OPS_H_
|
#ifndef RUBBERBAND_VECTOR_OPS_H
|
||||||
#define _RUBBERBAND_VECTOR_OPS_H_
|
#define RUBBERBAND_VECTOR_OPS_H
|
||||||
|
|
||||||
#ifdef HAVE_IPP
|
#ifdef HAVE_IPP
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_VECTOR_OPS_COMPLEX_H_
|
#ifndef RUBBERBAND_VECTOR_OPS_COMPLEX_H
|
||||||
#define _RUBBERBAND_VECTOR_OPS_COMPLEX_H_
|
#define RUBBERBAND_VECTOR_OPS_COMPLEX_H
|
||||||
|
|
||||||
#include "VectorOps.h"
|
#include "VectorOps.h"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
@@ -237,7 +237,7 @@ system_get_process_status(int pid)
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
void system_memorybarrier()
|
void system_memorybarrier()
|
||||||
{
|
{
|
||||||
#ifdef __MSVC__
|
#ifdef _MSC_VER
|
||||||
MemoryBarrier();
|
MemoryBarrier();
|
||||||
#else /* (mingw) */
|
#else /* (mingw) */
|
||||||
LONG Barrier = 0;
|
LONG Barrier = 0;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_SYSUTILS_H_
|
#ifndef RUBBERBAND_SYSUTILS_H
|
||||||
#define _RUBBERBAND_SYSUTILS_H_
|
#define RUBBERBAND_SYSUTILS_H
|
||||||
|
|
||||||
#ifdef __MSVC__
|
|
||||||
# if _MSC_VER < 1800
|
|
||||||
# include "float_cast/float_cast.h"
|
|
||||||
# endif
|
|
||||||
# define R__ __restrict
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
# define R__ __restrict__
|
# define R__ __restrict__
|
||||||
@@ -39,11 +32,20 @@
|
|||||||
# endif
|
# endif
|
||||||
#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__
|
#ifndef R__
|
||||||
# define R__
|
# define R__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__MSVC__)
|
#if defined(_MSC_VER)
|
||||||
# include <malloc.h>
|
# include <malloc.h>
|
||||||
# include <process.h>
|
# include <process.h>
|
||||||
# define alloca _alloca
|
# define alloca _alloca
|
||||||
@@ -65,11 +67,11 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__MSVC__) && _MSC_VER < 1700
|
#if defined(_MSC_VER) && _MSC_VER < 1700
|
||||||
# define uint8_t unsigned __int8
|
# define uint8_t unsigned __int8
|
||||||
# define uint16_t unsigned __int16
|
# define uint16_t unsigned __int16
|
||||||
# define uint32_t unsigned __int32
|
# define uint32_t unsigned __int32
|
||||||
#elif defined(__MSVC__)
|
#elif defined(_MSC_VER)
|
||||||
# define ssize_t long
|
# define ssize_t long
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
#else
|
#else
|
||||||
@@ -93,9 +95,9 @@ struct timeval { long tv_sec; long tv_usec; };
|
|||||||
void gettimeofday(struct timeval *p, void *tz);
|
void gettimeofday(struct timeval *p, void *tz);
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
#ifdef __MSVC__
|
#ifdef _MSC_VER
|
||||||
void usleep(unsigned long);
|
void usleep(unsigned long);
|
||||||
#endif // __MSVC__
|
#endif // _MSC_VER
|
||||||
|
|
||||||
inline double mod(double x, double y) { return x - (y * floor(x / y)); }
|
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))); }
|
inline float modf(float x, float y) { return x - (y * float(floor(x / y))); }
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
@@ -441,7 +441,7 @@ RubberBandVampPlugin::getRemainingFeatures()
|
|||||||
|
|
||||||
RubberBandVampPlugin::FeatureSet
|
RubberBandVampPlugin::FeatureSet
|
||||||
RubberBandVampPlugin::Impl::processOffline(const float *const *inputBuffers,
|
RubberBandVampPlugin::Impl::processOffline(const float *const *inputBuffers,
|
||||||
Vamp::RealTime timestamp)
|
Vamp::RealTime /* timestamp */)
|
||||||
{
|
{
|
||||||
if (!m_stretcher) {
|
if (!m_stretcher) {
|
||||||
cerr << "ERROR: RubberBandVampPlugin::processOffline: "
|
cerr << "ERROR: RubberBandVampPlugin::processOffline: "
|
||||||
@@ -480,7 +480,7 @@ RubberBandVampPlugin::Impl::getRemainingFeaturesOffline()
|
|||||||
|
|
||||||
RubberBandVampPlugin::FeatureSet
|
RubberBandVampPlugin::FeatureSet
|
||||||
RubberBandVampPlugin::Impl::processRealTime(const float *const *inputBuffers,
|
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
|
// 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
|
// has no requirement to be RT safe); it simply operates the
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
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.
|
you must obtain a valid commercial licence before doing so.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _RUBBERBAND_VAMP_PLUGIN_H_
|
#ifndef RUBBERBAND_VAMP_PLUGIN_H
|
||||||
#define _RUBBERBAND_VAMP_PLUGIN_H_
|
#define RUBBERBAND_VAMP_PLUGIN_H
|
||||||
|
|
||||||
#include <vamp-sdk/Plugin.h>
|
#include <vamp-sdk/Plugin.h>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
/*
|
/*
|
||||||
Rubber Band Library
|
Rubber Band Library
|
||||||
An audio time-stretching and pitch-shifting 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
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License as
|
modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
Reference in New Issue
Block a user