diff --git a/README.html b/README.html index 024cc0d..534c5fa 100644 --- a/README.html +++ b/README.html @@ -18,10 +18,10 @@
SoundTouch library Copyright (c) Olli -Parviainen 2002-2008
+Parviainen 2002-2009SoundTouch is an open-source audio @@ -47,47 +47,37 @@ data instead of 16bit integers. See section "sample data format" for more information.
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.
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: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:
- #define INTEGER_SAMPLES @@ -194,8 +183,7 @@ effects, sample rate transposing and time-stretching.
Sample rate transposing affects both the audio stream duration and pitch. It's implemented simply by converting the original audio sample stream to the desired -duration by interpolating from the original audio samples. In -SoundTouch, linear interpolation with anti-alias filtering is +duration by interpolating from the original audio samples. In SoundTouch, linear interpolation with anti-alias filtering is used. Theoretically a higher-order interpolation provide better result than 1st order linear interpolation, but in audio application linear interpolation together with anti-alias @@ -228,7 +216,7 @@ original duration but increased pitch.
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 12These 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 @@ -322,9 +311,6 @@ large, chosen for slowing down music tempo good mixing position, but may cause a "drifting" artifact @@ -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 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:
-
+- Intel MMX optimied routines are used with -compatible CPUs when 16bit integer sample type is used. MMX -optimiations are available both in Win32 and Gnu/x86 platforms. +
- Intel MMX optimized routines are used with +compatible CPUs when 16bit integer sample type is used. MMX optimizations are available both in Win32 and Gnu/x86 platforms. Compatible processors are Intel PentiumMMX and later; AMD K6-2, Athlon and later.
-- Intel SSE optimied routines are used with -compatible CPUs when floating point sample type is used. SSE -optimiations are currently implemented for Win32 platform only. +
- Intel SSE optimized routines are used with +compatible CPUs when floating point sample type is used. SSE optimizations are currently implemented for Win32 platform only. Processors compatible with SSE extension are Intel processors starting from Pentium-III, and AMD processors starting from Athlon XP.
-- AMD 3DNow! optimied routines are used with +
- AMD 3DNow! optimized routines are used with compatible CPUs when floating point sample type is used, but SSE -extension isn't supported . 3DNow! optimiations are currently -implemented for Win32 platform only. These optimiations are used in +extension isn't supported . 3DNow! optimizations are currently +implemented for Win32 platform only. These optimizations are used in AMD K6-2 and Athlon (classic) CPU's; better performing SSE routines are used with AMD processor starting from Athlon XP.
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-2009
-Copyright (c) Olli Parviainen 2002-2005SoundStretch 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=nDetect 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:- Improved sound quality by automatic calculation of time stretch algorithm + processing parameters according to tempo setting
- Moved BPM detection routines from SoundStretch application into SoundTouch library
-- Bugfixes: Using uninitialied variables, GNU build scripts, compiler errors +
- Bugfixes: Usage of uninitialied variables, GNU build scripts, compiler errors due to 'const' keyword mismatch.
-- Some source code cleanup
+- Source code cleanup
- Changed static class declaration to GCC 4.x compiler compatible syntax.
-- Enabled MMX/SSE-optimied routines also for GCC compilers. Earlier -the MMX/SSE-optimied routines were written in compiler-specific inline +
- Enabled MMX/SSE-optimized routines also for GCC compilers. Earlier +the MMX/SSE-optimized routines were written in compiler-specific inline 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.
- Set floating point as the default sample format and added switch to the GNU configure script for selecting the other sample format.
@@ -563,13 +570,13 @@ the GNU configure script for selecting the other sample format. error- Implemented separate processing routines for integer and 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)
- Fixed a bug that distorts sound if sample rate changes during the sound stream
-- Fixed a memory leak that appeared in MMX/SSE/3DNow! optimied +
- Fixed a memory leak that appeared in MMX/SSE/3DNow! optimized routines
-- Reduced redundant code pieces in MMX/SSE/3DNow! optimied +
- Reduced redundant code pieces in MMX/SSE/3DNow! optimized routines vs. the standard C routines.
- MMX routine incompatibility with new gcc compiler versions
- Other miscellaneous bug fixes
@@ -587,8 +594,7 @@ SAMPLETYPE definitions.v1.2.0:
- Added support for 32bit floating point sample -data type with SSE/3DNow! optimiations for Win32 platform (SSE/3DNow! -optimiations currently not supported in GCC environment)
+data type with SSE/3DNow! optimizations for Win32 platform (SSE/3DNow! optimizations currently not supported in GCC environment)- Replaced 'make-gcc' script for GNU environment by master Makefile
- Added time-stretch routine configurability to @@ -599,8 +605,7 @@ SoundTouch main class
- Moved SoundTouch under lesser GPL license (LGPL). This allows using SoundTouch library in programs that aren't released under GPL license.
-- Changed MMX routine organiation so that MMX -optimied routines are now implemented in classes that are derived from +
- Changed MMX routine organiation so that MMX optimized routines are now implemented in classes that are derived from the basic classes having the standard non-mmx routines.
- MMX routines to support gcc version 3.
- Replaced windows makefiles by script using the .dsw files
@@ -622,18 +627,19 @@ files.5.2. SoundStretch application Change History
-v1.3.9 (1.4.0 pre):
+1.4.0:
- Moved BPM detection routines from SoundStretch application into SoundTouch library
-- Allow using standard input/output pipes for processing
+- Allow using standard input/output pipes as audio processing input/output + streams
v1.3.0:
- Simplified accessing WAV files with floating -point sample format.
+point sample format.v1.2.1:
@@ -686,9 +692,8 @@ SoundTouch v1.3.1: Copyright (c) Olli ParviainenThis library is free software; you can redistribute it and/or modify it under the terms of the GNU -Lesser General Public License as published by the Free Software -Foundation; either version 2.1 of the License, or (at your option) -any later version.
+Lesser General Public License vesrion 2.1 as published by the Free Software +Foundation.This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A