/***************************************************/ /*! \class LentPitShift \brief Pitch shifter effect class based on the Lent algorithm. This class implements a pitch shifter using pitch tracking and sample windowing and shifting. by Francois Germain, 2009. */ /***************************************************/ #include "LentPitShift.h" namespace stk { LentPitShift::LentPitShift( StkFloat periodRatio, int tMax ) : inputFrames(0.,tMax,1), outputFrames(0.,tMax,1), ptrFrames(0), inputPtr(0), outputPtr(0.), tMax_(tMax), periodRatio_(periodRatio), zeroFrame(0., tMax, 1) { window = new StkFloat[2*tMax_]; // Allocation of the array for the hamming window threshold_ = 0.1; // Default threshold for pitch tracking dt = new StkFloat[tMax+1]; // Allocation of the euclidian distance coefficient array. The first one is never used. cumDt = new StkFloat[tMax+1]; // Allocation of the cumulative sum array cumDt[0] = 0.; // Initialization of the first coefficient of the cumulative sum dpt = new StkFloat[tMax+1]; // Allocation of the pitch tracking function coefficient array dpt[0] = 1.; // Initialization of the first coefficient of dpt which is always the same // Initialisation of the input and output delay lines inputLine_.setMaximumDelay( 3 * tMax_ ); // The delay is choosed such as the coefficients are not read before being finalised. outputLine_.setMaximumDelay( 3 * tMax_ ); outputLine_.setDelay( 3 * tMax_ ); //Initialization of the delay line of pitch tracking coefficients //coeffLine_ = new Delay[512]; //for(int i=0;i