-
Notifications
You must be signed in to change notification settings - Fork 1
/
TGEffectTremoloBar.h
73 lines (53 loc) · 1.4 KB
/
TGEffectTremoloBar.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef TG_EFFECT_TREMOLO_BAR_H
#define TG_EFFECT_TREMOLO_BAR_H
#include "TGFactory.h"
#include <list>
#define TGEffectTremoloBar_MAX_POSITION_LENGTH 12
#define TGEffectTremoloBar_MAX_VALUE_LENGTH 12
class TremoloBarPoint{
protected:
int position;
int value;
public:
TremoloBarPoint(int aPosition,int aValue){
position = aPosition;
value = aValue;
}
int getPosition() {
return position;
}
int getValue() {
return value;
}
long getTime(long duration){
return (duration * getPosition() / TGEffectTremoloBar_MAX_POSITION_LENGTH);
}
};
typedef std::list<TremoloBarPoint, dumb_allocator<TremoloBarPoint> > TremoloBarPointList;
class TGEffectTremoloBar {
public:
protected:
TremoloBarPointList points;
public:
TGEffectTremoloBar(){
}
void addPoint(int position,int value){
points.push_back(TremoloBarPoint(position,value));
}
void addPoint(TremoloBarPoint& aPoint)
{
points.push_back(aPoint);
}
TremoloBarPointList& getPoints(){
return points;
}
TGEffectTremoloBar *clone(TGFactory *factory){
TGEffectTremoloBar *effect = factory->newEffectTremoloBar();
for (TremoloBarPointList::iterator i=points.begin(); i!=points.end(); ++i)
{
effect->addPoint( *i );
}
return effect;
}
};
#endif