/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Rubber Band Library
    An audio time-stretching and pitch-shifting library.
    Copyright 2007-2023 Particular Programs Ltd.

    This program 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.  See the file
    COPYING included with this distribution for more information.

    Alternatively, if you have a valid commercial licence for the
    Rubber Band Library obtained by agreement with the copyright
    holders, you may redistribute and/or modify it under the terms
    described in that licence.

    If you wish to distribute code using the Rubber Band Library
    under terms other than those of the GNU General Public License,
    you must obtain a valid commercial licence before doing so.
*/

/*
    RubberBandSingle.cpp
 
    This is a single-file compilation unit for Rubber Band Library.
  
    To use the library in your project without building it separately,
    include in your code either rubberband/RubberBandStretcher.h for
    use in C++ or rubberband/rubberband-c.h if you need the C
    interface, then add this single C++ source file to your build.
 
    Don't move this file into your source tree - keep it in the same
    place relative to the other Rubber Band code, so that the relative
    include paths work, and just add it to your list of build files.
  
    This produces a build using the built-in FFT and resampler
    implementations, except on Apple platforms, where the vDSP FFT is
    used (and where you will need the Accelerate framework when
    linking). It should work correctly on any supported platform, but
    may not be the fastest configuration available. For further
    customisation, consider using the full build system to make a
    standalone library.
*/

#ifndef ALREADY_CONFIGURED

#define USE_BQRESAMPLER 1

#define NO_TIMING 1
#define NO_THREADING 1
#define NO_THREAD_CHECKS 1

#if defined(__APPLE__)
#define HAVE_VDSP 1
#else
#define USE_BUILTIN_FFT 1
#endif

#endif

#include "../src/faster/AudioCurveCalculator.cpp"
#include "../src/faster/CompoundAudioCurve.cpp"
#include "../src/faster/HighFrequencyAudioCurve.cpp"
#include "../src/faster/SilentAudioCurve.cpp"
#include "../src/faster/PercussiveAudioCurve.cpp"
#include "../src/common/Log.cpp"
#include "../src/common/Profiler.cpp"
#include "../src/common/FFT.cpp"
#include "../src/common/Resampler.cpp"
#include "../src/common/BQResampler.cpp"
#include "../src/common/Allocators.cpp"
#include "../src/common/StretchCalculator.cpp"
#include "../src/common/sysutils.cpp"
#include "../src/common/mathmisc.cpp"
#include "../src/common/Thread.cpp"
#include "../src/faster/StretcherChannelData.cpp"
#include "../src/faster/R2Stretcher.cpp"
#include "../src/faster/StretcherProcess.cpp"
#include "../src/finer/R3Stretcher.cpp"

#include "../src/RubberBandStretcher.cpp"
#include "../src/rubberband-c.cpp"

