//////////////////////////////////////////////////////////////////////////////
///
/// 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 
///   desired tempo/pitch/rate settings with the corresponding functions.
///
/// - 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 
///   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 
///   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 
///   '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 
///   relationship with the amount of previously input samples.
///
/// - The tempo/pitch/rate control parameters can be altered during processing.
///   Please notice though that they aren't currently protected by semaphores,
///   so in multi-thread application external semaphore protection may be
///   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' (change pitch but maintain tempo) is produced by a combination of
///   combining the two other controls.
///
/// Author        : Copyright (c) Olli Parviainen
/// Author e-mail : oparviai 'at' iki.fi
/// SoundTouch WWW: http://www.surina.net/soundtouch
///
////////////////////////////////////////////////////////////////////////////////
//
// Last changed  : $Date: 2011-09-02 19:56:11 +0100 (Fri, 02 Sep 2011) $
// File revision : $Revision: 4 $
//
// $Id: SoundTouch.cpp 131 2011-09-02 18:56:11Z oparviai $
//
////////////////////////////////////////////////////////////////////////////////
//
// License :
//
//  SoundTouch audio processing library
//  Copyright (c) Olli Parviainen
//
//  This 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.
//
//  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 PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
////////////////////////////////////////////////////////////////////////////////

/** Includes all the soundtouch source files in one go.
 */

//==============================================================================
// include soundtouch library

#if JUCE_MSVC
    #pragma warning (disable: 4127 4702)
#endif

#include "AAFilter.cpp"
#include "BPMDetect.cpp"
#include "FIFOSampleBuffer.cpp"
#include "FIRFilter.cpp"
#include "mmx_optimized.cpp"
#include "PeakFinder.cpp"
#include "RateTransposer.cpp"
#include "SoundTouch.cpp"
#include "sse_optimized.cpp"
#include "TDStretch.cpp"

#if JUCE_64BIT
    #if JUCE_WINDOWS
        #include "cpu_detect_x64_win.cpp"
    #elif JUCE_MAC || JUCE_IOS || JUCE_LINUX
        #include "cpu_detect_x64_gcc.cpp"
    #endif
#elif JUCE_32BIT || JUCE_IOS
    #if JUCE_WINDOWS
        #include "cpu_detect_x86_win.cpp"
    #elif JUCE_MAC || JUCE_IOS || JUCE_LINUX
        #include "cpu_detect_x86_gcc.cpp"
    #endif
#endif

//==============================================================================
