Merge
This commit is contained in:
11
CHANGELOG
11
CHANGELOG
@@ -1,4 +1,15 @@
|
||||
|
||||
Changes in Rubber Band v1.8.2
|
||||
|
||||
* Fix a number of small memory leaks
|
||||
* Make stretcher more robust to being fed invalid input (with NaNs)
|
||||
* Include iOS build file
|
||||
* Various platform build fixes and improvements
|
||||
|
||||
The API is unchanged and the library is binary compatible with
|
||||
version 1.7.
|
||||
|
||||
|
||||
Changes in Rubber Band v1.8.1
|
||||
|
||||
* Fix a crash in formant-preserving pitch shift for some build targets
|
||||
|
||||
@@ -6,7 +6,7 @@ CXXFLAGS := -DHAVE_LIBSAMPLERATE -DHAVE_FFTW3 -DFFTW_DOUBLE_ONLY -DNO_THREAD_CHE
|
||||
CFLAGS := @CFLAGS@ $(OPTFLAGS)
|
||||
LDFLAGS := @LDFLAGS@ -lpthread $(LDFLAGS)
|
||||
|
||||
JNI_CXXFLAGS := -I$(JAVA_HOME)/include
|
||||
JNI_CXXFLAGS := -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
|
||||
JAVAC := $(JAVA_HOME)/bin/javac
|
||||
JAR := $(JAVA_HOME)/bin/jar
|
||||
|
||||
@@ -31,7 +31,7 @@ JNINAME := librubberband-jni
|
||||
JARNAME := rubberband.jar
|
||||
|
||||
DYNAMIC_EXTENSION := .so
|
||||
DYNAMIC_FULL_VERSION := 2.1.0
|
||||
DYNAMIC_FULL_VERSION := 2.1.1
|
||||
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
|
||||
@@ -183,7 +183,7 @@ install: all
|
||||
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)
|
||||
cp $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
|
||||
cp -f $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
|
||||
cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR)
|
||||
cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR)
|
||||
|
||||
145
Makefile.ios
Normal file
145
Makefile.ios
Normal file
@@ -0,0 +1,145 @@
|
||||
|
||||
CXX := clang++
|
||||
CC := clang
|
||||
OPTFLAGS := -ffast-math -freciprocal-math -O3 -ftree-vectorize
|
||||
|
||||
# For the device
|
||||
ARCHFLAGS_DEV := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=6 -stdlib=libc++ -arch armv7 -arch arm64
|
||||
|
||||
# Or for the simulator
|
||||
ARCHFLAGS_SIM := -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=6 -stdlib=libc++ -arch i386 -arch x86_64
|
||||
|
||||
CXXFLAGS_ANY := $(OPTFLAGS) -I. -Isrc -Irubberband -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DUSE_POMMIER_MATHFUN -DNO_THREADING -DNO_THREAD_CHECKS -DNO_TIMING -DNO_TIMING_COMPLETE_NOOP -DNDEBUG
|
||||
|
||||
CXXFLAGS_DEV := $(ARCHFLAGS_DEV) $(CXXFLAGS_ANY)
|
||||
CXXFLAGS_SIM := $(ARCHFLAGS_SIM) $(CXXFLAGS_ANY)
|
||||
|
||||
CFLAGS_DEV := $(ARCHFLAGS_DEV) $(OPTFLAGS)
|
||||
CFLAGS_SIM := $(ARCHFLAGS_SIM) $(OPTFLAGS)
|
||||
|
||||
AR := ar
|
||||
LIPO := lipo
|
||||
MKDIR := mkdir
|
||||
|
||||
LIBNAME := librubberband
|
||||
|
||||
STATIC_TARGET := lib/$(LIBNAME).a
|
||||
STATIC_TARGET_DEV := lib/$(LIBNAME).dev.a
|
||||
STATIC_TARGET_SIM := lib/$(LIBNAME).sim.a
|
||||
|
||||
default: lib $(STATIC_TARGET)
|
||||
|
||||
all: lib $(STATIC_TARGET)
|
||||
|
||||
static: $(STATIC_TARGET)
|
||||
|
||||
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_DEV := $(LIBRARY_SOURCES:.cpp=.dev.o)
|
||||
LIBRARY_OBJECTS_DEV := $(LIBRARY_OBJECTS_DEV:.c=.dev.o)
|
||||
|
||||
LIBRARY_OBJECTS_SIM := $(LIBRARY_SOURCES:.cpp=.sim.o)
|
||||
LIBRARY_OBJECTS_SIM := $(LIBRARY_OBJECTS_SIM:.c=.sim.o)
|
||||
|
||||
$(STATIC_TARGET): $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM)
|
||||
rm -f $@
|
||||
$(LIPO) -create -output $@ $^
|
||||
@echo
|
||||
@echo "Build complete."
|
||||
@echo
|
||||
@echo "Please note that you cannot legally distribute the Rubber Band Library in an"
|
||||
@echo "iOS app on the App Store, unless you have first obtained a commercial licence."
|
||||
@echo
|
||||
|
||||
$(STATIC_TARGET_DEV): $(LIBRARY_OBJECTS_DEV)
|
||||
rm -f $@
|
||||
$(AR) rsc $@ $^
|
||||
|
||||
$(STATIC_TARGET_SIM): $(LIBRARY_OBJECTS_SIM)
|
||||
rm -f $@
|
||||
$(AR) rsc $@ $^
|
||||
|
||||
%.dev.o: %.c
|
||||
$(CC) -c $(CFLAGS_DEV) -o $@ $<
|
||||
|
||||
%.dev.o: %.cpp
|
||||
$(CXX) -c $(CXXFLAGS_DEV) -o $@ $<
|
||||
|
||||
%.sim.o: %.c
|
||||
$(CC) -c $(CFLAGS_SIM) -o $@ $<
|
||||
|
||||
%.sim.o: %.cpp
|
||||
$(CXX) -c $(CXXFLAGS_SIM) -o $@ $<
|
||||
|
||||
lib:
|
||||
$(MKDIR) $@
|
||||
|
||||
clean:
|
||||
rm -f $(LIBRARY_OBJECTS_DEV) $(LIBRARY_OBJECTS_SIM)
|
||||
|
||||
distclean: clean
|
||||
rm -f $(STATIC_TARGET_DEV) $(STATIC_TARGET_SIM)
|
||||
|
||||
depend:
|
||||
touch Makefile.dev_depends Makefile.sim_depends
|
||||
makedepend -f Makefile.dev_depends -o.dev.o -Y $(LIBRARY_SOURCES)
|
||||
makedepend -f Makefile.sim_depends -o.sim.o -Y $(LIBRARY_SOURCES)
|
||||
|
||||
-include Makefile.dev_depends
|
||||
-include Makefile.sim_depends
|
||||
10
Makefile.osx
10
Makefile.osx
@@ -1,8 +1,8 @@
|
||||
|
||||
PREFIX := /usr/local
|
||||
CXX := g++
|
||||
CC := gcc
|
||||
ARCHFLAGS :=
|
||||
CXX := clang++ -stdlib=libc++
|
||||
CC := clang
|
||||
ARCHFLAGS := -arch i386 -arch x86_64 -mmacosx-version-min=10.7
|
||||
OPTFLAGS := -DNDEBUG -ffast-math -mfpmath=sse -msse -msse2 -O3 -ftree-vectorize
|
||||
|
||||
CXXFLAGS := $(ARCHFLAGS) $(OPTFLAGS) -I. -Isrc -Irubberband -I/usr/local/include -DUSE_PTHREADS -DMALLOC_IS_ALIGNED -DHAVE_VDSP -DUSE_SPEEX -DNO_THREAD_CHECKS -DNO_TIMING
|
||||
@@ -29,7 +29,7 @@ INSTALL_PKGDIR := $(PREFIX)/lib/pkgconfig
|
||||
LIBNAME := librubberband
|
||||
|
||||
DYNAMIC_EXTENSION := .dylib
|
||||
DYNAMIC_FULL_VERSION := 2.1.0
|
||||
DYNAMIC_FULL_VERSION := 2.1.1
|
||||
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)
|
||||
|
||||
@@ -183,7 +183,7 @@ distclean: clean
|
||||
rm -f $(PROGRAM_TARGET) $(STATIC_TARGET) $(DYNAMIC_TARGET) $(VAMP_TARGET) $(LADSPA_TARGET)
|
||||
|
||||
depend:
|
||||
makedepend -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
makedepend -f Makefile.osx -Y $(LIBRARY_SOURCES) $(PROGRAM_SOURCES)
|
||||
|
||||
|
||||
# DO NOT DELETE
|
||||
|
||||
40
README.txt
40
README.txt
@@ -5,7 +5,7 @@ Rubber Band
|
||||
An audio time-stretching and pitch-shifting library and utility program.
|
||||
|
||||
Written by Chris Cannam, chris.cannam@breakfastquay.com.
|
||||
Copyright 2007-2014 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
Rubber Band is a library and utility program that permits changing the
|
||||
tempo and pitch of an audio recording independently of one another.
|
||||
@@ -176,7 +176,7 @@ Resampler libraries supported
|
||||
Name Flags required Notes
|
||||
---- -------------- -----
|
||||
|
||||
libsamplerate -DHAVE_LIBSAMPLERATE GPL.
|
||||
libsamplerate -DHAVE_LIBSAMPLERATE GPL until v0.1.8, BSD for v0.1.9 and later.
|
||||
|
||||
libresample -DHAVE_LIBRESAMPLE LGPL.
|
||||
|
||||
@@ -246,14 +246,16 @@ The following Makefile targets are available:
|
||||
The default target is "all".
|
||||
|
||||
|
||||
4d. OS/X and iOS
|
||||
----------------
|
||||
4d. OS/X
|
||||
--------
|
||||
|
||||
A Makefile for OS/X is provided as Makefile.osx.
|
||||
|
||||
Adjust the Makefile according to your preference for compiler and
|
||||
platform SDK, FFT and resampler implementations. The default is to
|
||||
use the Accelerate framework and the Speex resampler.
|
||||
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.
|
||||
|
||||
The following Makefile targets are available:
|
||||
|
||||
@@ -275,8 +277,32 @@ for RubberBandStretcherJNI.cpp) and the API headers in rubberband/
|
||||
should be all you need.
|
||||
|
||||
Note that you cannot legally distribute applications using Rubber Band
|
||||
through the iPhone/iPad App Store or OS/X App Store unless you have a
|
||||
valid commercial licence. GPL code is not permitted in these stores.
|
||||
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 http://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
4d. 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 http://breakfastquay.com/technology/license.html for
|
||||
commercial terms.
|
||||
|
||||
|
||||
4e. Win32 and Visual Studio
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
/* Copyright Chris Cannam - All Rights Reserved */
|
||||
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
||||
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2014 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version. See the file
|
||||
COPYING included with this distribution for more information.
|
||||
|
||||
Alternatively, if you have a valid commercial licence for the
|
||||
Rubber Band Library obtained by agreement with the copyright
|
||||
holders, you may redistribute and/or modify it under the terms
|
||||
described in that licence.
|
||||
|
||||
If you wish to distribute code using the Rubber Band Library
|
||||
under terms other than those of the GNU General Public License,
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
package com.breakfastquay.rubberband;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
AC_INIT(RubberBand, 1.8.1, chris.cannam@breakfastquay.com)
|
||||
AC_INIT(RubberBand, 1.8.2, chris.cannam@breakfastquay.com)
|
||||
|
||||
AC_CONFIG_SRCDIR(src/StretcherImpl.h)
|
||||
AC_PROG_CXX
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -253,6 +253,12 @@ RubberBandPitchShifter::RubberBandPitchShifter(int sampleRate, size_t channels)
|
||||
m_sampleRate(sampleRate),
|
||||
m_channels(channels)
|
||||
{
|
||||
m_input = new float *[m_channels];
|
||||
m_output = new float *[m_channels];
|
||||
|
||||
m_outputBuffer = new RingBuffer<float> *[m_channels];
|
||||
m_scratch = new float *[m_channels];
|
||||
|
||||
for (size_t c = 0; c < m_channels; ++c) {
|
||||
|
||||
m_input[c] = 0;
|
||||
@@ -276,6 +282,10 @@ RubberBandPitchShifter::~RubberBandPitchShifter()
|
||||
delete m_outputBuffer[c];
|
||||
delete[] m_scratch[c];
|
||||
}
|
||||
delete[] m_outputBuffer;
|
||||
delete[] m_scratch;
|
||||
delete[] m_output;
|
||||
delete[] m_input;
|
||||
}
|
||||
|
||||
LADSPA_Handle
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -85,8 +85,8 @@ protected:
|
||||
void updateFormant();
|
||||
void updateFast();
|
||||
|
||||
float *m_input[2];
|
||||
float *m_output[2];
|
||||
float **m_input;
|
||||
float **m_output;
|
||||
float *m_latency;
|
||||
float *m_cents;
|
||||
float *m_semitones;
|
||||
@@ -105,8 +105,8 @@ protected:
|
||||
size_t m_minfill;
|
||||
|
||||
RubberBand::RubberBandStretcher *m_stretcher;
|
||||
RubberBand::RingBuffer<float> *m_outputBuffer[2];
|
||||
float *m_scratch[2];
|
||||
RubberBand::RingBuffer<float> **m_outputBuffer;
|
||||
float **m_scratch;
|
||||
|
||||
int m_sampleRate;
|
||||
size_t m_channels;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -199,7 +199,7 @@ int main(int argc, char **argv)
|
||||
cerr << endl;
|
||||
cerr << "Rubber Band" << endl;
|
||||
cerr << "An audio time-stretching and pitch-shifting library and utility program." << endl;
|
||||
cerr << "Copyright 2007-2012 Particular Programs Ltd." << endl;
|
||||
cerr << "Copyright 2007-2015 Particular Programs Ltd." << endl;
|
||||
cerr << endl;
|
||||
cerr << " Usage: " << argv[0] << " [options] <infile.wav> <outfile.wav>" << endl;
|
||||
cerr << endl;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -24,7 +24,7 @@
|
||||
#ifndef _RUBBERBANDSTRETCHER_H_
|
||||
#define _RUBBERBANDSTRETCHER_H_
|
||||
|
||||
#define RUBBERBAND_VERSION "1.8.1"
|
||||
#define RUBBERBAND_VERSION "1.8.2"
|
||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||
#define RUBBERBAND_API_MINOR_VERSION 5
|
||||
|
||||
@@ -462,11 +462,17 @@ public:
|
||||
void setPitchOption(Options options);
|
||||
|
||||
/**
|
||||
* Tell the stretcher exactly how many input samples it will
|
||||
* Tell the stretcher exactly how many input sample frames it will
|
||||
* receive. This is only useful in Offline mode, when it allows
|
||||
* the stretcher to ensure that the number of output samples is
|
||||
* exactly correct. In RealTime mode no such guarantee is
|
||||
* possible and this value is ignored.
|
||||
*
|
||||
* Note that the value of "samples" refers to the number of audio
|
||||
* sample frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*/
|
||||
void setExpectedInputDuration(size_t samples);
|
||||
|
||||
@@ -492,6 +498,12 @@ public:
|
||||
* Note that this value is only relevant to process(), not to
|
||||
* study() (to which you may pass any number of samples at a time,
|
||||
* and from which there is no output).
|
||||
*
|
||||
* Note that the value of "samples" refers to the number of audio
|
||||
* sample frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*/
|
||||
void setMaxProcessSize(size_t samples);
|
||||
|
||||
@@ -512,6 +524,12 @@ public:
|
||||
* Note that this value is only relevant to process(), not to
|
||||
* study() (to which you may pass any number of samples at a time,
|
||||
* and from which there is no output).
|
||||
*
|
||||
* Note that the return value refers to the number of audio sample
|
||||
* frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*/
|
||||
size_t getSamplesRequired() const;
|
||||
|
||||
@@ -551,9 +569,16 @@ public:
|
||||
* blocks in individual study() calls, or as a single large block.
|
||||
*
|
||||
* "input" should point to de-interleaved audio data with one
|
||||
* float array per channel. "samples" supplies the number of
|
||||
* audio sample frames available in "input". If "samples" is
|
||||
* zero, "input" may be NULL.
|
||||
* float array per channel. Sample values are conventionally
|
||||
* expected to be in the range -1.0f to +1.0f. "samples" supplies
|
||||
* the number of audio sample frames available in "input". If
|
||||
* "samples" is zero, "input" may be NULL.
|
||||
*
|
||||
* Note that the value of "samples" refers to the number of audio
|
||||
* sample frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*
|
||||
* Set "final" to true if this is the last block of data that will
|
||||
* be provided to study() before the first process() call.
|
||||
@@ -564,6 +589,17 @@ public:
|
||||
* Provide a block of "samples" sample frames for processing.
|
||||
* See also getSamplesRequired() and setMaxProcessSize().
|
||||
*
|
||||
* "input" should point to de-interleaved audio data with one
|
||||
* float array per channel. Sample values are conventionally
|
||||
* expected to be in the range -1.0f to +1.0f. "samples" supplies
|
||||
* the number of audio sample frames available in "input".
|
||||
*
|
||||
* Note that the value of "samples" refers to the number of audio
|
||||
* sample frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*
|
||||
* Set "final" to true if this is the last block of input data.
|
||||
*/
|
||||
void process(const float *const *input, size_t samples, bool final);
|
||||
@@ -578,6 +614,12 @@ public:
|
||||
* enough data has yet been processed. Call getSamplesRequired()
|
||||
* to discover whether more input is needed.
|
||||
*
|
||||
* Note that the return value refers to the number of audio sample
|
||||
* frames, which may be multi-channel, not the number of
|
||||
* individual samples. (For example, one second of stereo audio
|
||||
* sampled at 44100Hz yields a value of 44100 sample frames, not
|
||||
* 88200.) This rule applies throughout the Rubber Band API.
|
||||
*
|
||||
* This function returns -1 if all data has been fully processed
|
||||
* and all output read, and the stretch process is now finished.
|
||||
*/
|
||||
@@ -589,6 +631,13 @@ public:
|
||||
* channel for de-interleaved audio data) pointed to by "output".
|
||||
* The return value is the actual number of sample frames
|
||||
* retrieved.
|
||||
*
|
||||
* Note that the value of "samples" and the return value refer to
|
||||
* the number of audio sample frames, which may be multi-channel,
|
||||
* not the number of individual samples. (For example, one second
|
||||
* of stereo audio sampled at 44100Hz yields a value of 44100
|
||||
* sample frames, not 88200.) This rule applies throughout the
|
||||
* Rubber Band API.
|
||||
*/
|
||||
size_t retrieve(float *const *output, size_t samples) const;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -28,7 +28,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define RUBBERBAND_VERSION "1.8.1"
|
||||
#define RUBBERBAND_VERSION "1.8.2"
|
||||
#define RUBBERBAND_API_MAJOR_VERSION 2
|
||||
#define RUBBERBAND_API_MINOR_VERSION 5
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -45,6 +45,7 @@ StretchCalculator::StretchCalculator(size_t sampleRate,
|
||||
m_recovery(0),
|
||||
m_prevRatio(1.0),
|
||||
m_transientAmnesty(0),
|
||||
m_debugLevel(0),
|
||||
m_useHardPeaks(useHardPeaks)
|
||||
{
|
||||
// std::cerr << "StretchCalculator::StretchCalculator: useHardPeaks = " << useHardPeaks << std::endl;
|
||||
@@ -221,7 +222,7 @@ StretchCalculator::mapPeaks(std::vector<Peak> &peaks,
|
||||
|
||||
// NB we know for certain we have a mapping from 0 -> 0 (or at
|
||||
// least, some mapping for source sample 0) because that is
|
||||
// enforced in setLockPoints above. However, we aren't guaranteed
|
||||
// enforced in setKeyFrameMap above. However, we aren't guaranteed
|
||||
// to have a mapping for the total duration -- we will usually
|
||||
// need to assume it maps to the normal duration * ratio sample
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -102,7 +102,6 @@ protected:
|
||||
float adj) const;
|
||||
|
||||
size_t m_sampleRate;
|
||||
size_t m_blockSize;
|
||||
size_t m_increment;
|
||||
float m_prevDf;
|
||||
double m_divergence;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "system/Allocators.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
namespace RubberBand
|
||||
{
|
||||
|
||||
@@ -249,6 +251,7 @@ RubberBandStretcher::Impl::ChannelData::~ChannelData()
|
||||
deallocate(accumulator);
|
||||
deallocate(windowAccumulator);
|
||||
deallocate(fltbuf);
|
||||
deallocate(dblbuf);
|
||||
|
||||
for (std::map<size_t, FFT *>::iterator i = ffts.begin();
|
||||
i != ffts.end(); ++i) {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <cmath>
|
||||
#include <set>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace RubberBand;
|
||||
|
||||
@@ -1057,7 +1058,7 @@ RubberBandStretcher::Impl::study(const float *const *input, size_t samples, bool
|
||||
}
|
||||
}
|
||||
|
||||
if (m_channels > 1) delete[] mdalloc;
|
||||
if (m_channels > 1 || final) delete[] mdalloc;
|
||||
}
|
||||
|
||||
vector<int>
|
||||
@@ -1118,11 +1119,15 @@ RubberBandStretcher::Impl::calculateStretch()
|
||||
|
||||
double prdm = 0, sdm = 0;
|
||||
if (!m_phaseResetDf.empty()) {
|
||||
for (int i = 0; i < m_phaseResetDf.size(); ++i) prdm += m_phaseResetDf[i];
|
||||
for (int i = 0; i < (int)m_phaseResetDf.size(); ++i) {
|
||||
prdm += m_phaseResetDf[i];
|
||||
}
|
||||
prdm /= m_phaseResetDf.size();
|
||||
}
|
||||
if (!m_stretchDf.empty()) {
|
||||
for (int i = 0; i < m_stretchDf.size(); ++i) sdm += m_stretchDf[i];
|
||||
for (int i = 0; i < (int)m_stretchDf.size(); ++i) {
|
||||
sdm += m_stretchDf[i];
|
||||
}
|
||||
sdm /= m_stretchDf.size();
|
||||
}
|
||||
// std::cerr << "phase reset df mean = " << prdm << ", stretch df mean = " << sdm << std::endl;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <set>
|
||||
#include <map>
|
||||
#include <deque>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace RubberBand;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
int getSize() const;
|
||||
|
||||
/**
|
||||
* Return a new ring buffer (allocated with "new" -- called must
|
||||
* Return a new ring buffer (allocated with "new" -- caller must
|
||||
* delete when no longer needed) of the given size, containing the
|
||||
* same data as this one. If another thread reads from or writes
|
||||
* to this buffer during the call, the results may be incomplete
|
||||
@@ -89,8 +89,7 @@ public:
|
||||
void reset();
|
||||
|
||||
/**
|
||||
* Return the amount of data available for reading by reader R, in
|
||||
* samples.
|
||||
* Return the amount of data available for reading, in samples.
|
||||
*/
|
||||
int getReadSpace() const;
|
||||
|
||||
@@ -100,9 +99,9 @@ public:
|
||||
int getWriteSpace() const;
|
||||
|
||||
/**
|
||||
* Read n samples from the buffer, for reader R. If fewer than n
|
||||
* are available, the remainder will be zeroed out. Returns the
|
||||
* number of samples actually read.
|
||||
* Read n samples from the buffer. If fewer than n are available,
|
||||
* the remainder will be zeroed out. Returns the number of
|
||||
* samples actually read.
|
||||
*
|
||||
* This is a template function, taking an argument S for the target
|
||||
* sample type, which is permitted to differ from T if the two
|
||||
@@ -112,10 +111,9 @@ public:
|
||||
int read(S *const R__ destination, int n);
|
||||
|
||||
/**
|
||||
* Read n samples from the buffer, for reader R, adding them to
|
||||
* the destination. If fewer than n are available, the remainder
|
||||
* will be left alone. Returns the number of samples actually
|
||||
* read.
|
||||
* Read n samples from the buffer, adding them to the destination.
|
||||
* If fewer than n are available, the remainder will be left
|
||||
* alone. Returns the number of samples actually read.
|
||||
*
|
||||
* This is a template function, taking an argument S for the target
|
||||
* sample type, which is permitted to differ from T if the two
|
||||
@@ -125,20 +123,19 @@ public:
|
||||
int readAdding(S *const R__ destination, int n);
|
||||
|
||||
/**
|
||||
* Read one sample from the buffer, for reader R. If no sample is
|
||||
* available, this will silently return zero. Calling this
|
||||
* repeatedly is obviously slower than calling read once, but it
|
||||
* may be good enough if you don't want to allocate a buffer to
|
||||
* read into.
|
||||
* Read one sample from the buffer. If no sample is available,
|
||||
* this will silently return zero. Calling this repeatedly is
|
||||
* obviously slower than calling read once, but it may be good
|
||||
* enough if you don't want to allocate a buffer to read into.
|
||||
*/
|
||||
T readOne();
|
||||
|
||||
/**
|
||||
* Read n samples from the buffer, if available, for reader R,
|
||||
* without advancing the read pointer -- i.e. a subsequent read()
|
||||
* or skip() will be necessary to empty the buffer. If fewer than
|
||||
* n are available, the remainder will be zeroed out. Returns the
|
||||
* number of samples actually read.
|
||||
* Read n samples from the buffer, if available, without advancing
|
||||
* the read pointer -- i.e. a subsequent read() or skip() will be
|
||||
* necessary to empty the buffer. If fewer than n are available,
|
||||
* the remainder will be zeroed out. Returns the number of
|
||||
* samples actually read.
|
||||
*/
|
||||
int peek(T *const R__ destination, int n) const;
|
||||
|
||||
@@ -151,10 +148,9 @@ public:
|
||||
T peekOne() const;
|
||||
|
||||
/**
|
||||
* Pretend to read n samples from the buffer, for reader R,
|
||||
* without actually returning them (i.e. discard the next n
|
||||
* samples). Returns the number of samples actually available for
|
||||
* discarding.
|
||||
* Pretend to read n samples from the buffer, without actually
|
||||
* returning them (i.e. discard the next n samples). Returns the
|
||||
* number of samples actually available for discarding.
|
||||
*/
|
||||
int skip(int n);
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -130,6 +130,7 @@ template <typename T>
|
||||
Scavenger<T>::Scavenger(int sec, int defaultObjectListSize) :
|
||||
m_objects(ObjectTimeList(defaultObjectListSize)),
|
||||
m_sec(sec),
|
||||
m_lastExcess(0),
|
||||
m_claimed(0),
|
||||
m_scavenged(0),
|
||||
m_asExcess(0)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -43,8 +43,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_VDSP
|
||||
#include <vecLib/vDSP.h>
|
||||
#include <vecLib/vForce.h>
|
||||
#include <Accelerate/Accelerate.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MEDIALIB
|
||||
@@ -1598,6 +1597,15 @@ public:
|
||||
m_commonMutex.unlock();
|
||||
#endif
|
||||
}
|
||||
#ifndef NO_THREADING
|
||||
m_commonMutex.lock();
|
||||
#endif
|
||||
if (m_extantf <= 0 && m_extantd <= 0) {
|
||||
fftw_cleanup();
|
||||
}
|
||||
#ifndef NO_THREADING
|
||||
m_commonMutex.unlock();
|
||||
#endif
|
||||
}
|
||||
|
||||
FFT::Precisions
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace RubberBand
|
||||
{
|
||||
|
||||
@@ -59,6 +61,10 @@ public:
|
||||
}
|
||||
|
||||
void push(T value) {
|
||||
if (value != value) {
|
||||
std::cerr << "WARNING: MovingMedian: NaN encountered" << std::endl;
|
||||
value = T();
|
||||
}
|
||||
drop(m_frame[0]);
|
||||
v_move(m_frame, m_frame+1, P::m_size-1);
|
||||
m_frame[P::m_size-1] = value;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <cmath>
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
#include "system/Allocators.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
}
|
||||
|
||||
inline void add(T *const R__ dst, T scale) const {
|
||||
v_add_with_gain(dst, m_cache, m_size, scale);
|
||||
v_add_with_gain(dst, m_cache, scale, m_size);
|
||||
}
|
||||
|
||||
inline T getArea() const { return m_area; }
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
}
|
||||
|
||||
inline void add(T *const R__ dst, T scale) const {
|
||||
v_add_with_gain(dst, m_cache, m_size, scale);
|
||||
v_add_with_gain(dst, m_cache, scale, m_size);
|
||||
}
|
||||
|
||||
inline T getRMS() const {
|
||||
|
||||
@@ -38,7 +38,13 @@
|
||||
** long int lrint (double x) ;
|
||||
*/
|
||||
|
||||
#if (defined (WIN32) || defined (_WIN32))
|
||||
#if (defined (_WIN64))
|
||||
|
||||
#include <math.h>
|
||||
__inline long int lrint(double flt) { return (long int)flt; }
|
||||
__inline long int lrintf(float flt) { return (long int)flt; }
|
||||
|
||||
#elif (defined (WIN32) || defined (_WIN32))
|
||||
|
||||
#include <math.h>
|
||||
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
||||
/* Copyright Chris Cannam - All Rights Reserved */
|
||||
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version. See the file
|
||||
COPYING included with this distribution for more information.
|
||||
|
||||
Alternatively, if you have a valid commercial licence for the
|
||||
Rubber Band Library obtained by agreement with the copyright
|
||||
holders, you may redistribute and/or modify it under the terms
|
||||
described in that licence.
|
||||
|
||||
If you wish to distribute code using the Rubber Band Library
|
||||
under terms other than those of the GNU General Public License,
|
||||
you must obtain a valid commercial licence before doing so.
|
||||
*/
|
||||
|
||||
#include "rubberband/RubberBandStretcher.h"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -33,8 +33,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_VDSP
|
||||
#include <vecLib/vDSP.h>
|
||||
#include <vecLib/vForce.h>
|
||||
#include <Accelerate/Accelerate.h>
|
||||
#endif
|
||||
|
||||
#include <cstring>
|
||||
@@ -289,8 +288,8 @@ inline void v_add_channels(T *const R__ *const R__ dst,
|
||||
template<typename T, typename G>
|
||||
inline void v_add_with_gain(T *const R__ dst,
|
||||
const T *const R__ src,
|
||||
const int count,
|
||||
const G gain)
|
||||
const G gain,
|
||||
const int count)
|
||||
{
|
||||
for (int i = 0; i < count; ++i) {
|
||||
dst[i] += src[i] * gain;
|
||||
@@ -300,12 +299,12 @@ inline void v_add_with_gain(T *const R__ dst,
|
||||
template<typename T, typename G>
|
||||
inline void v_add_channels_with_gain(T *const R__ *const R__ dst,
|
||||
const T *const R__ *const R__ src,
|
||||
const G gain,
|
||||
const int channels,
|
||||
const int count,
|
||||
const G gain)
|
||||
const int count)
|
||||
{
|
||||
for (int c = 0; c < channels; ++c) {
|
||||
v_add_with_gain(dst[c], src[c], count, gain);
|
||||
v_add_with_gain(dst[c], src[c], gain, count);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -674,7 +673,7 @@ inline void v_abs(float *const R__ dst,
|
||||
const int count)
|
||||
{
|
||||
float tmp[count];
|
||||
#if (MACOSX_DEPLOYMENT_TARGET <= 1070 && MAC_OS_X_VERSION_MIN_REQUIRED <= 1070)
|
||||
#if (defined(MACOSX_DEPLOYMENT_TARGET) && MACOSX_DEPLOYMENT_TARGET <= 1070 && MAC_OS_X_VERSION_MIN_REQUIRED <= 1070)
|
||||
vvfabf(tmp, dst, &count);
|
||||
#else
|
||||
vvfabsf(tmp, dst, &count);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <cassert>
|
||||
|
||||
#if defined USE_POMMIER_MATHFUN
|
||||
#if defined __ARMEL__
|
||||
#if defined __ARMEL__ || defined __aarch64__
|
||||
#include "pommier/neon_mathfun.h"
|
||||
#else
|
||||
#include "pommier/sse_mathfun.h"
|
||||
@@ -71,7 +71,7 @@ float approximate_atan2f(float real, float imag)
|
||||
|
||||
#if defined USE_POMMIER_MATHFUN
|
||||
|
||||
#ifdef __ARMEL__
|
||||
#if defined __ARMEL__ || defined __aarch64__
|
||||
typedef union {
|
||||
float f[4];
|
||||
int i[4];
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -52,7 +52,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_VDSP
|
||||
#include <vecLib/vDSP.h>
|
||||
#include <Accelerate/Accelerate.h>
|
||||
#include <fenv.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
@@ -29,9 +29,13 @@
|
||||
#define R__ __restrict
|
||||
#endif
|
||||
|
||||
#ifdef __clang__
|
||||
#define R__ __restrict__
|
||||
#else
|
||||
#ifdef __GNUC__
|
||||
#define R__ __restrict__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef R__
|
||||
#define R__
|
||||
@@ -58,6 +62,7 @@
|
||||
#define uint32_t unsigned __int32
|
||||
#elif defined(__MSVC__)
|
||||
#define ssize_t long
|
||||
#include <stdint.h>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/*
|
||||
Rubber Band Library
|
||||
An audio time-stretching and pitch-shifting library.
|
||||
Copyright 2007-2012 Particular Programs Ltd.
|
||||
Copyright 2007-2015 Particular Programs Ltd.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
|
||||
Reference in New Issue
Block a user