Ivan Mahonin da847a
#pragma once
Ivan Mahonin da847a
Ivan Mahonin da847a
#ifndef MODIFIERJITTER_INCLUDED
Ivan Mahonin da847a
#define MODIFIERJITTER_INCLUDED
Ivan Mahonin da847a
Ivan Mahonin da847a
// TnzTools includes
Ivan Mahonin da847a
#include <tools/inputmanager.h>
Ivan Mahonin da847a
Ivan Mahonin da847a
#undef DVAPI
Ivan Mahonin da847a
#undef DVVAR
Ivan Mahonin da847a
#ifdef TNZTOOLS_EXPORTS
Ivan Mahonin da847a
#define DVAPI DV_EXPORT_API
Ivan Mahonin da847a
#define DVVAR DV_EXPORT_VAR
Ivan Mahonin da847a
#else
Ivan Mahonin da847a
#define DVAPI DV_IMPORT_API
Ivan Mahonin da847a
#define DVVAR DV_IMPORT_VAR
Ivan Mahonin da847a
#endif
Ivan Mahonin da847a
Ivan Mahonin da847a
//===================================================================
Ivan Mahonin da847a
Ivan Mahonin da847a
//*****************************************************************************************
Ivan Mahonin da847a
//    TModifierJitter definition
Ivan Mahonin da847a
//*****************************************************************************************
Ivan Mahonin da847a
Ivan Mahonin da847a
class DVAPI TModifierJitter : public TInputModifier {
Ivan Mahonin da847a
public:
Ivan Mahonin da847a
  typedef TSubTrackHandler Handler;
Ivan Mahonin da847a
Ivan Mahonin da847a
  class DVAPI Interpolator : public TTrackInterpolator {
Ivan Mahonin da847a
  public:
Ivan Mahonin da847a
    const unsigned int seedX;
Ivan Mahonin da847a
    const unsigned int seedY;
Ivan Mahonin da847a
    const double frequency;
Ivan Mahonin da847a
    const double amplitude;
Ivan Mahonin da847a
    Interpolator(TTrack &track, double period, double amplitude);
Ivan Mahonin da847a
    TTrackPoint interpolateFromOriginal(double originalIndex);
Ivan Mahonin da847a
    TTrackPoint interpolate(double index) override;
Ivan Mahonin da847a
  };
Ivan Mahonin da847a
Ivan Mahonin da847a
public:
Ivan Mahonin da847a
  double period;
Ivan Mahonin da847a
  double amplitude;
Ivan Mahonin da847a
  int skipFirst;
Ivan Mahonin da847a
  
Ivan Mahonin da847a
  TModifierJitter(
Ivan Mahonin da847a
    double period = 30,
Ivan Mahonin da847a
    double amplitude = 10,
Ivan Mahonin da847a
    int skipFirst = 0 );
Ivan Mahonin da847a
Ivan Mahonin da847a
  void modifyTrack(
Ivan Mahonin da847a
    const TTrack &track,
Ivan Mahonin da847a
    TTrackList &outTracks ) override;
Ivan Mahonin da847a
  
Ivan Mahonin da847a
  void modifyTracks(
Ivan Mahonin da847a
    const TTrackList &tracks,
Ivan Mahonin da847a
    TTrackList &outTracks ) override;
Ivan Mahonin da847a
  
Ivan Mahonin da847a
  static double func(unsigned int seed, double x);
Ivan Mahonin da847a
};
Ivan Mahonin da847a
Ivan Mahonin da847a
#endif