Chris@7
|
1
|
Chris@7
|
2 #include "TipicVampPlugin.h"
|
Chris@7
|
3
|
Chris@7
|
4 Tipic::Tipic(float inputSampleRate) :
|
Chris@7
|
5 Plugin(inputSampleRate)
|
Chris@7
|
6 {
|
Chris@7
|
7 }
|
Chris@7
|
8
|
Chris@7
|
9 Tipic::~Tipic()
|
Chris@7
|
10 {
|
Chris@7
|
11 }
|
Chris@7
|
12
|
Chris@7
|
13 string
|
Chris@7
|
14 Tipic::getIdentifier() const
|
Chris@7
|
15 {
|
Chris@7
|
16 return "tipic";
|
Chris@7
|
17 }
|
Chris@7
|
18
|
Chris@7
|
19 string
|
Chris@7
|
20 Tipic::getName() const
|
Chris@7
|
21 {
|
Chris@7
|
22 return "Timbre-Invariant Pitch Chroma";
|
Chris@7
|
23 }
|
Chris@7
|
24
|
Chris@7
|
25 string
|
Chris@7
|
26 Tipic::getDescription() const
|
Chris@7
|
27 {
|
Chris@7
|
28 // Return something helpful here!
|
Chris@7
|
29 return "";
|
Chris@7
|
30 }
|
Chris@7
|
31
|
Chris@7
|
32 string
|
Chris@7
|
33 Tipic::getMaker() const
|
Chris@7
|
34 {
|
Chris@7
|
35 // Your name here
|
Chris@7
|
36 return "";
|
Chris@7
|
37 }
|
Chris@7
|
38
|
Chris@7
|
39 int
|
Chris@7
|
40 Tipic::getPluginVersion() const
|
Chris@7
|
41 {
|
Chris@7
|
42 // Increment this each time you release a version that behaves
|
Chris@7
|
43 // differently from the previous one
|
Chris@7
|
44 return 1;
|
Chris@7
|
45 }
|
Chris@7
|
46
|
Chris@7
|
47 string
|
Chris@7
|
48 Tipic::getCopyright() const
|
Chris@7
|
49 {
|
Chris@7
|
50 // This function is not ideally named. It does not necessarily
|
Chris@7
|
51 // need to say who made the plugin -- getMaker does that -- but it
|
Chris@7
|
52 // should indicate the terms under which it is distributed. For
|
Chris@7
|
53 // example, "Copyright (year). All Rights Reserved", or "GPL"
|
Chris@7
|
54 return "";
|
Chris@7
|
55 }
|
Chris@7
|
56
|
Chris@7
|
57 Tipic::InputDomain
|
Chris@7
|
58 Tipic::getInputDomain() const
|
Chris@7
|
59 {
|
Chris@7
|
60 return TimeDomain;
|
Chris@7
|
61 }
|
Chris@7
|
62
|
Chris@7
|
63 size_t
|
Chris@7
|
64 Tipic::getPreferredBlockSize() const
|
Chris@7
|
65 {
|
Chris@7
|
66 return 0; // 0 means "I can handle any block size"
|
Chris@7
|
67 }
|
Chris@7
|
68
|
Chris@7
|
69 size_t
|
Chris@7
|
70 Tipic::getPreferredStepSize() const
|
Chris@7
|
71 {
|
Chris@7
|
72 return 0; // 0 means "anything sensible"; in practice this
|
Chris@7
|
73 // means the same as the block size for TimeDomain
|
Chris@7
|
74 // plugins, or half of it for FrequencyDomain plugins
|
Chris@7
|
75 }
|
Chris@7
|
76
|
Chris@7
|
77 size_t
|
Chris@7
|
78 Tipic::getMinChannelCount() const
|
Chris@7
|
79 {
|
Chris@7
|
80 return 1;
|
Chris@7
|
81 }
|
Chris@7
|
82
|
Chris@7
|
83 size_t
|
Chris@7
|
84 Tipic::getMaxChannelCount() const
|
Chris@7
|
85 {
|
Chris@7
|
86 return 1;
|
Chris@7
|
87 }
|
Chris@7
|
88
|
Chris@7
|
89 Tipic::ParameterList
|
Chris@7
|
90 Tipic::getParameterDescriptors() const
|
Chris@7
|
91 {
|
Chris@7
|
92 ParameterList list;
|
Chris@7
|
93 return list;
|
Chris@7
|
94 }
|
Chris@7
|
95
|
Chris@7
|
96 float
|
Chris@7
|
97 Tipic::getParameter(string identifier) const
|
Chris@7
|
98 {
|
Chris@7
|
99 return 0;
|
Chris@7
|
100 }
|
Chris@7
|
101
|
Chris@7
|
102 void
|
Chris@7
|
103 Tipic::setParameter(string identifier, float value)
|
Chris@7
|
104 {
|
Chris@7
|
105 }
|
Chris@7
|
106
|
Chris@7
|
107 Tipic::ProgramList
|
Chris@7
|
108 Tipic::getPrograms() const
|
Chris@7
|
109 {
|
Chris@7
|
110 ProgramList list;
|
Chris@7
|
111 return list;
|
Chris@7
|
112 }
|
Chris@7
|
113
|
Chris@7
|
114 string
|
Chris@7
|
115 Tipic::getCurrentProgram() const
|
Chris@7
|
116 {
|
Chris@7
|
117 return ""; // no programs
|
Chris@7
|
118 }
|
Chris@7
|
119
|
Chris@7
|
120 void
|
Chris@7
|
121 Tipic::selectProgram(string name)
|
Chris@7
|
122 {
|
Chris@7
|
123 }
|
Chris@7
|
124
|
Chris@7
|
125 Tipic::OutputList
|
Chris@7
|
126 Tipic::getOutputDescriptors() const
|
Chris@7
|
127 {
|
Chris@7
|
128 OutputList list;
|
Chris@7
|
129
|
Chris@7
|
130 OutputDescriptor d;
|
Chris@7
|
131 d.identifier = "pitch";
|
Chris@7
|
132 d.name = "Pitch Features";
|
Chris@7
|
133 d.description = "";
|
Chris@7
|
134 d.unit = "";
|
Chris@7
|
135 d.hasFixedBinCount = true;
|
Chris@7
|
136 d.binCount = 88;
|
Chris@7
|
137 d.hasKnownExtents = false;
|
Chris@7
|
138 d.isQuantized = false;
|
Chris@7
|
139 d.sampleType = OutputDescriptor::FixedSampleRate;
|
Chris@7
|
140 d.sampleRate = 4410.0 / m_inputSampleRate;
|
Chris@7
|
141 d.hasDuration = false;
|
Chris@7
|
142 list.push_back(d);
|
Chris@7
|
143
|
Chris@7
|
144 return list;
|
Chris@7
|
145 }
|
Chris@7
|
146
|
Chris@7
|
147 bool
|
Chris@7
|
148 Tipic::initialise(size_t channels, size_t stepSize, size_t blockSize)
|
Chris@7
|
149 {
|
Chris@7
|
150 if (channels < getMinChannelCount() ||
|
Chris@7
|
151 channels > getMaxChannelCount()) return false;
|
Chris@7
|
152
|
Chris@7
|
153 return true;
|
Chris@7
|
154 }
|
Chris@7
|
155
|
Chris@7
|
156 void
|
Chris@7
|
157 Tipic::reset()
|
Chris@7
|
158 {
|
Chris@7
|
159 // Clear buffers, reset stored values, etc
|
Chris@7
|
160 }
|
Chris@7
|
161
|
Chris@7
|
162 Tipic::FeatureSet
|
Chris@7
|
163 Tipic::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
|
Chris@7
|
164 {
|
Chris@7
|
165 return FeatureSet();
|
Chris@7
|
166 }
|
Chris@7
|
167
|
Chris@7
|
168 Tipic::FeatureSet
|
Chris@7
|
169 Tipic::getRemainingFeatures()
|
Chris@7
|
170 {
|
Chris@7
|
171 return FeatureSet();
|
Chris@7
|
172 }
|
Chris@7
|
173
|