Updated versions and documents for release 2.2

This commit is contained in:
Olli Parviainen 2020-10-15 18:20:52 +03:00
parent 1d42d899ab
commit 762f56024b
6 changed files with 931 additions and 892 deletions

View File

@ -1,21 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <html>
<head> <head>
<title>SoundTouch library README</title> <title>SoundTouch library README</title>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="en-us"> <meta http-equiv="Content-Language" content="en-us">
<meta name="author" content="Olli Parviainen"> <meta name="author" content="Olli Parviainen">
<meta name="description" <meta name="description" content="Readme file for SoundTouch audio processing library">
content="Readme file for SoundTouch audio processing library">
<style> <style>
body {font-family: Arial, Helvetica; } body {
font-family: Arial, Helvetica;
}
</style> </style>
</head> </head>
<body class="normal"> <body class="normal">
<hr> <hr>
<h1>SoundTouch audio processing library v2.1.3 pre</h1> <h1>SoundTouch audio processing library v2.2</h1>
<p class="normal">SoundTouch library Copyright &copy; Olli Parviainen 2001-2019</p> <p class="normal">SoundTouch library Copyright &copy; Olli Parviainen 2001-2020</p>
<hr> <hr>
<h2>1. Introduction </h2> <h2>1. Introduction </h2>
<p>SoundTouch is an open-source audio processing library that allows <p>SoundTouch is an open-source audio processing library that allows
@ -33,7 +34,8 @@ same time</li>
<h3>1.1 Contact information </h3> <h3>1.1 Contact information </h3>
<p>Author email: oparviai 'at' iki.fi </p> <p>Author email: oparviai 'at' iki.fi </p>
<p>SoundTouch WWW page: <a href="http://soundtouch.surina.net">http://soundtouch.surina.net</a></p> <p>SoundTouch WWW page: <a href="http://soundtouch.surina.net">http://soundtouch.surina.net</a></p>
<p>SoundTouch git repository: <a href="https://gitlab.com/soundtouch/soundtouch.git">https://gitlab.com/soundtouch/soundtouch.git</a></p> <p>SoundTouch git repository: <a
href="https://gitlab.com/soundtouch/soundtouch.git">https://gitlab.com/soundtouch/soundtouch.git</a></p>
<hr> <hr>
<h2>2. Compiling SoundTouch</h2> <h2>2. Compiling SoundTouch</h2>
<p>Before compiling, notice that you can choose the sample data format if it's <p>Before compiling, notice that you can choose the sample data format if it's
@ -126,10 +128,8 @@ destination locations.</p>
</tbody> </tbody>
</table> </table>
<h4><b>2.2.1 Required GNU tools</b></h4> <h4><b>2.2.1 Required GNU tools</b></h4>
<p> <span style="font-weight: bold;">Bash shell</span>, <span <p> <span style="font-weight: bold;">Bash shell</span>, <span style="font-weight: bold;">GNU C++ compiler</span>,
style="font-weight: bold;">GNU C++ compiler</span>, <span <span style="font-weight: bold;">libtool</span>, <span style="font-weight: bold;">autoconf</span> and <span
style="font-weight: bold;">libtool</span>, <span
style="font-weight: bold;">autoconf</span> and <span
style="font-weight: bold;">automake</span> tools style="font-weight: bold;">automake</span> tools
are required for compiling the SoundTouch library. These are usually are required for compiling the SoundTouch library. These are usually
included with the GNU/Linux distribution, but if not, install these included with the GNU/Linux distribution, but if not, install these
@ -150,16 +150,11 @@ directly and remove the following definition:<blockquote>
<pre>#define SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS 1</pre> <pre>#define SOUNDTOUCH_ALLOW_X86_OPTIMIZATIONS 1</pre>
</blockquote> </blockquote>
<h4><b>2.2.3 Compiling Shared Library / DLL version in Cygwin</b></h4> <h4><b>2.2.3 Compiling portable Shared Library / DLL version in GNU environment</b></h4>
<p> <p> The GNU compilation does not automatically create a shared-library version of
The GNU compilation does not automatically create a shared-library version of SoundTouch (.so or .dll) that features position-independent code and C-language
SoundTouch (.so or .dll). If such is desired, then you can create it as follows api that are more suitable for cross-language development than C++ libraries.</p>
after running the usual compilation:</p> <p> Use script "make-gnu-dll-sh" to build a portable dynamic library version if such is desired.</p>
<blockquote>
<pre>g++ -shared -static -DDLL_EXPORTS -I../../include -o SoundTouch.dll \
SoundTouchDLL.cpp ../SoundTouch/.libs/libSoundTouch.a
sstrip SoundTouch.dll</pre>
</blockquote>
<h3>2.3. Building in Android</h3> <h3>2.3. Building in Android</h3>
<p>Android compilation instructions are within the <p>Android compilation instructions are within the
@ -175,21 +170,25 @@ example application that processes WAV audio files using SoundTouch library in
Android devices.</p> Android devices.</p>
<h3>2.4. Building in Mac</h3> <h3>2.4. Building in Mac</h3>
<p>Install autoconf tool as instructed in <a href="http://macappstore.org/autoconf/">http://macappstore.org/autoconf/</a>.</p> <p>Install autoconf tool as instructed in <a
href="http://macappstore.org/autoconf/">http://macappstore.org/autoconf/</a>.</p>
<p>Then, build as described above in section "Building in Gnu platforms".</p> <p>Then, build as described above in section "Building in Gnu platforms".</p>
<hr> <hr>
<h2>3. About implementation &amp; Usage tips <h3>3.1. Supported sample data formats</h3> <h2>3. About implementation &amp; Usage tips <h3>3.1. Supported sample data formats</h3>
<p>The sample data format can be chosen between 16bit signed integer <p>The sample data format can be chosen between 16bit signed integer
and 32bit floating point values. The default is 32bit floating point format, and 32bit floating point values.</p>
which will also provide slightly better sound quality over the integer format. </p> </p> The default sample type is 32bit floating point format,
which also provides better sound quality than integer format because
integer algorithms need to scale already intermediate calculation results to
avoid integer overflows. These early integer scalings can slightly degrade
output quality.</p>
<p> In Windows environment, the sample data format is chosen in file <p> In Windows environment, the sample data format is chosen in file
"STTypes.h" by choosing one of the following defines:</p> "STTypes.h" by choosing one of the following defines:</p>
<ul> <ul>
<li> <span style="font-weight: bold;">#define <li> <span style="font-weight: bold;">#define
SOUNDTOUCH_INTEGER_SAMPLES</span> for 16bit signed integer</li> SOUNDTOUCH_INTEGER_SAMPLES</span> for 16bit signed integer</li>
<li> <span style="font-weight: bold;">#define </span><span <li> <span style="font-weight: bold;">#define </span><span style="font-weight: bold;">SOUNDTOUCH_</span><span
style="font-weight: bold;">SOUNDTOUCH_</span><span
style="font-weight: bold;">FLOAT_SAMPLES</span> for 32bit floating style="font-weight: bold;">FLOAT_SAMPLES</span> for 32bit floating
point</li> point</li>
</ul> </ul>
@ -363,6 +362,29 @@ computation burden</td>
</tbody> </tbody>
</table> </table>
<h3>3.5 Performance Optimizations </h3> <h3>3.5 Performance Optimizations </h3>
<p><strong>Integer vs floating point:</strong></p>
<p>Floating point sample type is generally recommended because it provides
better sound quality.</p>
<p>However, execution speed difference between integer and floating point processing
depends on the CPU architecture. As rule of thumb,
<ul>
<li>in 32-bit x86 floating point and integer are roughly equally fast</li>
<li>in 64-bit x86/x64 floating point can be significantly faster than integer
version, because MMX integer optimizations are not available in the x64 architecture.
That depends on the compiler however, so that gcc can autovectorize integer routines
to work equally fast as floating point, where as Visual C++ (2017) does not
perform equally well and produces integer code that runs some 3x slower than
SSE-optimized floating poing code.
</li>
<li>in ARMv7 integer routines are twice as fast as floating point. Their
relative difference is roughly the same both with and without NEON; NEON
vfpu can however bring 2.4x speed improvement.
</li>
<li>in other platforms: try out if the execution time performance makes a
big difference</li>
</ul>
</p>
<p><strong>General optimizations:</strong></p> <p><strong>General optimizations:</strong></p>
<p>The time-stretch routine has a 'quick' mode that substantially <p>The time-stretch routine has a 'quick' mode that substantially
speeds up the algorithm but may slightly compromise the sound quality. speeds up the algorithm but may slightly compromise the sound quality.
@ -377,11 +399,15 @@ function with parameter id of SETTING_USE_QUICKSEEK and value
intrinsics, providing about a 3x processing speedup for x86 compatible intrinsics, providing about a 3x processing speedup for x86 compatible
processors vs. non-SIMD implementation:</p> processors vs. non-SIMD implementation:</p>
<ul> <ul>
<li> Intel MMX optimized routines are used with x86 CPUs when 16bit integer <li> MMX optimized routines are used in 32-bit x86 build when 16bit integer
sample type is used</li> sample type is used</li>
<li> Intel SSE optimized routines are used with x86 CPUs when 32bit floating <li> SSE optimized routines are used in 32- and 64-bit x86 CPUs when 32bit
point sample type is used</li> floating point sample type is used</li>
</ul> </ul>
<p>The algorithms are tuned to utilize autovectorization efficiently
also in other CPU architectures, for example ARM cpus see approx 2.4x processing
speedup when NEON SIMD support is present.
</p>
<h3>3.5 OpenMP parallel computation</h3> <h3>3.5 OpenMP parallel computation</h3>
<p>SoundTouch 1.9 onwards support running the algorithms parallel in several CPU <p>SoundTouch 1.9 onwards support running the algorithms parallel in several CPU
cores. Based on benchmark the experienced multi-core processing speed-up gain cores. Based on benchmark the experienced multi-core processing speed-up gain
@ -579,8 +605,14 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
<hr> <hr>
<h2>5. Change History</h2> <h2>5. Change History</h2>
<h3>5.1. SoundTouch library Change History </h3> <h3>5.1. SoundTouch library Change History </h3>
<p><b>2.1.3 pre:</b></p> <p><b>2.2:</b></p>
<ul> <ul>
<li>Improved source codes so that compiler can autovectorize them more effectively.
This brings remarkable improvement e.g. ARM cpus equipped with NEON vfpu: Bencmarked
2.4x improvement in execution speed in ARMv7l vs the previous SoundTouch version
for both integer and floating point sample types.
</li>
<li>Bugfix: Resolved bad sound quality when using integer sample types in non-x86 CPU</li>
<li>Bugfix: Fixed possible reading past end of array in BPM peak detection algorithm</li> <li>Bugfix: Fixed possible reading past end of array in BPM peak detection algorithm</li>
</ul> </ul>
<p><b>2.1.2:</b></p> <p><b>2.1.2:</b></p>
@ -589,7 +621,8 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
</ul> </ul>
<p><b>2.1.1:</b></p> <p><b>2.1.1:</b></p>
<ul> <ul>
<li>Bugfixes: Fixed potential buffer overwrite bugs in WavFile routines. Replaced asserts with runtime exceptions.</li> <li>Bugfixes: Fixed potential buffer overwrite bugs in WavFile routines. Replaced asserts with runtime exceptions.
</li>
<li>Android: Migrated the SoundTouch Android example to new Android Studio</li> <li>Android: Migrated the SoundTouch Android example to new Android Studio</li>
<li>Automake: unset ACLOCAL in bootstrap script in case earlier build script has set it</li> <li>Automake: unset ACLOCAL in bootstrap script in case earlier build script has set it</li>
@ -610,11 +643,13 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
</ul> </ul>
<p><b>2.0:</b></p> <p><b>2.0:</b></p>
<ul> <ul>
<li>Added functions to get initial processing latency, duration ratio between the original input and processed output tracks, and clarified reporting of input/output batch sizes</li> <li>Added functions to get initial processing latency, duration ratio between the original input and processed
output tracks, and clarified reporting of input/output batch sizes</li>
<li>Fixed issue that added brief sequence of silence to beginning of output audio</li> <li>Fixed issue that added brief sequence of silence to beginning of output audio</li>
<li>Adjusted algorithm parameters to reduce reverberating effect at tempo slowdown</li> <li>Adjusted algorithm parameters to reduce reverberating effect at tempo slowdown</li>
<li>Bugfix: Fixed a glitch that could cause negative array indexing in quick seek algorithm</li> <li>Bugfix: Fixed a glitch that could cause negative array indexing in quick seek algorithm</li>
<li>Bugfix: flush() didn't properly flush final samples from the pipeline on 2nd time in case that soundtouch object instance was recycled and used for processing a second audio stream.</li> <li>Bugfix: flush() didn't properly flush final samples from the pipeline on 2nd time in case that soundtouch
object instance was recycled and used for processing a second audio stream.</li>
<li>Bugfix: Pi value had incorrect 9th/10th decimals</li> <li>Bugfix: Pi value had incorrect 9th/10th decimals</li>
<li>Added C# example application that uses SoundTouch dll library for processing MP3 files</li> <li>Added C# example application that uses SoundTouch dll library for processing MP3 files</li>
</ul> </ul>
@ -624,8 +659,10 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
</ul> </ul>
<p><b>1.9.1:</b></p> <p><b>1.9.1:</b></p>
<ul> <ul>
<li>Improved SoundTouch::flush() function so that it returns precisely the desired amount of samples for exact output duration control</li> <li>Improved SoundTouch::flush() function so that it returns precisely the desired amount of samples for exact
<li>Redesigned quickseek algorithm for improved sound quality when using the quickseek mode. The new quickseek algorithm can find 99% as good results as the output duration control</li>
<li>Redesigned quickseek algorithm for improved sound quality when using the quickseek mode. The new quickseek
algorithm can find 99% as good results as the
default full-scan mode, while the quickseek algorithm is remarkable less default full-scan mode, while the quickseek algorithm is remarkable less
CPU intensive.</li> CPU intensive.</li>
<li>Added adaptive integer divider scaling for improved sound quality when using integer processing algorithm <li>Added adaptive integer divider scaling for improved sound quality when using integer processing algorithm
@ -633,7 +670,8 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
</ul> </ul>
<p><b>1.9:</b></p> <p><b>1.9:</b></p>
<ul> <ul>
<li>Added support for parallel computation support via OpenMP primitives for better performance in multicore systems. <li>Added support for parallel computation support via OpenMP primitives for better performance in multicore
systems.
Benchmarks show that achieved parallel processing speedup improvement Benchmarks show that achieved parallel processing speedup improvement
typically range from +30% (x86 dual-core) to +180% (ARM quad-core). The typically range from +30% (x86 dual-core) to +180% (ARM quad-core). The
OpenMP optimizations are disabled by default, see OpenMP notes above in this OpenMP optimizations are disabled by default, see OpenMP notes above in this
@ -911,6 +949,7 @@ submitted bugfixes:</p>
<li> Tyson Smith</li> <li> Tyson Smith</li>
<li> John Stumpo</li> <li> John Stumpo</li>
<li> Mario di Vece</li> <li> Mario di Vece</li>
<li> Rémi Verschelde</li>
<li> Katja Vetter</li> <li> Katja Vetter</li>
<li> Wu Q.</li> <li> Wu Q.</li>
</ul> </ul>
@ -932,6 +971,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
<p>---</p> <p>---</p>
<p>commercial license alternative also available, contact author for details.</p> <p>commercial license alternative also available, contact author for details.</p>
<hr> <hr>
<p><i>README.html file updated in October-2019</i></p>
</body> </body>
</html> </html>

