1 #pragma once
2 
3 #include <QObject>
4 #include <QString>
5 
6 #include "control/controlobject.h"
7 
8 class VelocityController;
9 class RateIIFilter;
10 
11 class PositionScratchController : public QObject {
12   public:
13     PositionScratchController(const QString& group);
14     virtual ~PositionScratchController();
15 
16     void process(double currentSample, double releaseRate,
17                  int iBufferSize, double baserate);
18     bool isEnabled();
19     double getRate();
20     void notifySeek(double currentSample);
21 
22   private:
23     const QString m_group;
24     ControlObject* m_pScratchEnable;
25     ControlObject* m_pScratchPosition;
26     ControlObject* m_pMasterSampleRate;
27     VelocityController* m_pVelocityController;
28     RateIIFilter* m_pRateIIFilter;
29     bool m_bScratching;
30     bool m_bEnableInertia;
31     double m_dLastPlaypos;
32     double m_dPositionDeltaSum;
33     double m_dTargetDelta;
34     double m_dStartScratchPosition;
35     double m_dRate;
36     double m_dMoveDelay;
37     double m_dMouseSampeTime;
38 };
39