1
2Changes in Rubber Band v2.0.0
3
4 * Introduce a built-in resampler, intended to minimise artifacts on
5   pitch changes and to allow Rubber Band to be compiled without any
6   external dependencies (when also using the built-in FFT). The
7   built-in resampler is newer and less well-tested than
8   libsamplerate, and is not yet the default except in no-dependency
9   builds
10 * Introduce single compilation unit single/RubberBandSingle.cpp which
11   includes the whole library, to allow adding Rubber Band Library to
12   a C++ project without having to build anything separately. This
13   version always uses the built-in FFT and resampler and does not
14   support any extra configuration
15 * Update the stretch calculation logic for real-time mode, making it
16   more rigorous about avoiding timing drift when the pitch ratio
17   changes frequently
18 * Update the example LADSPA pitch shift plugin, adding a wet/dry mix
19   control to test (and take advantage of) the better timing
20   management in real-time mode
21 * Add a pitch/frequency-map file option to the command-line utility,
22   allowing time-varying pitch shifts to be pre-programmed
23
24The API is unchanged and the library is still binary compatible back
25to version 1.7.
26
27We incremented the major version number, not because of any API
28change, but because of a change to the timing of audio output for some
29applications of real-time mode. While the library is code-compatible
30with earlier releases, it is not "output-compatible" and may change
31automation-driven mixes even when used with identical options. If you
32are already using an earlier release in real-time mode, please test
33v2.0.0 carefully before updating.
34
35Note that there are no pure bug-fixes in v2.0.0: if you are happy with
36v1.9.2, there is no pressing reason to update.
37
38
39Changes in Rubber Band v1.9.2
40
41 * Introduce a built-in FFT option to be a good default when no
42   requirements point to a particular external library preference
43 * Fix potential crash following some reconfigure options. Thanks
44   to Michael Tyson for reporting this
45 * Ensure Accelerate is listed in generated pkg-config if required
46 * Check for existence of sincos in configuration
47 * Fix host identification when cross-compiling
48
49The API is unchanged and the library is binary compatible with
50version 1.7.
51
52
53Changes in Rubber Band v1.9.1
54
55 * Switch build system from Makefiles and Visual Studio project to
56   Meson/Ninja for all platforms. There are still Makefiles and VS
57   projects included in otherbuilds/ for those who wish to use them to
58   build the static library directly
59 * Make various fixes to improve sound quality when pitch-shifting
60   dynamically in real-time (requires libsamplerate)
61 * Fix floating-point exception when a very very long stretch factor
62   is presented
63 * Move the two directories that together provide the .NET interface
64   (rubberband-sharp and rubberband-dll) into their own subdir (dotnet)
65 * Ensure the library builds and runs correctly on ARM Mac (Apple
66   Silicon, M1), and also on Windows using the Visual C++ Clang
67   front-end
68
69The API is unchanged and the library is binary compatible with
70version 1.7.
71
72
73Changes in Rubber Band v1.9
74
75 * Fix incorrect numbering of pitch speed/quality flags in the
76   auxiliary C wrapper header. The effect of this was that code using
77   the C wrapper that intended to select the higher-quality
78   pitch-shift mode was actually choosing the higher-speed mode, and
79   vice versa. (The third mode - high-consistency, commonly used in
80   real-time applications - was correct.) Thanks to Michael Bradshaw
81   for reporting this.
82 * Add a .NET interface, generously contributed by Jonathan Gilbert
83   under a BSD-like licence
84 * Improve error handling in command-line utility
85 * Fix failure to build with FFTW_SINGLE_ONLY defined
86 * Fix some compiler warnings
87 * Install the JNI target (with make install) only if it has actually
88   been built, avoiding an error otherwise
89
90The API is unchanged except for the fix noted above, as a result of
91which the minor version number has been increased. The library is
92binary compatible with version 1.7.
93
94
95Changes in Rubber Band v1.8.2
96
97 * Fix a number of small memory leaks
98 * Make stretcher more robust to being fed invalid input (with NaNs)
99 * Include iOS build file
100 * Various platform build fixes and improvements
101
102The API is unchanged and the library is binary compatible with
103version 1.7.
104
105
106Changes in Rubber Band v1.8.1
107
108 * Fix a crash in formant-preserving pitch shift for some build targets
109
110The API is unchanged and the library is binary compatible with
111version 1.7.
112
113
114Changes in Rubber Band v1.8
115
116 * Add build support for Win32/MSVC, Android, and various libraries
117 * Add Java JNI interface
118
119The API is unchanged and the library is binary compatible with
120version 1.7.
121
122
123Changes in Rubber Band v1.7
124
125 * Add the centre-focus option as an alternative processing mode for
126   stereo (using mid-side arrangement)
127 * Several bug fixes
128
129The library is binary compatible with version 1.6 for forward
130compatibility (values have been added to an existing enum).  Code
131written to use 1.7 is not necessarily compatible with 1.6.
132
133
134Changes in Rubber Band v1.6
135
136 * Add Smoothing option.  This uses a window-presum FFT, introducing
137   time-domain aliasing which is then smoothed using a sinc window.
138   This can be used in combination with any of the existing processing
139   control options.  This will soften transients but the result may
140   still be more pleasant for some material that is not very amenable
141   to being time stretched.
142 * Fix silent channel of output when processing with band-limited
143   transients option
144 * Include libresample support
145
146The library is binary compatible with version 1.5 for forward
147compatibility (values have been added to an existing enum).  Code
148written to use 1.6 is not necessarily compatible with 1.5.
149
150
151Changes in Rubber Band v1.5
152
153 * Add a more reliable transient detection mode, and make the mode
154   selectable using OptionDetectorXXX flags -- the new method is
155   the default
156 * Band-limit transient detectors to avoid being distracted by
157   inaudible garbage
158 * Add a key-frame mapping facility for variable stretch ratio
159   management during offline stretches
160
161The library is binary compatible with version 1.4 for forward
162compatibility (a function has been added and an enum changed, but no
163existing entry points have changed).  Code written to use 1.5 is not
164necessarily compatible with 1.4.
165
166
167Changes in Rubber Band v1.4
168
169 * Fix a hang when faced with some very peculiar stretch factors
170 * Fix some incorrect threading condition usage
171 * Some code rearrangement
172 * Fix build on Solaris
173
174The library is binary compatible with version 1.3.
175
176
177Changes in Rubber Band v1.3
178
179 * Fix a bug that may cause incorrect output during the first process
180   block of some audio files, when processing in offline mode
181 * Fix a small number of build issues and more minor bugs
182
183The library is binary compatible with version 1.2.
184
185
186Changes in Rubber Band v1.2
187
188 * Add an initial "formant preservation" option when pitch shifting
189 * Real-time pitch shifting now uses a faster method by default, with
190   less variation in CPU usage
191 * The code is more amenable to compiler auto-vectorization (through
192   e.g. gcc --ftree-vectorize).
193
194