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