diff --git a/README.html b/README.html index 024cc0d..534c5fa 100644 --- a/README.html +++ b/README.html @@ -18,10 +18,10 @@
-

SoundTouch audio processing library v1.3.9 (1.4.0-pre) +

SoundTouch audio processing library v1.4.0

SoundTouch library Copyright (c) Olli -Parviainen 2002-2008

+Parviainen 2002-2009


1. Introduction

SoundTouch is an open-source audio @@ -47,47 +47,37 @@ data instead of 16bit integers. See section "sample data format" for more information.

2.1. Building in Microsoft Windows

Project files for Microsoft Visual C++ 6.0 and Visual C++ .NET are -supplied with the source code package. Please notice that SoundTouch -library uses processor-specific optimiations for Pentium III and AMD -processors that require a processor pack upgrade for -the Visual Studio 6.0 to be installed in order to support these -optimiations. The processor pack upgrade can be downloaded from +supplied with the source code package. 

+

Please notice that SoundTouch +library uses processor-specific optimizations for Pentium III and AMD +processors. Visual Studio .NET and later versions supports the required +instructions by default, but Visual Studio 6.0 requires a processor pack upgrade +to be installed in order to support these optimizations. The processor pack upgrade can be downloaded from Microsoft site at this URL:

-

-http://msdn.microsoft.com/vstudio/downloads/tools/ppack/default.aspx

+

http://msdn.microsoft.com/en-us/vstudio/aa718349.aspx

If the above URL is unavailable or removed, go to http://msdn.microsoft.com -and perform a search with keywords processor pack.

-

Visual Studio .NET supports required -instructions by default and thus doesn't require installing the -processor pack.

-

To build the binaries with Visual C++ 6.0 -compiler, either run "make-win.bat" script or open the +and perform a search with keywords "processor pack".

+

To build the binaries with Visual C++ +compiler, either run "make-win.bat" script, or open the appropriate project files in source code directories with Visual Studio. The final executable will appear under the "SoundTouch\bin" directory. If using the Visual Studio IDE instead of the make-win.bat script, directories bin and -lib have to be created manually to the SoundTouch +lib may need to be created manually to the SoundTouch package root for the final executables. The make-win.bat script creates these directories automatically.

-

Also other C++ compilers than Visual C++ can be -used, but project or makefiles then have to be adapted accordingly. -Performance optimiations are written in Visual C++ compatible -syntax, they may or may not be compatible with other compilers. If -using GCC (Gnu C Compiler) compiler package such as DJGPP or Cygwin, -please see next chapter for instructions.

2.2. Building in Gnu platforms

The SoundTouch library can be compiled in practically any platform supporting GNU compiler (GCC) tools. SoundTouch have been tested with gcc version 3.3.4., but it 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 standard C routines in other processor platforms.

To build and install the binaries, run the -following commands in SoundTouch/ directory:

+following commands in the SoundTouch/ directory:

@@ -121,14 +111,13 @@ binaries to the destination locations.

-

NOTE: At the time of release the SoundTouch package has been +

NOTE: At the release time the SoundTouch package has been tested to compile in GNU/Linux platform. However, in past it's happened that new gcc versions aren't necessarily compatible with the assembler setttings -used in the optimied routines. If you have problems getting the -SoundTouch library compiled, try the workaround of disabling the -optimiations by editing the file "include/STTypes.h" and removing +used in the optimized routines. If you have problems getting the +SoundTouch library compiled, try the workaround of disabling the optimizations by editing the file "include/STTypes.h" and removing the following definition there:

#define ALLOW_OPTIMIZATIONS 1
@@ -142,7 +131,7 @@ default is 32bit floating point.

In Windows environment, the sample data format is chosen -in file "STTypes.h" by choosing one of the following +in file "STTypes.h" by choosing one of the following defines:

3.4 Tuning the algorithm parameters

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 chosen by iterative if-then analysis (read: "trial and error") to obtain best subjective sound quality in pop/rock music @@ -236,10 +224,10 @@ processing, but in applications processing different kind of sound the default parameter set may result into a sub-optimal result.

The time-stretch algorithm default -parameter values are set by these #defines in file "TDStretch.h":

+parameter values are set by these #defines in file "TDStretch.h":

-
#define DEFAULT_SEQUENCE_MS     82
-#define DEFAULT_SEEKWINDOW_MS   28
+  
#define DEFAULT_SEQUENCE_MS     AUTOMATIC
+#define DEFAULT_SEEKWINDOW_MS   AUTOMATIC
 #define DEFAULT_OVERLAP_MS      12

