mirror of
https://github.com/azahar-emu/soundtouch
synced 2025-11-06 23:20:03 +01:00
Update version to 2.3.2
Signed-off-by: Olli <oparviai'at'iki.fi>
This commit is contained in:
parent
9e798c0f7f
commit
29fba832a7
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.1)
|
||||||
project(SoundTouch VERSION 2.3.1 LANGUAGES CXX)
|
project(SoundTouch VERSION 2.3.2 LANGUAGES CXX)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
|||||||
13
README.html
13
README.html
@ -15,8 +15,8 @@
|
|||||||
|
|
||||||
<body class="normal">
|
<body class="normal">
|
||||||
<hr>
|
<hr>
|
||||||
<h1>SoundTouch audio processing library v2.3.1</h1>
|
<h1>SoundTouch audio processing library v2.3.2</h1>
|
||||||
<p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2021</p>
|
<p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2022</p>
|
||||||
<hr>
|
<hr>
|
||||||
<h2>1. Introduction </h2>
|
<h2>1. Introduction </h2>
|
||||||
<p>SoundTouch is an open-source audio processing library that allows
|
<p>SoundTouch is an open-source audio processing library that allows
|
||||||
@ -450,7 +450,7 @@
|
|||||||
<h2><a name="SoundStretch"></a>4. SoundStretch audio processing utility
|
<h2><a name="SoundStretch"></a>4. SoundStretch audio processing utility
|
||||||
</h2>
|
</h2>
|
||||||
<p>SoundStretch audio processing utility<br>
|
<p>SoundStretch audio processing utility<br>
|
||||||
Copyright (c) Olli Parviainen 2002-2015</p>
|
Copyright (c) Olli Parviainen 2002-2022</p>
|
||||||
<p>SoundStretch is a simple command-line application that can change
|
<p>SoundStretch is a simple command-line application that can change
|
||||||
tempo, pitch and playback rates of WAV sound files. This program is
|
tempo, pitch and playback rates of WAV sound files. This program is
|
||||||
intended primarily to demonstrate how the "SoundTouch" library can be
|
intended primarily to demonstrate how the "SoundTouch" library can be
|
||||||
@ -605,6 +605,13 @@
|
|||||||
<hr>
|
<hr>
|
||||||
<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><b>2.3.2:</b></p>
|
||||||
|
<ul>
|
||||||
|
<li>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.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
<p><b>2.3.1:</b></p>
|
<p><b>2.3.1:</b></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Adjusted cmake build settings and header files that cmake installs</li>
|
<li>Adjusted cmake build settings and header files that cmake installs</li>
|
||||||
|
|||||||
@ -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
|
dnl Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
# Process this file with autoconf to produce a configure script.
|
# 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
|
dnl Default to libSoundTouch.so.$LIB_SONAME.0.0
|
||||||
LIB_SONAME=1
|
LIB_SONAME=1
|
||||||
AC_SUBST(LIB_SONAME)
|
AC_SUBST(LIB_SONAME)
|
||||||
@ -31,9 +31,9 @@ AC_DISABLE_STATIC dnl This makes libtool only build shared libs
|
|||||||
|
|
||||||
AC_LANG(C++)
|
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.
|
# 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')"
|
# Set AR_FLAGS to avoid build warning "ar: `u' modifier ignored since `D' is the default (see `U')"
|
||||||
AR_FLAGS='cr'
|
AR_FLAGS='cr'
|
||||||
|
|||||||
@ -1,27 +1,27 @@
|
|||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
///
|
///
|
||||||
/// SoundTouch - main class for tempo/pitch/rate adjusting routines.
|
/// SoundTouch - main class for tempo/pitch/rate adjusting routines.
|
||||||
///
|
///
|
||||||
/// Notes:
|
/// Notes:
|
||||||
/// - Initialize the SoundTouch object instance by setting up the sound stream
|
/// - Initialize the SoundTouch object instance by setting up the sound stream
|
||||||
/// parameters with functions 'setSampleRate' and 'setChannels', then set
|
/// parameters with functions 'setSampleRate' and 'setChannels', then set
|
||||||
/// desired tempo/pitch/rate settings with the corresponding functions.
|
/// 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
|
/// 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'.
|
/// from the other end of the pipeline with function 'receiveSamples'.
|
||||||
///
|
///
|
||||||
/// - The SoundTouch processing classes require certain sized 'batches' of
|
/// - The SoundTouch processing classes require certain sized 'batches' of
|
||||||
/// samples in order to process the sound. For this reason the classes buffer
|
/// samples in order to process the sound. For this reason the classes buffer
|
||||||
/// incoming samples until there are enough of samples available for
|
/// incoming samples until there are enough of samples available for
|
||||||
/// processing, then they carry out the processing step and consequently
|
/// processing, then they carry out the processing step and consequently
|
||||||
/// make the processed samples available for outputting.
|
/// 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
|
/// 'latency' between the input and output, so that the samples input to
|
||||||
/// SoundTouch may not be immediately available in the output, and neither
|
/// SoundTouch may not be immediately available in the output, and neither
|
||||||
/// the amount of outputtable samples may not immediately be in direct
|
/// the amount of outputtable samples may not immediately be in direct
|
||||||
/// relationship with the amount of previously input samples.
|
/// relationship with the amount of previously input samples.
|
||||||
///
|
///
|
||||||
/// - The tempo/pitch/rate control parameters can be altered during processing.
|
/// - The tempo/pitch/rate control parameters can be altered during processing.
|
||||||
@ -30,8 +30,8 @@
|
|||||||
/// required.
|
/// required.
|
||||||
///
|
///
|
||||||
/// - This class utilizes classes 'TDStretch' for tempo change (without modifying
|
/// - This class utilizes classes 'TDStretch' for tempo change (without modifying
|
||||||
/// pitch) and 'RateTransposer' for changing the playback rate (that is, both
|
/// 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
|
/// 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
|
/// 'pitch' (change pitch but maintain tempo) is produced by a combination of
|
||||||
/// combining the two other controls.
|
/// combining the two other controls.
|
||||||
///
|
///
|
||||||
@ -72,10 +72,10 @@ namespace soundtouch
|
|||||||
{
|
{
|
||||||
|
|
||||||
/// Soundtouch library version string
|
/// Soundtouch library version string
|
||||||
#define SOUNDTOUCH_VERSION "2.3.1"
|
#define SOUNDTOUCH_VERSION "2.3.2"
|
||||||
|
|
||||||
/// SoundTouch library version id
|
/// SoundTouch library version id
|
||||||
#define SOUNDTOUCH_VERSION_ID (20301)
|
#define SOUNDTOUCH_VERSION_ID (20302)
|
||||||
|
|
||||||
//
|
//
|
||||||
// Available setting IDs for the 'setSetting' & 'get_setting' functions:
|
// Available setting IDs for the 'setSetting' & 'get_setting' functions:
|
||||||
@ -91,55 +91,55 @@ namespace soundtouch
|
|||||||
/// quality compromising)
|
/// quality compromising)
|
||||||
#define SETTING_USE_QUICKSEEK 2
|
#define SETTING_USE_QUICKSEEK 2
|
||||||
|
|
||||||
/// Time-stretch algorithm single processing sequence length in milliseconds. This determines
|
/// 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.
|
/// to how long sequences the original sound is chopped in the time-stretch algorithm.
|
||||||
/// See "STTypes.h" or README for more information.
|
/// See "STTypes.h" or README for more information.
|
||||||
#define SETTING_SEQUENCE_MS 3
|
#define SETTING_SEQUENCE_MS 3
|
||||||
|
|
||||||
/// Time-stretch algorithm seeking window length in milliseconds for algorithm that finds the
|
/// 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
|
/// 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.
|
/// may look for an optimal joining location when mixing the sound sequences back together.
|
||||||
/// See "STTypes.h" or README for more information.
|
/// See "STTypes.h" or README for more information.
|
||||||
#define SETTING_SEEKWINDOW_MS 4
|
#define SETTING_SEEKWINDOW_MS 4
|
||||||
|
|
||||||
/// Time-stretch algorithm overlap length in milliseconds. When the chopped sound sequences
|
/// 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
|
/// 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.
|
/// how long period the two consecutive sequences are let to overlap each other.
|
||||||
/// See "STTypes.h" or README for more information.
|
/// See "STTypes.h" or README for more information.
|
||||||
#define SETTING_OVERLAP_MS 5
|
#define SETTING_OVERLAP_MS 5
|
||||||
|
|
||||||
|
|
||||||
/// Call "getSetting" with this ID to query processing sequence size in samples.
|
/// 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
|
/// 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
|
/// 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.
|
/// 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 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.
|
/// tempo/pitch/rate/samplerate settings.
|
||||||
#define SETTING_NOMINAL_INPUT_SEQUENCE 6
|
#define SETTING_NOMINAL_INPUT_SEQUENCE 6
|
||||||
|
|
||||||
|
|
||||||
/// Call "getSetting" with this ID to query nominal average processing output
|
/// Call "getSetting" with this ID to query nominal average processing output
|
||||||
/// size in samples. This value tells approcimate value how many output samples
|
/// 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.
|
/// 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 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.
|
/// tempo/pitch/rate/samplerate settings.
|
||||||
#define SETTING_NOMINAL_OUTPUT_SEQUENCE 7
|
#define SETTING_NOMINAL_OUTPUT_SEQUENCE 7
|
||||||
|
|
||||||
|
|
||||||
/// Call "getSetting" with this ID to query initial processing latency, i.e.
|
/// 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
|
/// 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.
|
/// 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_OUTPUT_SEQUENCE ready samples out for every
|
||||||
/// SETTING_NOMINAL_INPUT_SEQUENCE samples that you enter into SoundTouch.
|
/// SETTING_NOMINAL_INPUT_SEQUENCE samples that you enter into SoundTouch.
|
||||||
///
|
///
|
||||||
@ -149,18 +149,18 @@ namespace soundtouch
|
|||||||
/// input sequence = 4167 samples
|
/// input sequence = 4167 samples
|
||||||
/// output sequence = 3969 samples
|
/// output sequence = 3969 samples
|
||||||
///
|
///
|
||||||
/// Accordingly, you can expect to feed in approx. 5509 samples at beginning of
|
/// 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
|
/// 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.
|
/// every approx. 4167 samples that you'll put in, you'll receive again approx.
|
||||||
/// 3969 samples out.
|
/// 3969 samples out.
|
||||||
///
|
///
|
||||||
/// This also means that average latency during stream processing is
|
/// This also means that average latency during stream processing is
|
||||||
/// INITIAL_LATENCY-OUTPUT_SEQUENCE/2, in the above example case 5509-3969/2
|
/// INITIAL_LATENCY-OUTPUT_SEQUENCE/2, in the above example case 5509-3969/2
|
||||||
/// = 3524 samples
|
/// = 3524 samples
|
||||||
///
|
///
|
||||||
/// Notices:
|
/// Notices:
|
||||||
/// - This is read-only parameter, i.e. setSetting ignores this parameter
|
/// - 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.
|
/// tempo/pitch/rate/samplerate settings.
|
||||||
#define SETTING_INITIAL_LATENCY 8
|
#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
|
/// Accumulator for how many samples in total have been read out from the processing so far
|
||||||
long samplesOutput;
|
long samplesOutput;
|
||||||
|
|
||||||
/// Calculates effective rate & tempo valuescfrom 'virtualRate', 'virtualTempo' and
|
/// Calculates effective rate & tempo valuescfrom 'virtualRate', 'virtualTempo' and
|
||||||
/// 'virtualPitch' parameters.
|
/// 'virtualPitch' parameters.
|
||||||
void calcEffectiveRateAndTempo();
|
void calcEffectiveRateAndTempo();
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ public:
|
|||||||
/// represent lower pitches, larger values higher pitch.
|
/// represent lower pitches, larger values higher pitch.
|
||||||
void setPitch(double newPitch);
|
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)
|
/// (-1.00 .. +1.00)
|
||||||
void setPitchOctaves(double newPitch);
|
void setPitchOctaves(double newPitch);
|
||||||
|
|
||||||
@ -253,20 +253,20 @@ public:
|
|||||||
void setSampleRate(uint srate);
|
void setSampleRate(uint srate);
|
||||||
|
|
||||||
/// Get ratio between input and output audio durations, useful for calculating
|
/// 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.
|
/// 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.
|
/// given that the the whole track is processed with same processing parameters.
|
||||||
///
|
///
|
||||||
/// If this ratio is applied to calculate intermediate offsets inside a processing
|
/// 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
|
/// from ideal offset, yet by end of the audio stream the duration ratio will become
|
||||||
/// exact.
|
/// exact.
|
||||||
///
|
///
|
||||||
/// Example: if processing with parameters "-tempo=15 -pitch=-3", the function
|
/// Example: if processing with parameters "-tempo=15 -pitch=-3", the function
|
||||||
/// will return value 0.8695652... Now, if processing an audio stream whose duration
|
/// 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.
|
/// output duration be 0.869565 * 1000000 = 869565 samples.
|
||||||
double getInputOutputSampleRatio();
|
double getInputOutputSampleRatio();
|
||||||
|
|
||||||
@ -289,8 +289,8 @@ public:
|
|||||||
///< contains data for both channels.
|
///< contains data for both channels.
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
/// Output samples from beginning of the sample buffer. Copies requested samples to
|
/// 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 buffer and removes them from the sample buffer. If there are less than
|
||||||
/// 'numsample' samples in the buffer, returns all that available.
|
/// 'numsample' samples in the buffer, returns all that available.
|
||||||
///
|
///
|
||||||
/// \return Number of samples returned.
|
/// \return Number of samples returned.
|
||||||
@ -298,8 +298,8 @@ public:
|
|||||||
uint maxSamples ///< How many samples to receive at max.
|
uint maxSamples ///< How many samples to receive at max.
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
/// Adjusts book-keeping so that given number of samples are removed from beginning of the
|
/// Adjusts book-keeping so that given number of samples are removed from beginning of the
|
||||||
/// sample buffer without copying them anywhere.
|
/// sample buffer without copying them anywhere.
|
||||||
///
|
///
|
||||||
/// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
|
/// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
|
||||||
/// with 'ptrBegin' function.
|
/// with 'ptrBegin' function.
|
||||||
@ -312,7 +312,7 @@ public:
|
|||||||
|
|
||||||
/// Changes a setting controlling the processing system behaviour. See the
|
/// Changes a setting controlling the processing system behaviour. See the
|
||||||
/// 'SETTING_...' defines for available setting ID's.
|
/// 'SETTING_...' defines for available setting ID's.
|
||||||
///
|
///
|
||||||
/// \return 'true' if the setting was successfully changed
|
/// \return 'true' if the setting was successfully changed
|
||||||
bool setSetting(int settingId, ///< Setting ID number. see SETTING_... defines.
|
bool setSetting(int settingId, ///< Setting ID number. see SETTING_... defines.
|
||||||
int value ///< New setting value.
|
int value ///< New setting value.
|
||||||
@ -338,7 +338,7 @@ public:
|
|||||||
/// classes 'FIFOProcessor' and 'FIFOSamplePipe')
|
/// classes 'FIFOProcessor' and 'FIFOSamplePipe')
|
||||||
///
|
///
|
||||||
/// - receiveSamples() : Use this function to receive 'ready' processed samples from SoundTouch.
|
/// - 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()'
|
/// function 'receiveSamples()'
|
||||||
/// - isEmpty() : Returns nonzero if there aren't any 'ready' samples.
|
/// - isEmpty() : Returns nonzero if there aren't any 'ready' samples.
|
||||||
/// - clear() : Clears all samples from ready/processing buffers.
|
/// - clear() : Clears all samples from ready/processing buffers.
|
||||||
|
|||||||
@ -1,10 +1,5 @@
|
|||||||
# SoundTouch library
|
# 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
|
## About
|
||||||
|
|
||||||
SoundTouch is an open-source audio processing library that allows changing the sound tempo, pitch and playback rate parameters independently from each other:
|
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.
|
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
|
## Example
|
||||||
|
|
||||||
@ -45,6 +40,7 @@ The source code package includes dynamic library import modules for C#, Java and
|
|||||||
## Tarballs
|
## Tarballs
|
||||||
|
|
||||||
Source code release 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.1.tar.gz
|
||||||
* https://www.surina.net/soundtouch/soundtouch-2.3.0.tar.gz
|
* https://www.surina.net/soundtouch/soundtouch-2.3.0.tar.gz
|
||||||
* https://www.surina.net/soundtouch/soundtouch-2.2.0.tar.gz
|
* https://www.surina.net/soundtouch/soundtouch-2.2.0.tar.gz
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
## Process this file with automake to create Makefile.in
|
## Process this file with automake to create Makefile.in
|
||||||
##
|
##
|
||||||
## This file is part of SoundTouch, an audio processing library for pitch/time adjustments
|
## 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
|
## 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
|
## 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
|
## Foundation; either version 2 of the License, or (at your option) any later
|
||||||
## version.
|
## version.
|
||||||
##
|
##
|
||||||
## SoundTouch is distributed in the hope that it will be useful, but WITHOUT ANY
|
## 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
|
## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
## A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
## 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
|
## 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
|
## this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||||
## Place - Suite 330, Boston, MA 02111-1307, USA
|
## 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 <prog>_SOURCES. This lists
|
## for every name listed under bin_PROGRAMS, you have a <prog>_SOURCES. This lists
|
||||||
## all the sources in the current directory that are used to build soundstretch.
|
## 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
|
## 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
|
## 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
|
## list object files from other directories as well as flags passed to the
|
||||||
## linker.
|
## linker.
|
||||||
soundstretch_LDADD=../SoundTouch/libSoundTouch.la -lm
|
soundstretch_LDADD=../SoundTouch/libSoundTouch.la -lm
|
||||||
|
|
||||||
## linker flags.
|
## linker flags.
|
||||||
# OP 2011-7-17 Linker flag -s disabled to prevent stripping symbols by default
|
# Linker flag -s disabled to prevent stripping symbols by default
|
||||||
#soundstretch_LDFLAGS=-s
|
#soundstretch_LDFLAGS=-s
|
||||||
|
|
||||||
## additional compiler flags
|
## additional compiler flags
|
||||||
soundstretch_CXXFLAGS=$(AM_CXXFLAGS)
|
soundstretch_CXXFLAGS=$(AM_CXXFLAGS)
|
||||||
|
|
||||||
#clean-local:
|
#clean-local:
|
||||||
# -rm -f additional-files-to-remove-on-make-clean
|
# -rm -f additional-files-to-remove-on-make-clean
|
||||||
|
|||||||
@ -25,18 +25,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|||||||
// TEXTINCLUDE
|
// TEXTINCLUDE
|
||||||
//
|
//
|
||||||
|
|
||||||
1 TEXTINCLUDE
|
1 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"resource.h\0"
|
"resource.h\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
2 TEXTINCLUDE
|
2 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"#include ""afxres.h""\r\n"
|
"#include ""afxres.h""\r\n"
|
||||||
"\0"
|
"\0"
|
||||||
END
|
END
|
||||||
|
|
||||||
3 TEXTINCLUDE
|
3 TEXTINCLUDE
|
||||||
BEGIN
|
BEGIN
|
||||||
"\r\n"
|
"\r\n"
|
||||||
"\0"
|
"\0"
|
||||||
@ -69,12 +69,12 @@ BEGIN
|
|||||||
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 "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 "FileDescription", "SoundTouch Dynamic Link Library"
|
||||||
VALUE "FileVersion", "2.3.1.0"
|
VALUE "FileVersion", "2.3.2.0"
|
||||||
VALUE "InternalName", "SoundTouch"
|
VALUE "InternalName", "SoundTouch"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2021"
|
VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2022"
|
||||||
VALUE "OriginalFilename", "SoundTouch.dll"
|
VALUE "OriginalFilename", "SoundTouch.dll"
|
||||||
VALUE "ProductName", " SoundTouch Dynamic Link Library"
|
VALUE "ProductName", " SoundTouch Dynamic Link Library"
|
||||||
VALUE "ProductVersion", "2.3.1.0"
|
VALUE "ProductVersion", "2.3.2.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|||||||
@ -4,7 +4,7 @@ using System.Runtime.CompilerServices;
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows;
|
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
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("csharp-example")]
|
[assembly: AssemblyTitle("csharp-example")]
|
||||||
@ -12,16 +12,16 @@ using System.Windows;
|
|||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("csharp-example")]
|
[assembly: AssemblyProduct("csharp-example")]
|
||||||
[assembly: AssemblyCopyright("Copyright Olli Parviainen © 2017")]
|
[assembly: AssemblyCopyright("Copyright © Olli Parviainen")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
//In order to begin building localizable applications, set
|
//In order to begin building localizable applications, set
|
||||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||||
//inside a <PropertyGroup>. For example, if you are using US english
|
//inside a <PropertyGroup>. For example, if you are using US english
|
||||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||||
@ -33,10 +33,10 @@ using System.Windows;
|
|||||||
|
|
||||||
[assembly: ThemeInfo(
|
[assembly: ThemeInfo(
|
||||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
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)
|
// or application resource dictionaries)
|
||||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
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)
|
// 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:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// 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:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user