Chris@0
|
1
|
Chris@0
|
2 #include "TuningDifference.h"
|
Chris@0
|
3
|
Chris@0
|
4
|
Chris@0
|
5 TuningDifference::TuningDifference(float inputSampleRate) :
|
Chris@0
|
6 Plugin(inputSampleRate)
|
Chris@0
|
7 {
|
Chris@0
|
8 }
|
Chris@0
|
9
|
Chris@0
|
10 TuningDifference::~TuningDifference()
|
Chris@0
|
11 {
|
Chris@0
|
12 }
|
Chris@0
|
13
|
Chris@0
|
14 string
|
Chris@0
|
15 TuningDifference::getIdentifier() const
|
Chris@0
|
16 {
|
Chris@0
|
17 return "myplugin";
|
Chris@0
|
18 }
|
Chris@0
|
19
|
Chris@0
|
20 string
|
Chris@0
|
21 TuningDifference::getName() const
|
Chris@0
|
22 {
|
Chris@0
|
23 return "My Plugin";
|
Chris@0
|
24 }
|
Chris@0
|
25
|
Chris@0
|
26 string
|
Chris@0
|
27 TuningDifference::getDescription() const
|
Chris@0
|
28 {
|
Chris@0
|
29 // Return something helpful here!
|
Chris@0
|
30 return "";
|
Chris@0
|
31 }
|
Chris@0
|
32
|
Chris@0
|
33 string
|
Chris@0
|
34 TuningDifference::getMaker() const
|
Chris@0
|
35 {
|
Chris@0
|
36 // Your name here
|
Chris@0
|
37 return "";
|
Chris@0
|
38 }
|
Chris@0
|
39
|
Chris@0
|
40 int
|
Chris@0
|
41 TuningDifference::getPluginVersion() const
|
Chris@0
|
42 {
|
Chris@0
|
43 // Increment this each time you release a version that behaves
|
Chris@0
|
44 // differently from the previous one
|
Chris@0
|
45 return 1;
|
Chris@0
|
46 }
|
Chris@0
|
47
|
Chris@0
|
48 string
|
Chris@0
|
49 TuningDifference::getCopyright() const
|
Chris@0
|
50 {
|
Chris@0
|
51 // This function is not ideally named. It does not necessarily
|
Chris@0
|
52 // need to say who made the plugin -- getMaker does that -- but it
|
Chris@0
|
53 // should indicate the terms under which it is distributed. For
|
Chris@0
|
54 // example, "Copyright (year). All Rights Reserved", or "GPL"
|
Chris@0
|
55 return "";
|
Chris@0
|
56 }
|
Chris@0
|
57
|
Chris@0
|
58 TuningDifference::InputDomain
|
Chris@0
|
59 TuningDifference::getInputDomain() const
|
Chris@0
|
60 {
|
Chris@0
|
61 return TimeDomain;
|
Chris@0
|
62 }
|
Chris@0
|
63
|
Chris@0
|
64 size_t
|
Chris@0
|
65 TuningDifference::getPreferredBlockSize() const
|
Chris@0
|
66 {
|
Chris@0
|
67 return 0; // 0 means "I can handle any block size"
|
Chris@0
|
68 }
|
Chris@0
|
69
|
Chris@0
|
70 size_t
|
Chris@0
|
71 TuningDifference::getPreferredStepSize() const
|
Chris@0
|
72 {
|
Chris@0
|
73 return 0; // 0 means "anything sensible"; in practice this
|
Chris@0
|
74 // means the same as the block size for TimeDomain
|
Chris@0
|
75 // plugins, or half of it for FrequencyDomain plugins
|
Chris@0
|
76 }
|
Chris@0
|
77
|
Chris@0
|
78 size_t
|
Chris@0
|
79 TuningDifference::getMinChannelCount() const
|
Chris@0
|
80 {
|
Chris@0
|
81 return 1;
|
Chris@0
|
82 }
|
Chris@0
|
83
|
Chris@0
|
84 size_t
|
Chris@0
|
85 TuningDifference::getMaxChannelCount() const
|
Chris@0
|
86 {
|
Chris@0
|
87 return 1;
|
Chris@0
|
88 }
|
Chris@0
|
89
|
Chris@0
|
90 TuningDifference::ParameterList
|
Chris@0
|
91 TuningDifference::getParameterDescriptors() const
|
Chris@0
|
92 {
|
Chris@0
|
93 ParameterList list;
|
Chris@0
|
94
|
Chris@0
|
95 // If the plugin has no adjustable parameters, return an empty
|
Chris@0
|
96 // list here (and there's no need to provide implementations of
|
Chris@0
|
97 // getParameter and setParameter in that case either).
|
Chris@0
|
98
|
Chris@0
|
99 // Note that it is your responsibility to make sure the parameters
|
Chris@0
|
100 // start off having their default values (e.g. in the constructor
|
Chris@0
|
101 // above). The host needs to know the default value so it can do
|
Chris@0
|
102 // things like provide a "reset to default" function, but it will
|
Chris@0
|
103 // not explicitly set your parameters to their defaults for you if
|
Chris@0
|
104 // they have not changed in the mean time.
|
Chris@0
|
105
|
Chris@0
|
106 ParameterDescriptor d;
|
Chris@0
|
107 d.identifier = "parameter";
|
Chris@0
|
108 d.name = "Some Parameter";
|
Chris@0
|
109 d.description = "";
|
Chris@0
|
110 d.unit = "";
|
Chris@0
|
111 d.minValue = 0;
|
Chris@0
|
112 d.maxValue = 10;
|
Chris@0
|
113 d.defaultValue = 5;
|
Chris@0
|
114 d.isQuantized = false;
|
Chris@0
|
115 list.push_back(d);
|
Chris@0
|
116
|
Chris@0
|
117 return list;
|
Chris@0
|
118 }
|
Chris@0
|
119
|
Chris@0
|
120 float
|
Chris@0
|
121 TuningDifference::getParameter(string identifier) const
|
Chris@0
|
122 {
|
Chris@0
|
123 if (identifier == "parameter") {
|
Chris@0
|
124 return 5; // return the ACTUAL current value of your parameter here!
|
Chris@0
|
125 }
|
Chris@0
|
126 return 0;
|
Chris@0
|
127 }
|
Chris@0
|
128
|
Chris@0
|
129 void
|
Chris@0
|
130 TuningDifference::setParameter(string identifier, float value)
|
Chris@0
|
131 {
|
Chris@0
|
132 if (identifier == "parameter") {
|
Chris@0
|
133 // set the actual value of your parameter
|
Chris@0
|
134 }
|
Chris@0
|
135 }
|
Chris@0
|
136
|
Chris@0
|
137 TuningDifference::ProgramList
|
Chris@0
|
138 TuningDifference::getPrograms() const
|
Chris@0
|
139 {
|
Chris@0
|
140 ProgramList list;
|
Chris@0
|
141
|
Chris@0
|
142 // If you have no programs, return an empty list (or simply don't
|
Chris@0
|
143 // implement this function or getCurrentProgram/selectProgram)
|
Chris@0
|
144
|
Chris@0
|
145 return list;
|
Chris@0
|
146 }
|
Chris@0
|
147
|
Chris@0
|
148 string
|
Chris@0
|
149 TuningDifference::getCurrentProgram() const
|
Chris@0
|
150 {
|
Chris@0
|
151 return ""; // no programs
|
Chris@0
|
152 }
|
Chris@0
|
153
|
Chris@0
|
154 void
|
Chris@0
|
155 TuningDifference::selectProgram(string name)
|
Chris@0
|
156 {
|
Chris@0
|
157 }
|
Chris@0
|
158
|
Chris@0
|
159 TuningDifference::OutputList
|
Chris@0
|
160 TuningDifference::getOutputDescriptors() const
|
Chris@0
|
161 {
|
Chris@0
|
162 OutputList list;
|
Chris@0
|
163
|
Chris@0
|
164 // See OutputDescriptor documentation for the possibilities here.
|
Chris@0
|
165 // Every plugin must have at least one output.
|
Chris@0
|
166
|
Chris@0
|
167 OutputDescriptor d;
|
Chris@0
|
168 d.identifier = "output";
|
Chris@0
|
169 d.name = "My Output";
|
Chris@0
|
170 d.description = "";
|
Chris@0
|
171 d.unit = "";
|
Chris@0
|
172 d.hasFixedBinCount = true;
|
Chris@0
|
173 d.binCount = 1;
|
Chris@0
|
174 d.hasKnownExtents = false;
|
Chris@0
|
175 d.isQuantized = false;
|
Chris@0
|
176 d.sampleType = OutputDescriptor::OneSamplePerStep;
|
Chris@0
|
177 d.hasDuration = false;
|
Chris@0
|
178 list.push_back(d);
|
Chris@0
|
179
|
Chris@0
|
180 return list;
|
Chris@0
|
181 }
|
Chris@0
|
182
|
Chris@0
|
183 bool
|
Chris@0
|
184 TuningDifference::initialise(size_t channels, size_t stepSize, size_t blockSize)
|
Chris@0
|
185 {
|
Chris@0
|
186 if (channels < getMinChannelCount() ||
|
Chris@0
|
187 channels > getMaxChannelCount()) return false;
|
Chris@0
|
188
|
Chris@0
|
189 // Real initialisation work goes here!
|
Chris@0
|
190
|
Chris@0
|
191 return true;
|
Chris@0
|
192 }
|
Chris@0
|
193
|
Chris@0
|
194 void
|
Chris@0
|
195 TuningDifference::reset()
|
Chris@0
|
196 {
|
Chris@0
|
197 // Clear buffers, reset stored values, etc
|
Chris@0
|
198 }
|
Chris@0
|
199
|
Chris@0
|
200 TuningDifference::FeatureSet
|
Chris@0
|
201 TuningDifference::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
|
Chris@0
|
202 {
|
Chris@0
|
203 // Do actual work!
|
Chris@0
|
204 return FeatureSet();
|
Chris@0
|
205 }
|
Chris@0
|
206
|
Chris@0
|
207 TuningDifference::FeatureSet
|
Chris@0
|
208 TuningDifference::getRemainingFeatures()
|
Chris@0
|
209 {
|
Chris@0
|
210 return FeatureSet();
|
Chris@0
|
211 }
|
Chris@0
|
212
|