These parameters affect to the time-stretch @@ -251,13 +239,16 @@ which determines the how the original sound is chopped in the time-stretch algorithm. Larger values mean fewer sequences are used in processing. In principle a larger value sounds better when slowing down the tempo, but worse when increasing the tempo and vice -versa.
+versa. 
+
+ By default, this setting value is calculated automatically according to + tempo value.

  • DEFAULT_SEEKWINDOW_MS: The seeking window default length in milliseconds is for the algorithm that seeks the best possible overlapping location. This determines from how wide a sample "window" the algorithm can use to find an optimal mixing -location when the sound sequences are to be linked back together.
    +location when the sound sequences are to be linked back together. 

    The bigger this window setting is, the higher the possibility to find a better mixing position becomes, but at the same time large values may @@ -265,6 +256,9 @@ cause a "drifting" sound artifact because neighboring sequences can be chosen at more uneven intervals. If there's a disturbing artifact that sounds as if a constant frequency was drifting around, try reducing this setting.
    +
    + By default, this setting value is calculated automatically according to + tempo value.
  • DEFAULT_OVERLAP_MS: Overlap length in milliseconds. When the sound sequences are mixed back @@ -290,9 +284,7 @@ magnitude affects... Smaller value affects... - Music - Speech - Effect in CPU burden + Effect to CPU burden @@ -306,9 +298,6 @@ better for slowing down tempo. Growing the value decelerates the Smaller value might be better for speeding up tempo. Reducing the value accelerates the "echoing" artifact when slowing down the tempo - Default value usually good - A smaller value than default -might be better Increasing the parameter value reduces computation burden @@ -322,9 +311,6 @@ large, chosen for slowing down music tempo good mixing position, but may cause a "drifting" artifact Smaller reduce possibility to find a good mixing position, but reduce the "drifting" artifact. - Default value usually good, -unless a "drifting" artifact is disturbing. - Default value usually good Increasing the parameter value increases computation burden @@ -337,15 +323,13 @@ large, chosen to suit with above parameters.   If you reduce the "sequence ms" setting, you might wish to try a smaller value. -   -   Increasing the parameter value increases computation burden -

    3.5 Performance Optimiations

    -

    General optimiations:

    +

    3.5 Performance Optimizations

    +

    General optimizations:

    The time-stretch routine has a 'quick' mode that substantially speeds up the algorithm but may degrade the sound quality by a small amount. This mode is activated by @@ -354,34 +338,55 @@ of SETTING_USE_QUICKSEEK and value "1", i.e.

    setSetting(SETTING_USE_QUICKSEEK, 1);

    -

    CPU-specific optimiations:

    +

    CPU-specific optimizations:

    +

    3.6 GNU compilation issues

    +

    Required GNU tools 

    +

    Bash shell, GNU C++ compiler, autoconf and automake tools are required to compile +the SoundTouch library. These are usually included in the Linux distribution, but if +not, install these packages. For example, in Ubuntu these can be acquired and +installed in the "build-essentials" package by the following command:

    +
    sudo apt-get install build-essential
    +

    Problems with configure script or build process 

    +

    Due differences between various GNU toolchain versions, you may get errors when running the "configure" script or building the source +codes, if your GNU tool versions are not compatible with the versions used for +preparing the SoundTouch kit. 

    +

    In such case, regenerate the configure script with your local tools by running +the "./bootstrap" script included in the SoundTouch source code +kit. After that, run the configure script and make as usually.

    +

    Compiler issues with non-x86 processors

    +

    SoundTouch works also on non-x86 processors.

    +

    However, in case that you get compiler errors when compiling for non-Intel processor, +then edit the file +"source\SoundTouch\Makefile.am" and remove the "-msse2" +flag on the AM_CXXFLAGS line:

    +
    AM_CXXFLAGS=-O3 -fcheck-new -I../../include    # Note: -msse2 flag removed!
    +

    After that, run "./bootstrap" script, and then run configure +and make again.


    4. SoundStretch audio processing utility

    SoundStretch audio processing utility
    -Copyright (c) Olli Parviainen 2002-2005

    +Copyright (c) Olli Parviainen 2002-2009

    SoundStretch is a simple command-line application that can change tempo, pitch and playback rates of WAV sound files. This program is intended primarily to -demonstrate how the "SoundTouch" library can be used to +demonstrate how the "SoundTouch" library can be used to process sound in your own program, but it can as well be used for processing sound files.

    4.1. SoundStretch Usage Instructions

    @@ -448,8 +453,8 @@ n percents (n = -95.0 .. +5000.0 %)
    -bpm=n
    - Detect the Beats-Per-Minute -(BPM) rate of the sound and adjust the tempo to meet 'n' BPMs. When this switch is + Detect the Beats-Per-Minute (BPM) rate of the sound and adjust the tempo to meet 'n' + BPMs. When this switch is applied, the "-tempo" switch is ignored. If "=n" is omitted, i.e. switch "-bpm" is used alone, then the BPM rate is estimated and displayed, but tempo not adjusted according to the BPM @@ -532,13 +537,15 @@ estimates the BPM rate:

    5. Change History

    5.1. SoundTouch library Change History

    -

    v1.3.9 (1.4.0 pre):

    +

    1.4.0:

    @@ -546,10 +553,10 @@ estimates the BPM rate: