1
0
mirror of https://github.com/RPCS3/soundtouch.git synced 2024-11-08 20:12:27 +01:00

Updated 1.3.2 changes

This commit is contained in:
oparviai 2008-02-17 14:26:30 +00:00
parent 3ed4049f3e
commit 73e80c3f77

View File

@ -18,10 +18,10 @@
</head> </head>
<body class="normal"> <body class="normal">
<hr> <hr>
<h1>SoundTouch audio processing library v1.3.1 <h1>SoundTouch audio processing library v1.3.2pre
</h1> </h1>
<p class="normal">SoundTouch library Copyright (c) Olli <p class="normal">SoundTouch library Copyright (c) Olli
Parviainen 2002-2006 </p> Parviainen 2002-2008 </p>
<hr> <hr>
<h2>1. Introduction </h2> <h2>1. Introduction </h2>
<p>SoundTouch is an open-source audio <p>SoundTouch is an open-source audio
@ -48,10 +48,10 @@ for more information.</p>
<h3>2.1. Building in Microsoft Windows</h3> <h3>2.1. Building in Microsoft Windows</h3>
<p>Project files for Microsoft Visual C++ 6.0 and Visual C++ .NET are <p>Project files for Microsoft Visual C++ 6.0 and Visual C++ .NET are
supplied with the source code package. Please notice that SoundTouch supplied with the source code package. Please notice that SoundTouch
library uses processor-specific optimiations for Pentium III and AMD library uses processor-specific optimizations for Pentium III and AMD
processors that require a processor pack upgrade for processors that require a processor pack upgrade for
the Visual Studio 6.0 to be installed in order to support these the Visual Studio 6.0 to be installed in order to support these
optimiations. The processor pack upgrade can be downloaded from optimizations. The processor pack upgrade can be downloaded from
Microsoft site at this URL:</p> Microsoft site at this URL:</p>
<p><a <p><a
href="http://msdn.microsoft.com/vstudio/downloads/tools/ppack/default.aspx"> href="http://msdn.microsoft.com/vstudio/downloads/tools/ppack/default.aspx">
@ -74,7 +74,7 @@ creates these directories automatically.
</p> </p>
<p>Also other C++ compilers than Visual C++ can be <p>Also other C++ compilers than Visual C++ can be
used, but project or makefiles then have to be adapted accordingly. used, but project or makefiles then have to be adapted accordingly.
Performance optimiations are written in Visual C++ compatible Performance optimizations are written in Visual C++ compatible
syntax, they may or may not be compatible with other compilers. If syntax, they may or may not be compatible with other compilers. If
using GCC (Gnu C Compiler) compiler package such as DJGPP or Cygwin, using GCC (Gnu C Compiler) compiler package such as DJGPP or Cygwin,
please see next chapter for instructions. </p> please see next chapter for instructions. </p>
@ -83,7 +83,7 @@ please see next chapter for instructions. </p>
practically any platform supporting GNU compiler (GCC) tools. practically any platform supporting GNU compiler (GCC) tools.
SoundTouch have been tested with gcc version 3.3.4., but it SoundTouch have been tested with gcc version 3.3.4., but it
shouldn't be very specific about the gcc version. Assembler-level shouldn't be very specific about the gcc version. Assembler-level
performance optimiations for GNU platform are currently available in performance optimizations for GNU platform are currently available in
x86 platforms only, they are automatically disabled and replaced with x86 platforms only, they are automatically disabled and replaced with
standard C routines in other processor platforms.</p> standard C routines in other processor platforms.</p>
<p>To build and install the binaries, run the <p>To build and install the binaries, run the
@ -126,9 +126,9 @@ tested
to compile in GNU/Linux platform. However, in past it's happened that to compile in GNU/Linux platform. However, in past it's happened that
new new
gcc versions aren't necessarily compatible with the assembler setttings gcc versions aren't necessarily compatible with the assembler setttings
used in the optimied routines. <b>If you have problems getting the used in the optimized routines. <b>If you have problems getting the
SoundTouch library compiled, try the workaround of disabling the SoundTouch library compiled, try the workaround of disabling the
optimiations</b> by editing the file "include/STTypes.h" and removing optimizations</b> by editing the file "include/STTypes.h" and removing
the following definition there:</p> the following definition there:</p>
<blockquote> <blockquote>
<pre>#define ALLOW_OPTIMIZATIONS 1</pre> <pre>#define ALLOW_OPTIMIZATIONS 1</pre>
@ -167,7 +167,7 @@ to process stereo sound as two separate mono channels, this isn't
recommended because processing the channels separately would recommended because processing the channels separately would
result in losing the phase coherency between the channels, which result in losing the phase coherency between the channels, which
consequently would ruin the stereo effect.</p> consequently would ruin the stereo effect.</p>
<p>Sample rates between 8000-48000H are <p>Sample rates between 8000-48000Hz are
supported.</p> supported.</p>
<h3>3.2. Processing latency</h3> <h3>3.2. Processing latency</h3>
<p>The processing and latency constraints of <p>The processing and latency constraints of
@ -179,8 +179,8 @@ used. If the rate transposing effect alone is used, the latency
requirement requirement
is much shorter, see section 'About algorithms'.</li> is much shorter, see section 'About algorithms'.</li>
<li>Processing CD-quality sound (16bit stereo <li>Processing CD-quality sound (16bit stereo
sound with 44100H sample rate) in real-time or faster is possible sound with 44100Hz sample rate) in real-time or faster is possible
starting from processors equivalent to Intel Pentium 133Mh or better, starting from processors equivalent to Intel Pentium 133Mhz or better,
if using the "quick" processing algorithm. If not using the "quick" if using the "quick" processing algorithm. If not using the "quick"
mode or mode or
if floating point sample data are being used, several times more CPU if floating point sample data are being used, several times more CPU
@ -228,7 +228,7 @@ original duration but increased pitch.</li>
</ul> </ul>
<h3>3.4 Tuning the algorithm parameters</h3> <h3>3.4 Tuning the algorithm parameters</h3>
<p>The time-stretch algorithm has few <p>The time-stretch algorithm has few
parameters that can be tuned to optimie sound quality for parameters that can be tuned to optimize sound quality for
certain application. The current default parameters have been certain application. The current default parameters have been
chosen by iterative if-then analysis (read: "trial and error") chosen by iterative if-then analysis (read: "trial and error")
to obtain best subjective sound quality in pop/rock music to obtain best subjective sound quality in pop/rock music
@ -278,7 +278,7 @@ smaller value on this.</li>
<p>Notice that these parameters can also be <p>Notice that these parameters can also be
set during execution time with functions "<strong>TDStretch::setParameters()</strong>" set during execution time with functions "<strong>TDStretch::setParameters()</strong>"
and "<strong>SoundTouch::setSetting()</strong>".</p> and "<strong>SoundTouch::setSetting()</strong>".</p>
<p>The table below summaries how the <p>The table below summarizes how the
parameters can be adjusted for different applications:</p> parameters can be adjusted for different applications:</p>
<table border="1"> <table border="1">
<tbody> <tbody>
@ -344,8 +344,8 @@ value increases computation burden</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h3>3.5 Performance Optimiations </h3> <h3>3.5 Performance Optimizations </h3>
<p><strong>General optimiations:</strong></p> <p><strong>General optimizations:</strong></p>
<p>The time-stretch routine has a 'quick' mode <p>The time-stretch routine has a 'quick' mode
that substantially speeds up the algorithm but may degrade the that substantially speeds up the algorithm but may degrade the
sound quality by a small amount. This mode is activated by sound quality by a small amount. This mode is activated by
@ -354,22 +354,22 @@ of SETTING_USE_QUICKSEEK and value "1", i.e. </p>
<blockquote> <blockquote>
<p>setSetting(SETTING_USE_QUICKSEEK, 1);</p> <p>setSetting(SETTING_USE_QUICKSEEK, 1);</p>
</blockquote> </blockquote>
<p><strong>CPU-specific optimiations:</strong></p> <p><strong>CPU-specific optimizations:</strong></p>
<ul> <ul>
<li>Intel MMX optimied routines are used with <li>Intel MMX optimized routines are used with
compatible CPUs when 16bit integer sample type is used. MMX compatible CPUs when 16bit integer sample type is used. MMX
optimiations are available both in Win32 and Gnu/x86 platforms. optimizations are available both in Win32 and Gnu/x86 platforms.
Compatible processors are Intel PentiumMMX and later; AMD K6-2, Athlon Compatible processors are Intel PentiumMMX and later; AMD K6-2, Athlon
and later. </li> and later. </li>
<li>Intel SSE optimied routines are used with <li>Intel SSE optimized routines are used with
compatible CPUs when floating point sample type is used. SSE compatible CPUs when floating point sample type is used. SSE
optimiations are currently implemented for Win32 platform only. optimizations are currently implemented for Win32 platform only.
Processors compatible with SSE extension are Intel processors starting Processors compatible with SSE extension are Intel processors starting
from Pentium-III, and AMD processors starting from Athlon XP. </li> from Pentium-III, and AMD processors starting from Athlon XP. </li>
<li>AMD 3DNow! optimied routines are used with <li>AMD 3DNow! optimized routines are used with
compatible CPUs when floating point sample type is used, but SSE compatible CPUs when floating point sample type is used, but SSE
extension isn't supported . 3DNow! optimiations are currently extension isn't supported . 3DNow! optimizations are currently
implemented for Win32 platform only. These optimiations are used in implemented for Win32 platform only. These optimizations are used in
AMD K6-2 and Athlon (classic) CPU's; better performing SSE routines are AMD K6-2 and Athlon (classic) CPU's; better performing SSE routines are
used with AMD processor starting from Athlon XP. </li> used with AMD processor starting from Athlon XP. </li>
</ul> </ul>
@ -485,11 +485,11 @@ using either integer (e.g. "-tempo=123") or decimal (e.g.
<li>The &quot;-naa&quot; and/or "-quick" switches can be <li>The &quot;-naa&quot; and/or "-quick" switches can be
used to reduce CPU usage while compromising some sound quality </li> used to reduce CPU usage while compromising some sound quality </li>
<li>The BPM detection algorithm works by detecting <li>The BPM detection algorithm works by detecting
repeating low-frequency (&lt;250H) sound patterns and thus works repeating low-frequency (&lt;250Hz) sound patterns and thus works
mostly with most rock/pop music with bass or drum beat. The BPM mostly with most rock/pop music with bass or drum beat. The BPM
detection doesn't work on pieces such as classical music without detection doesn't work on pieces such as classical music without
distinct, repeating bass frequency patterns. Also pieces with varying distinct, repeating bass frequency patterns. Also pieces with varying
tempo, varying bass patterns or very complex bass patterns (ja, hiphop) may produce odd BPM readings. <br> tempo, varying bass patterns or very complex bass patterns (jazz, hiphop) may produce odd BPM readings. <br>
<br> <br>
In cases when the bass pattern drifts a bit around a nominal beat rate In cases when the bass pattern drifts a bit around a nominal beat rate
(e.g. drummer is again drunken :), the BPM algorithm may report (e.g. drummer is again drunken :), the BPM algorithm may report
@ -530,14 +530,22 @@ of the file &quot;orig.wav&quot; and adjusts the tempo to match
<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><strong>v1.3.2:</strong></p>
<ul>
<li>Bugfixes: Using uninitialized variables, GNU build scripts, compiler errors
due to 'const' keyword mismatch.</li>
<li>Some source code cleanup</li>
</ul>
<p><strong>v1.3.1: <p><strong>v1.3.1:
</strong></p> </strong></p>
<ul> <ul>
<li>Changed static class declaration to GCC 4.x compiler compatible syntax.</li> <li>Changed static class declaration to GCC 4.x compiler compatible syntax.</li>
<li>Enabled MMX/SSE-optimied routines also for GCC compilers. Earlier <li>Enabled MMX/SSE-optimized routines also for GCC compilers. Earlier
the MMX/SSE-optimied routines were written in compiler-specific inline the MMX/SSE-optimized routines were written in compiler-specific inline
assembler, now these routines are migrated to use compiler intrinsic assembler, now these routines are migrated to use compiler intrinsic
syntax which allows compiling the same MMX/SSE-optimied source code with syntax which allows compiling the same MMX/SSE-optimized source code with
both Visual C++ and GCC compilers. </li> both Visual C++ and GCC compilers. </li>
<li>Set floating point as the default sample format and added switch to <li>Set floating point as the default sample format and added switch to
the GNU configure script for selecting the other sample format.</li> the GNU configure script for selecting the other sample format.</li>
@ -551,13 +559,13 @@ the GNU configure script for selecting the other sample format.</li>
error </li> error </li>
<li>Implemented separate processing routines for integer and <li>Implemented separate processing routines for integer and
floating arithmetic to allow improvements to floating point routines floating arithmetic to allow improvements to floating point routines
(earlier used algorithms mostly optimied for integer arithmetic also (earlier used algorithms mostly optimized for integer arithmetic also
for floating point samples) </li> for floating point samples) </li>
<li>Fixed a bug that distorts sound if sample rate changes during the <li>Fixed a bug that distorts sound if sample rate changes during the
sound stream </li> sound stream </li>
<li>Fixed a memory leak that appeared in MMX/SSE/3DNow! optimied <li>Fixed a memory leak that appeared in MMX/SSE/3DNow! optimized
routines </li> routines </li>
<li>Reduced redundant code pieces in MMX/SSE/3DNow! optimied <li>Reduced redundant code pieces in MMX/SSE/3DNow! optimized
routines vs. the standard C routines.</li> routines vs. the standard C routines.</li>
<li>MMX routine incompatibility with new gcc compiler versions </li> <li>MMX routine incompatibility with new gcc compiler versions </li>
<li>Other miscellaneous bug fixes </li> <li>Other miscellaneous bug fixes </li>
@ -575,8 +583,8 @@ SAMPLETYPE definitions.</li>
<p><strong>v1.2.0: </strong></p> <p><strong>v1.2.0: </strong></p>
<ul> <ul>
<li>Added support for 32bit floating point sample <li>Added support for 32bit floating point sample
data type with SSE/3DNow! optimiations for Win32 platform (SSE/3DNow! data type with SSE/3DNow! optimizations for Win32 platform (SSE/3DNow!
optimiations currently not supported in GCC environment)</li> optimizations currently not supported in GCC environment)</li>
<li>Replaced 'make-gcc' script for GNU environment <li>Replaced 'make-gcc' script for GNU environment
by master Makefile</li> by master Makefile</li>
<li>Added time-stretch routine configurability to <li>Added time-stretch routine configurability to
@ -587,8 +595,8 @@ SoundTouch main class</li>
<ul> <ul>
<li>Moved SoundTouch under lesser GPL license (LGPL). This allows using SoundTouch library in programs that aren't <li>Moved SoundTouch under lesser GPL license (LGPL). This allows using SoundTouch library in programs that aren't
released under GPL license. </li> released under GPL license. </li>
<li>Changed MMX routine organiation so that MMX <li>Changed MMX routine organization so that MMX
optimied routines are now implemented in classes that are derived from optimized routines are now implemented in classes that are derived from
the basic classes having the standard non-mmx routines. </li> the basic classes having the standard non-mmx routines. </li>
<li>MMX routines to support gcc version 3. </li> <li>MMX routines to support gcc version 3. </li>
<li>Replaced windows makefiles by script using the .dsw files </li> <li>Replaced windows makefiles by script using the .dsw files </li>
@ -650,7 +658,17 @@ and command-line switch &quot;-bpm&quot; </li>
<li>Initial release </li> <li>Initial release </li>
</ul> </ul>
<hr> <hr>
<h2 align="left">6. LICENSE </h2> <h2 >6. Acknowledgements </h2>
<p >Kudos for these people who have submitted bugfixed since
SoundTouch v1.3.1: </p>
<ul>
<li>Arthur A.: Bugfix</li>
<li>Stanislav Brabec / Takashi Iwai</li>
<li>Jason Garland</li>
</ul>
<p >Moral greetings to all earlier contributors as well!</p>
<hr>
<h2 >7. LICENSE </h2>
<p>SoundTouch audio processing library<br> <p>SoundTouch audio processing library<br>
Copyright (c) Olli Parviainen</p> Copyright (c) Olli Parviainen</p>
<p>This library is free software; you can <p>This library is free software; you can