From 29fba832a7920a04eab956b3990c50e13d8c93f9 Mon Sep 17 00:00:00 2001
From: Olli
Date: Tue, 8 Nov 2022 18:02:17 +0200
Subject: [PATCH] Update version to 2.3.2
Signed-off-by: Olli
---
CMakeLists.txt | 2 +-
README.html | 13 +-
configure.ac | 6 +-
include/SoundTouch.h | 118 +++++++++---------
readme.md | 8 +-
source/SoundStretch/Makefile.am | 18 +--
source/SoundTouchDLL/SoundTouchDLL.rc | 12 +-
.../csharp-example/Properties/AssemblyInfo.cs | 18 +--
8 files changed, 99 insertions(+), 96 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5090a90..14f23e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.1)
-project(SoundTouch VERSION 2.3.1 LANGUAGES CXX)
+project(SoundTouch VERSION 2.3.2 LANGUAGES CXX)
include(GNUInstallDirs)
diff --git a/README.html b/README.html
index 8b81f48..0630410 100644
--- a/README.html
+++ b/README.html
@@ -15,8 +15,8 @@
- SoundTouch audio processing library v2.3.1
- SoundTouch library Copyright © Olli Parviainen 2001-2021
+ SoundTouch audio processing library v2.3.2
+ SoundTouch library Copyright © Olli Parviainen 2001-2022
1. Introduction
SoundTouch is an open-source audio processing library that allows
@@ -450,7 +450,7 @@
4. SoundStretch audio processing utility
SoundStretch audio processing utility
- Copyright (c) Olli Parviainen 2002-2015
+ Copyright (c) Olli Parviainen 2002-2022
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
@@ -605,6 +605,13 @@
5. Change History
5.1. SoundTouch library Change History
+ 2.3.2:
+
+ - Improve autotools makefiles to build the `SoundTouchDLL` dynamic-link link library with
+ C-style API. This library variation is easier to import and use from other programming
+ languages than the default C++ library.
+
+
2.3.1:
- Adjusted cmake build settings and header files that cmake installs
diff --git a/configure.ac b/configure.ac
index 6db05e2..bf54882 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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.3.1],[http://www.surina.net/soundtouch])
+AC_INIT([SoundTouch],[2.3.2],[http://www.surina.net/soundtouch])
dnl Default to libSoundTouch.so.$LIB_SONAME.0.0
LIB_SONAME=1
AC_SUBST(LIB_SONAME)
@@ -31,9 +31,9 @@ AC_DISABLE_STATIC dnl This makes libtool only build shared libs
AC_LANG(C++)
-# Compiler flags. Apply -ffast-math to allow gcc autovectorization
+# Compiler flags. Apply -Ofast (implies -O3 -ffast-math) to allow gcc autovectorization
# generate effective SIMD code.
-CXXFLAGS+=" -O3 -ffast-math"
+CXXFLAGS+=" -Ofast"
# Set AR_FLAGS to avoid build warning "ar: `u' modifier ignored since `D' is the default (see `U')"
AR_FLAGS='cr'
diff --git a/include/SoundTouch.h b/include/SoundTouch.h
index 49b0306..0c22cb5 100644
--- a/include/SoundTouch.h
+++ b/include/SoundTouch.h
@@ -1,27 +1,27 @@
//////////////////////////////////////////////////////////////////////////////
///
-/// SoundTouch - main class for tempo/pitch/rate adjusting routines.
+/// SoundTouch - main class for tempo/pitch/rate adjusting routines.
///
/// Notes:
-/// - Initialize the SoundTouch object instance by setting up the sound stream
-/// parameters with functions 'setSampleRate' and 'setChannels', then set
+/// - Initialize the SoundTouch object instance by setting up the sound stream
+/// parameters with functions 'setSampleRate' and 'setChannels', then set
/// desired tempo/pitch/rate settings with the corresponding functions.
///
-/// - The SoundTouch class behaves like a first-in-first-out pipeline: The
+/// - The SoundTouch class behaves like a first-in-first-out pipeline: The
/// samples that are to be processed are fed into one of the pipe by calling
-/// function 'putSamples', while the ready processed samples can be read
+/// function 'putSamples', while the ready processed samples can be read
/// from the other end of the pipeline with function 'receiveSamples'.
-///
-/// - The SoundTouch processing classes require certain sized 'batches' of
-/// samples in order to process the sound. For this reason the classes buffer
-/// incoming samples until there are enough of samples available for
+///
+/// - The SoundTouch processing classes require certain sized 'batches' of
+/// samples in order to process the sound. For this reason the classes buffer
+/// incoming samples until there are enough of samples available for
/// processing, then they carry out the processing step and consequently
/// make the processed samples available for outputting.
-///
-/// - For the above reason, the processing routines introduce a certain
+///
+/// - For the above reason, the processing routines introduce a certain
/// 'latency' between the input and output, so that the samples input to
-/// SoundTouch may not be immediately available in the output, and neither
-/// the amount of outputtable samples may not immediately be in direct
+/// SoundTouch may not be immediately available in the output, and neither
+/// the amount of outputtable samples may not immediately be in direct
/// relationship with the amount of previously input samples.
///
/// - The tempo/pitch/rate control parameters can be altered during processing.
@@ -30,8 +30,8 @@
/// required.
///
/// - This class utilizes classes 'TDStretch' for tempo change (without modifying
-/// pitch) and 'RateTransposer' for changing the playback rate (that is, both
-/// tempo and pitch in the same ratio) of the sound. The third available control
+/// pitch) and 'RateTransposer' for changing the playback rate (that is, both
+/// tempo and pitch in the same ratio) of the sound. The third available control
/// 'pitch' (change pitch but maintain tempo) is produced by a combination of
/// combining the two other controls.
///
@@ -72,10 +72,10 @@ namespace soundtouch
{
/// Soundtouch library version string
-#define SOUNDTOUCH_VERSION "2.3.1"
+#define SOUNDTOUCH_VERSION "2.3.2"
/// SoundTouch library version id
-#define SOUNDTOUCH_VERSION_ID (20301)
+#define SOUNDTOUCH_VERSION_ID (20302)
//
// Available setting IDs for the 'setSetting' & 'get_setting' functions:
@@ -91,55 +91,55 @@ namespace soundtouch
/// quality compromising)
#define SETTING_USE_QUICKSEEK 2
-/// Time-stretch algorithm single processing sequence length in milliseconds. This determines
-/// to how long sequences the original sound is chopped in the time-stretch algorithm.
+/// Time-stretch algorithm single processing sequence length in milliseconds. This determines
+/// to how long sequences the original sound is chopped in the time-stretch algorithm.
/// See "STTypes.h" or README for more information.
#define SETTING_SEQUENCE_MS 3
-/// Time-stretch algorithm seeking window length in milliseconds for algorithm that finds the
-/// best possible overlapping location. This determines from how wide window the algorithm
-/// may look for an optimal joining location when mixing the sound sequences back together.
+/// Time-stretch algorithm seeking window length in milliseconds for algorithm that finds the
+/// best possible overlapping location. This determines from how wide window the algorithm
+/// may look for an optimal joining location when mixing the sound sequences back together.
/// See "STTypes.h" or README for more information.
#define SETTING_SEEKWINDOW_MS 4
-/// Time-stretch algorithm overlap length in milliseconds. When the chopped sound sequences
-/// are mixed back together, to form a continuous sound stream, this parameter defines over
-/// how long period the two consecutive sequences are let to overlap each other.
+/// Time-stretch algorithm overlap length in milliseconds. When the chopped sound sequences
+/// are mixed back together, to form a continuous sound stream, this parameter defines over
+/// how long period the two consecutive sequences are let to overlap each other.
/// See "STTypes.h" or README for more information.
#define SETTING_OVERLAP_MS 5
-/// Call "getSetting" with this ID to query processing sequence size in samples.
-/// This value gives approximate value of how many input samples you'll need to
+/// Call "getSetting" with this ID to query processing sequence size in samples.
+/// This value gives approximate value of how many input samples you'll need to
/// feed into SoundTouch after initial buffering to get out a new batch of
-/// output samples.
+/// output samples.
///
-/// This value does not include initial buffering at beginning of a new processing
+/// This value does not include initial buffering at beginning of a new processing
/// stream, use SETTING_INITIAL_LATENCY to get the initial buffering size.
///
-/// Notices:
+/// Notices:
/// - This is read-only parameter, i.e. setSetting ignores this parameter
-/// - This parameter value is not constant but change depending on
+/// - This parameter value is not constant but change depending on
/// tempo/pitch/rate/samplerate settings.
#define SETTING_NOMINAL_INPUT_SEQUENCE 6
-/// Call "getSetting" with this ID to query nominal average processing output
-/// size in samples. This value tells approcimate value how many output samples
+/// Call "getSetting" with this ID to query nominal average processing output
+/// size in samples. This value tells approcimate value how many output samples
/// SoundTouch outputs once it does DSP processing run for a batch of input samples.
///
-/// Notices:
+/// Notices:
/// - This is read-only parameter, i.e. setSetting ignores this parameter
-/// - This parameter value is not constant but change depending on
+/// - This parameter value is not constant but change depending on
/// tempo/pitch/rate/samplerate settings.
#define SETTING_NOMINAL_OUTPUT_SEQUENCE 7
/// Call "getSetting" with this ID to query initial processing latency, i.e.
-/// approx. how many samples you'll need to enter to SoundTouch pipeline before
-/// you can expect to get first batch of ready output samples out.
+/// approx. how many samples you'll need to enter to SoundTouch pipeline before
+/// you can expect to get first batch of ready output samples out.
///
-/// After the first output batch, you can then expect to get approx.
+/// After the first output batch, you can then expect to get approx.
/// SETTING_NOMINAL_OUTPUT_SEQUENCE ready samples out for every
/// SETTING_NOMINAL_INPUT_SEQUENCE samples that you enter into SoundTouch.
///
@@ -149,18 +149,18 @@ namespace soundtouch
/// input sequence = 4167 samples
/// output sequence = 3969 samples
///
-/// Accordingly, you can expect to feed in approx. 5509 samples at beginning of
-/// the stream, and then you'll get out the first 3969 samples. After that, for
-/// every approx. 4167 samples that you'll put in, you'll receive again approx.
+/// Accordingly, you can expect to feed in approx. 5509 samples at beginning of
+/// the stream, and then you'll get out the first 3969 samples. After that, for
+/// every approx. 4167 samples that you'll put in, you'll receive again approx.
/// 3969 samples out.
///
-/// This also means that average latency during stream processing is
-/// INITIAL_LATENCY-OUTPUT_SEQUENCE/2, in the above example case 5509-3969/2
+/// This also means that average latency during stream processing is
+/// INITIAL_LATENCY-OUTPUT_SEQUENCE/2, in the above example case 5509-3969/2
/// = 3524 samples
-///
-/// Notices:
+///
+/// Notices:
/// - This is read-only parameter, i.e. setSetting ignores this parameter
-/// - This parameter value is not constant but change depending on
+/// - This parameter value is not constant but change depending on
/// tempo/pitch/rate/samplerate settings.
#define SETTING_INITIAL_LATENCY 8
@@ -193,7 +193,7 @@ private:
/// Accumulator for how many samples in total have been read out from the processing so far
long samplesOutput;
- /// Calculates effective rate & tempo valuescfrom 'virtualRate', 'virtualTempo' and
+ /// Calculates effective rate & tempo valuescfrom 'virtualRate', 'virtualTempo' and
/// 'virtualPitch' parameters.
void calcEffectiveRateAndTempo();
@@ -237,7 +237,7 @@ public:
/// represent lower pitches, larger values higher pitch.
void setPitch(double newPitch);
- /// Sets pitch change in octaves compared to the original pitch
+ /// Sets pitch change in octaves compared to the original pitch
/// (-1.00 .. +1.00)
void setPitchOctaves(double newPitch);
@@ -253,20 +253,20 @@ public:
void setSampleRate(uint srate);
/// Get ratio between input and output audio durations, useful for calculating
- /// processed output duration: if you'll process a stream of N samples, then
+ /// processed output duration: if you'll process a stream of N samples, then
/// you can expect to get out N * getInputOutputSampleRatio() samples.
///
- /// This ratio will give accurate target duration ratio for a full audio track,
+ /// This ratio will give accurate target duration ratio for a full audio track,
/// given that the the whole track is processed with same processing parameters.
- ///
+ ///
/// If this ratio is applied to calculate intermediate offsets inside a processing
- /// stream, then this ratio is approximate and can deviate +- some tens of milliseconds
+ /// stream, then this ratio is approximate and can deviate +- some tens of milliseconds
/// from ideal offset, yet by end of the audio stream the duration ratio will become
/// exact.
///
/// Example: if processing with parameters "-tempo=15 -pitch=-3", the function
/// will return value 0.8695652... Now, if processing an audio stream whose duration
- /// is exactly one million audio samples, then you can expect the processed
+ /// is exactly one million audio samples, then you can expect the processed
/// output duration be 0.869565 * 1000000 = 869565 samples.
double getInputOutputSampleRatio();
@@ -289,8 +289,8 @@ public:
///< contains data for both channels.
) override;
- /// Output samples from beginning of the sample buffer. Copies requested samples to
- /// output buffer and removes them from the sample buffer. If there are less than
+ /// Output samples from beginning of the sample buffer. Copies requested samples to
+ /// output buffer and removes them from the sample buffer. If there are less than
/// 'numsample' samples in the buffer, returns all that available.
///
/// \return Number of samples returned.
@@ -298,8 +298,8 @@ public:
uint maxSamples ///< How many samples to receive at max.
) override;
- /// Adjusts book-keeping so that given number of samples are removed from beginning of the
- /// sample buffer without copying them anywhere.
+ /// Adjusts book-keeping so that given number of samples are removed from beginning of the
+ /// sample buffer without copying them anywhere.
///
/// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
/// with 'ptrBegin' function.
@@ -312,7 +312,7 @@ public:
/// Changes a setting controlling the processing system behaviour. See the
/// 'SETTING_...' defines for available setting ID's.
- ///
+ ///
/// \return 'true' if the setting was successfully changed
bool setSetting(int settingId, ///< Setting ID number. see SETTING_... defines.
int value ///< New setting value.
@@ -338,7 +338,7 @@ public:
/// classes 'FIFOProcessor' and 'FIFOSamplePipe')
///
/// - receiveSamples() : Use this function to receive 'ready' processed samples from SoundTouch.
- /// - numSamples() : Get number of 'ready' samples that can be received with
+ /// - numSamples() : Get number of 'ready' samples that can be received with
/// function 'receiveSamples()'
/// - isEmpty() : Returns nonzero if there aren't any 'ready' samples.
/// - clear() : Clears all samples from ready/processing buffers.
diff --git a/readme.md b/readme.md
index aa05a4b..2c3406c 100644
--- a/readme.md
+++ b/readme.md
@@ -1,10 +1,5 @@
# SoundTouch library
-## SoundTouch git repository moved to codeberg.org
-
-2021-10-14 OP: For some reason that currently is unknown to us, gitlab.com blocked soundtouch account without any prior notice, hence soundtouch repository moved to codeberg.org, hopefully a more stable and friendly home for an opensource project.
-
-
## About
SoundTouch is an open-source audio processing library that allows changing the sound tempo, pitch and playback rate parameters independently from each other:
@@ -16,7 +11,7 @@ same time
Visit [SoundTouch website](https://www.surina.net/soundtouch) and see the [README file](https://www.surina.net/soundtouch/readme.html) for more information and audio examples.
-### The latest stable release is 2.3.1
+### The latest stable release is 2.3.2
## Example
@@ -45,6 +40,7 @@ The source code package includes dynamic library import modules for C#, Java and
## Tarballs
Source code release tarballs:
+* https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz
* https://www.surina.net/soundtouch/soundtouch-2.3.1.tar.gz
* https://www.surina.net/soundtouch/soundtouch-2.3.0.tar.gz
* https://www.surina.net/soundtouch/soundtouch-2.2.0.tar.gz
diff --git a/source/SoundStretch/Makefile.am b/source/SoundStretch/Makefile.am
index 96689bd..a21d4dc 100644
--- a/source/SoundStretch/Makefile.am
+++ b/source/SoundStretch/Makefile.am
@@ -1,16 +1,16 @@
## Process this file with automake to create Makefile.in
-##
+##
## This file is part of SoundTouch, an audio processing library for pitch/time adjustments
-##
+##
## SoundTouch is free software; you can redistribute it and/or modify it under the
## terms of the GNU General Public License as published by the Free Software
## Foundation; either version 2 of the License, or (at your option) any later
## version.
-##
+##
## SoundTouch 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 PARTICULAR PURPOSE. See the GNU General Public License for more details.
-##
+##
## You should have received a copy of the GNU General Public License along with
## this program; if not, write to the Free Software Foundation, Inc., 59 Temple
## Place - Suite 330, Boston, MA 02111-1307, USA
@@ -31,20 +31,20 @@ EXTRA_DIST=soundstretch.sln soundstretch.vcxproj
## for every name listed under bin_PROGRAMS, you have a _SOURCES. This lists
## all the sources in the current directory that are used to build soundstretch.
-soundstretch_SOURCES=main.cpp RunParameters.cpp WavFile.cpp
+soundstretch_SOURCES=main.cpp RunParameters.cpp WavFile.cpp
## soundstretch_LDADD is a list of extras to pass at link time. All the objects
## created by the above soundstretch_SOURCES are automatically linked in, so here I
## list object files from other directories as well as flags passed to the
-## linker.
+## linker.
soundstretch_LDADD=../SoundTouch/libSoundTouch.la -lm
-## linker flags.
-# OP 2011-7-17 Linker flag -s disabled to prevent stripping symbols by default
+## linker flags.
+# Linker flag -s disabled to prevent stripping symbols by default
#soundstretch_LDFLAGS=-s
## additional compiler flags
soundstretch_CXXFLAGS=$(AM_CXXFLAGS)
-#clean-local:
+#clean-local:
# -rm -f additional-files-to-remove-on-make-clean
diff --git a/source/SoundTouchDLL/SoundTouchDLL.rc b/source/SoundTouchDLL/SoundTouchDLL.rc
index 3656ad2..12d8143 100644
--- a/source/SoundTouchDLL/SoundTouchDLL.rc
+++ b/source/SoundTouchDLL/SoundTouchDLL.rc
@@ -25,18 +25,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// TEXTINCLUDE
//
-1 TEXTINCLUDE
+1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
-2 TEXTINCLUDE
+2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
-3 TEXTINCLUDE
+3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
@@ -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.3.1.0"
+ VALUE "FileVersion", "2.3.2.0"
VALUE "InternalName", "SoundTouch"
- VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2021"
+ VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2022"
VALUE "OriginalFilename", "SoundTouch.dll"
VALUE "ProductName", " SoundTouch Dynamic Link Library"
- VALUE "ProductVersion", "2.3.1.0"
+ VALUE "ProductVersion", "2.3.2.0"
END
END
BLOCK "VarFileInfo"
diff --git a/source/csharp-example/Properties/AssemblyInfo.cs b/source/csharp-example/Properties/AssemblyInfo.cs
index 5074a34..1277a9d 100644
--- a/source/csharp-example/Properties/AssemblyInfo.cs
+++ b/source/csharp-example/Properties/AssemblyInfo.cs
@@ -4,7 +4,7 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
-// General Information about an assembly is controlled through the following
+// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("csharp-example")]
@@ -12,16 +12,16 @@ using System.Windows;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("csharp-example")]
-[assembly: AssemblyCopyright("Copyright Olli Parviainen © 2017")]
+[assembly: AssemblyCopyright("Copyright © Olli Parviainen")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
-//In order to begin building localizable applications, set
+//In order to begin building localizable applications, set
//CultureYouAreCodingWith in your .csproj file
//inside a . For example, if you are using US english
//in your source files, set the to en-US. Then uncomment
@@ -33,10 +33,10 @@ using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
+ //(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
+ //(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
@@ -44,11 +44,11 @@ using System.Windows;
// Version information for an assembly consists of the following four values:
//
// Major Version
-// Minor Version
+// Minor Version
// Build Number
// Revision
//
-// You can specify all the values or you can default the Build and Revision Numbers
+// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]