mirror of
https://github.com/azahar-emu/soundtouch
synced 2025-11-07 07:30:02 +01:00
Updated versions and documents for release 2.2
This commit is contained in:
parent
1d42d899ab
commit
762f56024b
115
README.html
115
README.html
@ -1,21 +1,22 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<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 name="author" content="Olli Parviainen">
|
||||
<meta name="description"
|
||||
content="Readme file for SoundTouch audio processing library">
|
||||
<meta name="description" content="Readme file for SoundTouch audio processing library">
|
||||
<style>
|
||||
body {font-family: Arial, Helvetica; }
|
||||
body {
|
||||
font-family: Arial, Helvetica;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="normal">
|
||||
<hr>
|
||||
<h1>SoundTouch audio processing library v2.1.3 pre</h1>
|
||||
<p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2019</p>
|
||||
<h1>SoundTouch audio processing library v2.2</h1>
|
||||
<p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2020</p>
|
||||
<hr>
|
||||
<h2>1. Introduction </h2>
|
||||
<p>SoundTouch is an open-source audio processing library that allows
|
||||
@ -33,7 +34,8 @@ same time</li>
|
||||
<h3>1.1 Contact information </h3>
|
||||
<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 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>
|
||||
<h2>2. Compiling SoundTouch</h2>
|
||||
<p>Before compiling, notice that you can choose the sample data format if it's
|
||||
@ -126,10 +128,8 @@ destination locations.</p>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4><b>2.2.1 Required GNU tools</b></h4>
|
||||
<p> <span style="font-weight: bold;">Bash shell</span>, <span
|
||||
style="font-weight: bold;">GNU C++ compiler</span>, <span
|
||||
style="font-weight: bold;">libtool</span>, <span
|
||||
style="font-weight: bold;">autoconf</span> and <span
|
||||
<p> <span style="font-weight: bold;">Bash shell</span>, <span style="font-weight: bold;">GNU C++ compiler</span>,
|
||||
<span style="font-weight: bold;">libtool</span>, <span style="font-weight: bold;">autoconf</span> and <span
|
||||
style="font-weight: bold;">automake</span> tools
|
||||
are required for compiling the SoundTouch library. These are usually
|
||||
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>
|
||||
</blockquote>
|
||||
|
||||
<h4><b>2.2.3 Compiling Shared Library / DLL version in Cygwin</b></h4>
|
||||
<p>
|
||||
The GNU compilation does not automatically create a shared-library version of
|
||||
SoundTouch (.so or .dll). If such is desired, then you can create it as follows
|
||||
after running the usual compilation:</p>
|
||||
<blockquote>
|
||||
<pre>g++ -shared -static -DDLL_EXPORTS -I../../include -o SoundTouch.dll \
|
||||
SoundTouchDLL.cpp ../SoundTouch/.libs/libSoundTouch.a
|
||||
sstrip SoundTouch.dll</pre>
|
||||
</blockquote>
|
||||
<h4><b>2.2.3 Compiling portable Shared Library / DLL version in GNU environment</b></h4>
|
||||
<p> The GNU compilation does not automatically create a shared-library version of
|
||||
SoundTouch (.so or .dll) that features position-independent code and C-language
|
||||
api that are more suitable for cross-language development than C++ libraries.</p>
|
||||
<p> Use script "make-gnu-dll-sh" to build a portable dynamic library version if such is desired.</p>
|
||||
|
||||
<h3>2.3. Building in Android</h3>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<hr>
|
||||
<h2>3. About implementation & Usage tips <h3>3.1. Supported sample data formats</h3>
|
||||
<p>The sample data format can be chosen between 16bit signed integer
|
||||
and 32bit floating point values. The default is 32bit floating point format,
|
||||
which will also provide slightly better sound quality over the integer format. </p>
|
||||
and 32bit floating point values.</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
|
||||
"STTypes.h" by choosing one of the following defines:</p>
|
||||
<ul>
|
||||
<li> <span style="font-weight: bold;">#define
|
||||
SOUNDTOUCH_INTEGER_SAMPLES</span> for 16bit signed integer</li>
|
||||
<li> <span style="font-weight: bold;">#define </span><span
|
||||
style="font-weight: bold;">SOUNDTOUCH_</span><span
|
||||
<li> <span style="font-weight: bold;">#define </span><span style="font-weight: bold;">SOUNDTOUCH_</span><span
|
||||
style="font-weight: bold;">FLOAT_SAMPLES</span> for 32bit floating
|
||||
point</li>
|
||||
</ul>
|
||||
@ -363,6 +362,29 @@ computation burden</td>
|
||||
</tbody>
|
||||
</table>
|
||||
<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>The time-stretch routine has a 'quick' mode that substantially
|
||||
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
|
||||
processors vs. non-SIMD implementation:</p>
|
||||
<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>
|
||||
<li> Intel SSE optimized routines are used with x86 CPUs when 32bit floating
|
||||
point sample type is used</li>
|
||||
<li> SSE optimized routines are used in 32- and 64-bit x86 CPUs when 32bit
|
||||
floating point sample type is used</li>
|
||||
</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>
|
||||
<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
|
||||
@ -579,8 +605,14 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
|
||||
<hr>
|
||||
<h2>5. Change History</h2>
|
||||
<h3>5.1. SoundTouch library Change History </h3>
|
||||
<p><b>2.1.3 pre:</b></p>
|
||||
<p><b>2.2:</b></p>
|
||||
<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>
|
||||
</ul>
|
||||
<p><b>2.1.2:</b></p>
|
||||
@ -589,7 +621,8 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
|
||||
</ul>
|
||||
<p><b>2.1.1:</b></p>
|
||||
<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>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>
|
||||
<p><b>2.0:</b></p>
|
||||
<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>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: 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>Added C# example application that uses SoundTouch dll library for processing MP3 files</li>
|
||||
</ul>
|
||||
@ -624,8 +659,10 @@ this corresponds to lowering the pitch by -0.318 semitones:</p>
|
||||
</ul>
|
||||
<p><b>1.9.1:</b></p>
|
||||
<ul>
|
||||
<li>Improved SoundTouch::flush() function so that it returns precisely the desired amount of samples for exact 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
|
||||
<li>Improved SoundTouch::flush() function so that it returns precisely the desired amount of samples for exact
|
||||
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
|
||||
CPU intensive.</li>
|
||||
<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>
|
||||
<p><b>1.9:</b></p>
|
||||
<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
|
||||
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
|
||||
@ -911,6 +949,7 @@ submitted bugfixes:</p>
|
||||
<li> Tyson Smith</li>
|
||||
<li> John Stumpo</li>
|
||||
<li> Mario di Vece</li>
|
||||
<li> Rémi Verschelde</li>
|
||||
<li> Katja Vetter</li>
|
||||
<li> Wu Q.</li>
|
||||
</ul>
|
||||
@ -932,6 +971,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
|
||||
<p>---</p>
|
||||
<p>commercial license alternative also available, contact author for details.</p>
|
||||
<hr>
|
||||
<p><i>README.html file updated in October-2019</i></p>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@ -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
|
||||
# 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
|
||||
LIB_SONAME=1
|
||||
AC_SUBST(LIB_SONAME)
|
||||
|
||||
@ -72,10 +72,10 @@ namespace soundtouch
|
||||
{
|
||||
|
||||
/// Soundtouch library version string
|
||||
#define SOUNDTOUCH_VERSION "2.1.3"
|
||||
#define SOUNDTOUCH_VERSION "2.2"
|
||||
|
||||
/// SoundTouch library version id
|
||||
#define SOUNDTOUCH_VERSION_ID (20103)
|
||||
#define SOUNDTOUCH_VERSION_ID (20200)
|
||||
|
||||
//
|
||||
// Available setting IDs for the 'setSetting' & 'get_setting' functions:
|
||||
|
||||
@ -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.
|
||||
|
||||
### The latest stable release is 2.1.2
|
||||
### The latest stable release is 2.2
|
||||
|
||||
## Example
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ LOCAL_LDLIBS += -llog
|
||||
|
||||
# Custom Flags:
|
||||
# -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
|
||||
#LOCAL_CFLAGS += -fopenmp
|
||||
|
||||
@ -51,8 +51,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 2,1,2,0
|
||||
PRODUCTVERSION 2,1,2,0
|
||||
FILEVERSION 2,2,0,0
|
||||
PRODUCTVERSION 2,2,0,0
|
||||
FILEFLAGSMASK 0x17L
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -69,12 +69,12 @@ 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 "FileDescription", "SoundTouch Dynamic Link Library"
|
||||
VALUE "FileVersion", "2.1.2.0"
|
||||
VALUE "FileVersion", "2.2.0.0"
|
||||
VALUE "InternalName", "SoundTouch"
|
||||
VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2018"
|
||||
VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2020"
|
||||
VALUE "OriginalFilename", "SoundTouch.dll"
|
||||
VALUE "ProductName", " SoundTouch Dynamic Link Library"
|
||||
VALUE "ProductVersion", "2.1.2.0"
|
||||
VALUE "ProductVersion", "2.2.0.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user