View File

@ -15,7 +15,7 @@ dnl this program; if not, write to the Free Software Foundation, Inc., 59 Temple
dnl Place - Suite 330, Boston, MA 02111-1307, USA dnl Place - Suite 330, Boston, MA 02111-1307, USA
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_INIT([SoundTouch], [2.1.3], [http://www.surina.net/soundtouch]) AC_INIT([SoundTouch], [2.2], [http://www.surina.net/soundtouch])
dnl Default to libSoundTouch.so.$LIB_SONAME.0.0 dnl Default to libSoundTouch.so.$LIB_SONAME.0.0
LIB_SONAME=1 LIB_SONAME=1
AC_SUBST(LIB_SONAME) AC_SUBST(LIB_SONAME)

View File

@ -72,10 +72,10 @@ namespace soundtouch
{ {
/// Soundtouch library version string /// Soundtouch library version string
#define SOUNDTOUCH_VERSION "2.1.3" #define SOUNDTOUCH_VERSION "2.2"
/// SoundTouch library version id /// SoundTouch library version id
#define SOUNDTOUCH_VERSION_ID (20103) #define SOUNDTOUCH_VERSION_ID (20200)
// //
// Available setting IDs for the 'setSetting' & 'get_setting' functions: // Available setting IDs for the 'setSetting' & 'get_setting' functions:

View File

@ -9,7 +9,7 @@ same time
Visit [SoundTouch website](https://www.surina.net/soundtouch) and see the [README file](README.html) for more information and audio examples. Visit [SoundTouch website](https://www.surina.net/soundtouch) and see the [README file](README.html) for more information and audio examples.
### The latest stable release is 2.1.2 ### The latest stable release is 2.2
## Example ## Example

View File

@ -39,7 +39,7 @@ LOCAL_LDLIBS += -llog
# Custom Flags: # Custom Flags:
# -fvisibility=hidden : don't export all symbols # -fvisibility=hidden : don't export all symbols
LOCAL_CFLAGS += -fvisibility=hidden -fdata-sections -ffunction-sections LOCAL_CFLAGS += -fvisibility=hidden -fdata-sections -ffunction-sections -ffast-math
# OpenMP mode : enable these flags to enable using OpenMP for parallel computation # OpenMP mode : enable these flags to enable using OpenMP for parallel computation
#LOCAL_CFLAGS += -fopenmp #LOCAL_CFLAGS += -fopenmp

View File

@ -51,8 +51,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,1,2,0 FILEVERSION 2,2,0,0
PRODUCTVERSION 2,1,2,0 PRODUCTVERSION 2,2,0,0
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -69,12 +69,12 @@ BEGIN
BEGIN BEGIN
VALUE "Comments", "SoundTouch Library licensed for 3rd party applications subject to LGPL license v2.1. Visit http://www.surina.net/soundtouch for more information about the SoundTouch library." VALUE "Comments", "SoundTouch Library licensed for 3rd party applications subject to LGPL license v2.1. Visit http://www.surina.net/soundtouch for more information about the SoundTouch library."
VALUE "FileDescription", "SoundTouch Dynamic Link Library" VALUE "FileDescription", "SoundTouch Dynamic Link Library"
VALUE "FileVersion", "2.1.2.0" VALUE "FileVersion", "2.2.0.0"
VALUE "InternalName", "SoundTouch" VALUE "InternalName", "SoundTouch"
VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2018" VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2020"
VALUE "OriginalFilename", "SoundTouch.dll" VALUE "OriginalFilename", "SoundTouch.dll"
VALUE "ProductName", " SoundTouch Dynamic Link Library" VALUE "ProductName", " SoundTouch Dynamic Link Library"
VALUE "ProductVersion", "2.1.2.0" VALUE "ProductVersion", "2.2.0.0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"