Merge from default branch
This commit is contained in:
@@ -16,6 +16,7 @@ build_script:
|
|||||||
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
|
- 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"
|
- meson build "-Dextra_include_dirs=C:\Program Files\libsndfile\include" "-Dextra_lib_dirs=C:\Program Files\libsndfile\lib"
|
||||||
- ninja -C build
|
- ninja -C build
|
||||||
# And test the .NET FFI interface build, which is completely separate
|
# Test the VC++ static library build, which is separate
|
||||||
|
- msbuild otherbuilds\rubberband-library.vcxproj /t:Build /p:Configuration=Release
|
||||||
|
# And test the .NET FFI interface build, which is again separate
|
||||||
- msbuild dotnet\rubberband.sln /t:Restore;Build
|
- msbuild dotnet\rubberband.sln /t:Restore;Build
|
||||||
|
|
||||||
|
|||||||
1
.hgtags
1
.hgtags
@@ -12,3 +12,4 @@ d4911a276d96f6232a68c6b8448056d3946043b9 v1.8.1
|
|||||||
fa6a54be7e6bf0c5adffd19ccec622481a8140a5 v1.8.2
|
fa6a54be7e6bf0c5adffd19ccec622481a8140a5 v1.8.2
|
||||||
37b18c17c042eafc39483ffb58837de844ba3289 v1.9
|
37b18c17c042eafc39483ffb58837de844ba3289 v1.9
|
||||||
7af7a76bbb1dc75f630555e22ca8f6ae9da79529 v1.9.1
|
7af7a76bbb1dc75f630555e22ca8f6ae9da79529 v1.9.1
|
||||||
|
8584d22881ba41a97a9c79f6e091ff65b463970b v1.9.2
|
||||||
|
|||||||
14
CHANGELOG
14
CHANGELOG
@@ -1,4 +1,18 @@
|
|||||||
|
|
||||||
|
Changes in Rubber Band v1.9.2
|
||||||
|
|
||||||
|
* Introduce a built-in FFT option to be a good default when no
|
||||||
|
requirements point to a particular external library preference
|
||||||
|
* Fix potential crash following some reconfigure options. Thanks
|
||||||
|
to Michael Tyson for reporting this
|
||||||
|
* Ensure Accelerate is listed in generated pkg-config if required
|
||||||
|
* Check for existence of sincos in configuration
|
||||||
|
* Fix host identification when cross-compiling
|
||||||
|
|
||||||
|
The API is unchanged and the library is binary compatible with
|
||||||
|
version 1.7.
|
||||||
|
|
||||||
|
|
||||||
Changes in Rubber Band v1.9.1
|
Changes in Rubber Band v1.9.1
|
||||||
|
|
||||||
* Switch build system from Makefiles and Visual Studio project to
|
* Switch build system from Makefiles and Visual Studio project to
|
||||||
|
|||||||
2
Doxyfile
2
Doxyfile
@@ -31,7 +31,7 @@ PROJECT_NAME = "Rubber Band Library"
|
|||||||
# This could be handy for archiving the generated documentation or
|
# This could be handy for archiving the generated documentation or
|
||||||
# if some version control system is used.
|
# if some version control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = 1.9.1
|
PROJECT_NUMBER = 1.9.2
|
||||||
|
|
||||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||||
# base path where the generated documentation will be put.
|
# base path where the generated documentation will be put.
|
||||||
|
|||||||
50
README.md
50
README.md
@@ -161,8 +161,16 @@ acquired a commercial licence from the author.
|
|||||||
## 4. Compiling the Rubber Band Library
|
## 4. Compiling the Rubber Band Library
|
||||||
|
|
||||||
The primary supported build system for the Rubber Band Library on all
|
The primary supported build system for the Rubber Band Library on all
|
||||||
platforms is Meson (https://mesonbuild.com). To build, ensure Meson
|
platforms is Meson (https://mesonbuild.com). The Meson build system
|
||||||
and Ninja are installed and run:
|
can be used to build all targets (static and dynamic library,
|
||||||
|
command-line utility, and plugins) and to cross-compile.
|
||||||
|
|
||||||
|
If you only need a static library and don't wish to use Meson, some
|
||||||
|
alternative build files (Makefiles and Visual C++ projects) are
|
||||||
|
included in the `otherbuilds` directory. See the platform-specific
|
||||||
|
build sections below for more details.
|
||||||
|
|
||||||
|
To build with Meson, ensure Meson and Ninja are installed and run:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ meson build && ninja -C build
|
$ meson build && ninja -C build
|
||||||
@@ -185,10 +193,6 @@ $ meson build -Dipp_path=/opt/intel/ipp
|
|||||||
The options are documented in the library- and platform-specific
|
The options are documented in the library- and platform-specific
|
||||||
sections below.
|
sections below.
|
||||||
|
|
||||||
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
|
The Rubber Band Library is written entirely in C++ to the C++98
|
||||||
standard. It is unlikely to make any difference (performance or
|
standard. It is unlikely to make any difference (performance or
|
||||||
otherwise) which C++ standard your compiler uses - as long as it's no
|
otherwise) which C++ standard your compiler uses - as long as it's no
|
||||||
@@ -304,10 +308,16 @@ commercial terms.
|
|||||||
|
|
||||||
### 4d. Building on Windows
|
### 4d. Building on Windows
|
||||||
|
|
||||||
The default build on Windows also uses Meson, so ensure Meson and
|
If you only need to build the static library for integration into your
|
||||||
Ninja are installed and available. Then, in a terminal window with the
|
project, and you prefer a Visual Studio project file, you can find a
|
||||||
compiler tools available in the path (e.g. a Visual Studio
|
simple one in `otherbuilds\rubberband-library.vcxproj`.
|
||||||
command-line prompt for the relevant build architecture) run
|
|
||||||
|
The rest of this section describes the "full" build system, which uses
|
||||||
|
Meson just as on the other platforms. So to build this way, start by
|
||||||
|
ensuring 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
|
> meson build
|
||||||
@@ -329,10 +339,6 @@ option `b_vscrt`:
|
|||||||
|
|
||||||
See "FFT and resampler selection" below for further build options.
|
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
|
### 4e. Building for Android and Java integration
|
||||||
|
|
||||||
@@ -354,8 +360,8 @@ The supplied `.mk` file uses KissFFT and the Speex resampler.
|
|||||||
|
|
||||||
### 4f. FFT and resampler selection
|
### 4f. FFT and resampler selection
|
||||||
|
|
||||||
Rubber Band requires additional library code for FFT calculation and
|
Rubber Band requires the selection of library code for FFT calculation
|
||||||
resampling. Several libraries are supported. The selection is
|
and resampling. Several libraries are supported. The selection is
|
||||||
controlled (in Meson) using `-D` options and (in the code itself)
|
controlled (in Meson) using `-D` options and (in the code itself)
|
||||||
using preprocessor flags set by the build system. These options and
|
using preprocessor flags set by the build system. These options and
|
||||||
flags are detailed in the tables below.
|
flags are detailed in the tables below.
|
||||||
@@ -364,13 +370,13 @@ At least one resampler implementation and one FFT implementation must
|
|||||||
be enabled. It is technically possible to enable more than one, but
|
be enabled. It is technically possible to enable more than one, but
|
||||||
it's confusing and not often useful.
|
it's confusing and not often useful.
|
||||||
|
|
||||||
If you are building this software using one of the bundled library
|
If you are building this software using the bundled Speex or KissFFT
|
||||||
options (Speex or KissFFT), please be sure to review the terms for
|
library code, please be sure to review the terms for those libraries
|
||||||
those libraries in `src/speex/COPYING` and `src/kissfft/COPYING` as
|
in `src/speex/COPYING` and `src/kissfft/COPYING` as applicable.
|
||||||
applicable.
|
|
||||||
|
|
||||||
If you are proposing to package Rubber Band for a Linux distribution
|
If you are proposing to package Rubber Band for a Linux distribution,
|
||||||
using other packaged libraries, please select FFTW and libsamplerate.
|
please select either the built-in FFT (simpler for you) or FFTW (a bit
|
||||||
|
faster) and use libsamplerate.
|
||||||
|
|
||||||
#### FFT libraries supported
|
#### FFT libraries supported
|
||||||
|
|
||||||
|
|||||||
12
meson.build
12
meson.build
@@ -2,7 +2,7 @@
|
|||||||
project(
|
project(
|
||||||
'Rubber Band Library',
|
'Rubber Band Library',
|
||||||
'c', 'cpp',
|
'c', 'cpp',
|
||||||
version: '1.9.2-pre',
|
version: '1.9.2',
|
||||||
license: 'GPL-2.0-or-later',
|
license: 'GPL-2.0-or-later',
|
||||||
default_options: [
|
default_options: [
|
||||||
# All Rubber Band code is actually C++98, but some compilers no
|
# All Rubber Band code is actually C++98, but some compilers no
|
||||||
@@ -15,7 +15,7 @@ project(
|
|||||||
meson_version: '>= 0.53.0'
|
meson_version: '>= 0.53.0'
|
||||||
)
|
)
|
||||||
|
|
||||||
rubberband_dynamic_library_version = '2.1.3'
|
rubberband_dynamic_library_version = '2.1.4'
|
||||||
|
|
||||||
system = host_machine.system()
|
system = host_machine.system()
|
||||||
architecture = host_machine.cpu_family()
|
architecture = host_machine.cpu_family()
|
||||||
@@ -341,18 +341,18 @@ if system == 'darwin'
|
|||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if architecture == 'aarch64'
|
if architecture == 'aarch64'
|
||||||
mac_platform_arguments = [
|
arch_flags += [
|
||||||
'-arch', 'arm64',
|
'-arch', 'arm64',
|
||||||
]
|
]
|
||||||
if not have_version_min
|
if not have_version_min
|
||||||
mac_platform_arguments += [ '-mmacosx-version-min=11' ]
|
arch_flags += [ '-mmacosx-version-min=11' ]
|
||||||
endif
|
endif
|
||||||
elif architecture == 'x86_64'
|
elif architecture == 'x86_64'
|
||||||
mac_platform_arguments = [
|
arch_flags += [
|
||||||
'-arch', 'x86_64',
|
'-arch', 'x86_64',
|
||||||
]
|
]
|
||||||
if not have_version_min
|
if not have_version_min
|
||||||
mac_platform_arguments += [ '-mmacosx-version-min=10.13' ]
|
arch_flags += [ '-mmacosx-version-min=10.13' ]
|
||||||
endif
|
endif
|
||||||
else # begin architecture != 'aarch64' or 'x86_64'
|
else # begin architecture != 'aarch64' or 'x86_64'
|
||||||
error('Build for architecture ' + architecture + ' is not supported on this platform')
|
error('Build for architecture ' + architecture + ' is not supported on this platform')
|
||||||
|
|||||||
@@ -1,19 +1,40 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eu
|
set -eu
|
||||||
if [ ! -f ../rba/deploy/macos/notarize.sh ]; then
|
if [ ! -f ../rba/deploy/macos/notarize.sh ]; then
|
||||||
echo "need notarize script in ../rba/deploy/macos"
|
echo "Need notarize script in ../rba/deploy/macos"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
version=$(grep '^ *version:' meson.build | head -1 | sed "s/^.*'\([0-9][0-9.]*\)'.*$/\1/")
|
version=$(grep '^ *version:' meson.build | head -1 | sed "s/^.*'\([0-9][0-9.]*\)'.*$/\1/")
|
||||||
echo
|
echo
|
||||||
echo "Packaging command-line utility for Mac for Rubber Band v$version..."
|
echo "Packaging command-line utility for Mac for Rubber Band v$version..."
|
||||||
echo
|
echo
|
||||||
rm -rf build
|
if [ -f /usr/local/lib/libsndfile.dylib ]; then
|
||||||
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ meson build --cross-file ./cross/macos-universal.txt
|
echo "(WARNING: libsndfile dynamic library found in /usr/local/lib!"
|
||||||
ninja -C build
|
echo "Be sure that you aren't about to combine this external dependency"
|
||||||
./build/rubberband -V
|
echo "with the hardened runtime)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "Proceed [Yn] ? "
|
||||||
|
read yn
|
||||||
|
case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac
|
||||||
|
echo "Proceeding"
|
||||||
|
|
||||||
|
rm -rf build_arm64 build_x86_64 tmp_pack
|
||||||
|
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ meson build_arm64 --cross-file ./cross/macos-arm64.txt
|
||||||
|
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ meson build_x86_64 --cross-file ./cross/macos-x86_64.txt
|
||||||
|
ninja -C build_arm64
|
||||||
|
ninja -C build_x86_64
|
||||||
|
mkdir tmp_pack
|
||||||
|
lipo build_arm64/rubberband build_x86_64/rubberband -create -output tmp_pack/rubberband
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Check the following version number: it should read $version"
|
||||||
|
tmp_pack/rubberband -V
|
||||||
|
echo
|
||||||
|
|
||||||
key="Developer ID Application: Particular Programs Ltd (73F996B92S)"
|
key="Developer ID Application: Particular Programs Ltd (73F996B92S)"
|
||||||
mkdir -p packages
|
mkdir -p packages
|
||||||
( cd build
|
( cd tmp_pack
|
||||||
codesign -s "$key" -fv --options runtime rubberband
|
codesign -s "$key" -fv --options runtime rubberband
|
||||||
zipfile="rubberband-$version-gpl-executable-macos.zip"
|
zipfile="rubberband-$version-gpl-executable-macos.zip"
|
||||||
rm -f "$zipfile"
|
rm -f "$zipfile"
|
||||||
@@ -23,7 +44,7 @@ mkdir -p packages
|
|||||||
package_dir="rubberband-$version-gpl-executable-macos"
|
package_dir="rubberband-$version-gpl-executable-macos"
|
||||||
rm -rf "$package_dir"
|
rm -rf "$package_dir"
|
||||||
mkdir "$package_dir"
|
mkdir "$package_dir"
|
||||||
cp build/rubberband "$package_dir"
|
cp tmp_pack/rubberband "$package_dir"
|
||||||
cp CHANGELOG README.md COPYING "$package_dir"
|
cp CHANGELOG README.md COPYING "$package_dir"
|
||||||
tar cvjf "$package_dir.tar.bz2" "$package_dir"
|
tar cvjf "$package_dir.tar.bz2" "$package_dir"
|
||||||
mv "$package_dir.tar.bz2" packages/
|
mv "$package_dir.tar.bz2" packages/
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#ifndef RUBBERBAND_STRETCHER_H
|
#ifndef RUBBERBAND_STRETCHER_H
|
||||||
#define RUBBERBAND_STRETCHER_H
|
#define RUBBERBAND_STRETCHER_H
|
||||||
|
|
||||||
#define RUBBERBAND_VERSION "1.9.1"
|
#define RUBBERBAND_VERSION "1.9.2"
|
||||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
#define RUBBERBAND_API_MINOR_VERSION 6
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define RUBBERBAND_VERSION "1.9.1"
|
#define RUBBERBAND_VERSION "1.9.2"
|
||||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||||
#define RUBBERBAND_API_MINOR_VERSION 6
|
#define RUBBERBAND_API_MINOR_VERSION 6
|
||||||
|
|
||||||
|
|||||||
@@ -853,6 +853,10 @@ RubberBandStretcher::Impl::reconfigure()
|
|||||||
|
|
||||||
if (m_fftSize != prevFftSize) {
|
if (m_fftSize != prevFftSize) {
|
||||||
m_phaseResetAudioCurve->setFftSize(m_fftSize);
|
m_phaseResetAudioCurve->setFftSize(m_fftSize);
|
||||||
|
m_silentAudioCurve->setFftSize(m_fftSize);
|
||||||
|
if (m_stretchAudioCurve) {
|
||||||
|
m_stretchAudioCurve->setFftSize(m_fftSize);
|
||||||
|
}
|
||||||
somethingChanged = true;
|
somethingChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -701,6 +701,7 @@ public:
|
|||||||
if (!m_dspec) initDouble();
|
if (!m_dspec) initDouble();
|
||||||
double *d[2] = { m_dpacked->realp, m_dpacked->imagp };
|
double *d[2] = { m_dpacked->realp, m_dpacked->imagp };
|
||||||
v_deinterleave(d, complexIn, 2, m_size/2 + 1);
|
v_deinterleave(d, complexIn, 2, m_size/2 + 1);
|
||||||
|
dnyq();
|
||||||
vDSP_fft_zriptD(m_dspec, m_dpacked, 1, m_dbuf, m_order, FFT_INVERSE);
|
vDSP_fft_zriptD(m_dspec, m_dpacked, 1, m_dbuf, m_order, FFT_INVERSE);
|
||||||
unpackReal(realOut);
|
unpackReal(realOut);
|
||||||
}
|
}
|
||||||
@@ -738,6 +739,7 @@ public:
|
|||||||
if (!m_fspec) initFloat();
|
if (!m_fspec) initFloat();
|
||||||
float *f[2] = { m_fpacked->realp, m_fpacked->imagp };
|
float *f[2] = { m_fpacked->realp, m_fpacked->imagp };
|
||||||
v_deinterleave(f, complexIn, 2, m_size/2 + 1);
|
v_deinterleave(f, complexIn, 2, m_size/2 + 1);
|
||||||
|
fnyq();
|
||||||
vDSP_fft_zript(m_fspec, m_fpacked, 1, m_fbuf, m_order, FFT_INVERSE);
|
vDSP_fft_zript(m_fspec, m_fpacked, 1, m_fbuf, m_order, FFT_INVERSE);
|
||||||
unpackReal(realOut);
|
unpackReal(realOut);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user