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