cannam@17
|
1
|
cannam@17
|
2 Vamp Plugin Tester
|
cannam@17
|
3 ==================
|
cannam@17
|
4
|
cannam@17
|
5 This program tests Vamp audio feature extraction plugins
|
cannam@17
|
6 (http://vamp-plugins.org/) for certain common failure cases.
|
cannam@17
|
7
|
cannam@17
|
8 To test a single plugin, run vamp-plugin-tester with the name of your
|
cannam@17
|
9 plugin library and plugin identifier, separated by a colon. For example,
|
cannam@17
|
10
|
cannam@17
|
11 $ vamp-plugin-tester vamp-example-plugins:amplitudefollower
|
cannam@17
|
12
|
cannam@17
|
13 The plugin library must be installed in the Vamp plugin path (you
|
cannam@17
|
14 cannot give the path to the library file).
|
cannam@17
|
15
|
cannam@17
|
16
|
cannam@17
|
17 Options
|
cannam@17
|
18 =======
|
cannam@17
|
19
|
cannam@27
|
20 Supply the -a or --all option to tell vamp-plugin-tester to test all
|
cannam@27
|
21 plugins found in your Vamp path.
|
cannam@27
|
22
|
cannam@17
|
23 Supply the -v or --verbose option to tell vamp-plugin-tester to print
|
cannam@17
|
24 out the whole content of its returned feature log for diagnostic
|
cannam@17
|
25 purposes each time it prints an error or warning that arises from the
|
cannam@17
|
26 contents of a returned feature.
|
cannam@17
|
27
|
cannam@17
|
28 Supply the -n or --nondeterministic option to tell vamp-plugin-tester
|
cannam@17
|
29 that your plugins are expected to return different results each time
|
cannam@17
|
30 they are run. The default behaviour is to treat different results on
|
cannam@17
|
31 separate runs with the same input data as an error.
|
cannam@17
|
32
|
Chris@41
|
33 Supply the -t or --test option with a test ID argument to tell
|
Chris@41
|
34 vamp-plugin-tester to run only a single test, rather than the complete
|
Chris@41
|
35 test suite. To find out what test ID to use for a given test, run
|
Chris@41
|
36 vamp-plugin-tester with the --list-tests or -l option.
|
Chris@41
|
37
|
cannam@17
|
38
|
cannam@17
|
39 Errors and Warnings
|
cannam@17
|
40 ===================
|
cannam@17
|
41
|
cannam@17
|
42 Each test may cause one or several notes, warnings, or errors to be
|
cannam@17
|
43 printed. A note is printed when behaviour is observed that may be
|
cannam@17
|
44 correct behaviour but that is not always anticipated by the plugin
|
cannam@17
|
45 developer. A warning is printed when behaviour is observed that is
|
cannam@17
|
46 technically legal but that in practice most often happens by mistake.
|
cannam@17
|
47 An error is printed when behaviour is observed that cannot be correct.
|
cannam@17
|
48
|
cannam@17
|
49 vamp-plugin-tester prints all of its commentary to the standard
|
cannam@17
|
50 output. Standard error is usually used for diagnostic output printed
|
cannam@17
|
51 by the plugins themselves.
|
cannam@17
|
52
|
cannam@19
|
53 In addition to reports, vamp-plugin-tester runs some tests that are
|
cannam@19
|
54 intended to provoke the plugin into unexpected behaviour such as
|
cannam@19
|
55 memory errors. If vamp-plugin-tester crashes during a test, this may
|
cannam@19
|
56 be why. If you have access to a memory checker utility such as
|
cannam@19
|
57 valgrind, you are advised to run vamp-plugin-tester under it so as to
|
cannam@19
|
58 be informed of any memory errors that do not happen to cause crashes
|
cannam@19
|
59 (as well as memory leaks). The vamp-plugin-tester binaries
|
cannam@19
|
60 distributed by QMUL have been compiled with debug information
|
cannam@19
|
61 included, in order to facilitate this type of use.
|
cannam@17
|
62
|
cannam@17
|
63
|
cannam@17
|
64 Error and Warning Reference
|
cannam@17
|
65 ===========================
|
cannam@17
|
66
|
cannam@17
|
67 ** ERROR: Failed to load plugin
|
cannam@17
|
68
|
cannam@17
|
69 The plugin could not be loaded. Remember that the plugin must be
|
cannam@17
|
70 installed in the Vamp plugin path.
|
cannam@17
|
71
|
cannam@24
|
72 Normally this message will be preceded by one of the following
|
cannam@24
|
73 errors:
|
cannam@24
|
74
|
cannam@26
|
75 Invalid plugin key <key> in loadPlugin
|
cannam@24
|
76
|
cannam@26
|
77 - The argument given to vamp-plugin-tester could not be split
|
cannam@26
|
78 into library name and plugin identifier. Check the usage
|
cannam@26
|
79 description above.
|
cannam@26
|
80
|
cannam@26
|
81 No library found in Vamp path for plugin <key>
|
cannam@26
|
82
|
cannam@26
|
83 - No Vamp plugin library of that name was found in the Vamp path.
|
cannam@26
|
84 This message will often be accompanied by one of the following
|
cannam@26
|
85 errors; if it isn't, then that probably means the file did not
|
cannam@26
|
86 exist at all.
|
cannam@24
|
87
|
cannam@24
|
88 Plugin <id> not found in library <name>
|
cannam@24
|
89
|
cannam@24
|
90 - The library was found and loaded and was apparently a valid
|
cannam@24
|
91 Vamp plugin library, but it didn't contain a plugin of that id.
|
cannam@24
|
92 Check you typed the id correctly, and if this is your library,
|
cannam@24
|
93 check that the vampGetPluginDescriptor function returns the
|
cannam@24
|
94 plugin descriptor properly.
|
cannam@24
|
95
|
cannam@24
|
96 Unable to load library <name>
|
cannam@24
|
97
|
cannam@24
|
98 - A dynamic library of that name was found, but the system library
|
cannam@24
|
99 loader could not load it. Perhaps it depends on another library
|
cannam@26
|
100 that is not available, or it was built for the wrong architecture.
|
cannam@26
|
101 There may be more information in the error message.
|
cannam@24
|
102
|
cannam@24
|
103 No vampGetPluginDescriptor function found in library <name>
|
cannam@24
|
104
|
cannam@24
|
105 - A dynamic library of that name was found and loaded, but it
|
cannam@24
|
106 lacked the necessary public vampGetPluginDescriptor function.
|
cannam@24
|
107
|
cannam@24
|
108 * Are you sure this is a Vamp plugin library?
|
cannam@24
|
109 * If you made it, did you remember to include the global
|
cannam@24
|
110 vampGetPluginDescriptor function in your library along with
|
cannam@24
|
111 your plugin classes?
|
cannam@24
|
112 * If you are using Visual C++, did you remember to mark the
|
cannam@24
|
113 vampGetPluginDescriptor symbol exported, as described in
|
cannam@24
|
114 the README.msvc file in the SDK?
|
cannam@24
|
115
|
cannam@17
|
116 ** ERROR: (plugin|parameter|output) identifier <x> contains invalid characters
|
cannam@17
|
117
|
cannam@17
|
118 An identifier contains characters other than the permitted set (ASCII
|
cannam@17
|
119 lower and upper case letters, digits, "-" and "_" only).
|
cannam@17
|
120
|
cannam@17
|
121 ** ERROR: <field> is empty
|
cannam@17
|
122
|
cannam@17
|
123 A mandatory field, such as the name of a parameter or output,
|
cannam@17
|
124 contains no text.
|
cannam@17
|
125
|
cannam@17
|
126 ** WARNING: <field> is empty
|
cannam@17
|
127
|
cannam@17
|
128 An optional field, such as the description of a parameter or output,
|
cannam@17
|
129 contains no text.
|
cannam@17
|
130
|
cannam@17
|
131 ** ERROR: Plugin parameter <x> maxValue <= minValue
|
cannam@17
|
132
|
cannam@17
|
133 The minimum and maximum values given for a parameter are equal or in
|
cannam@17
|
134 the wrong order.
|
cannam@17
|
135
|
cannam@17
|
136 ** ERROR: Plugin parameter <x> defaultValue out of range
|
cannam@17
|
137
|
cannam@17
|
138 The default value for a parameter is not within the range defined by
|
cannam@17
|
139 the minimum and maximum values for the parameter.
|
cannam@17
|
140
|
cannam@17
|
141 ** ERROR: Plugin parameter <x> is quantized, but quantize step is zero
|
cannam@17
|
142
|
cannam@17
|
143 The quantizeStep value in a parameter with isQuantized true is set to
|
cannam@17
|
144 zero.
|
cannam@17
|
145
|
cannam@17
|
146 ** WARNING: Plugin parameter <x> value range is not a multiple of quantize step
|
cannam@17
|
147
|
cannam@17
|
148 A parameter's stated maximum value is not one of the possible values
|
cannam@17
|
149 obtained by adding multiples of the quantize step on to the minimum
|
cannam@17
|
150 value.
|
cannam@17
|
151
|
cannam@17
|
152 ** WARNING: Plugin parameter <x> has (more|fewer) value names than quantize steps
|
cannam@17
|
153
|
cannam@17
|
154 A quantized parameter lists some value names for its quantize steps,
|
cannam@17
|
155 but not the right number.
|
cannam@17
|
156
|
cannam@17
|
157 ** WARNING: Plugin parameter <x> default value is not a multiple of quantize
|
cannam@17
|
158 step beyond minimum
|
cannam@17
|
159
|
cannam@17
|
160 The default value for a parameter is not a value that the user could
|
cannam@17
|
161 actually obtain, if only offered the quantized values to choose from.
|
cannam@17
|
162
|
cannam@17
|
163 ** ERROR: Data returned on nonexistent output
|
cannam@17
|
164
|
cannam@17
|
165 The output number key for a returned feature is outside the range of
|
cannam@17
|
166 outputs listed in the plugin's output descriptor list.
|
cannam@17
|
167
|
cannam@17
|
168 ** NOTE: No results returned for output <x>
|
cannam@17
|
169
|
cannam@17
|
170 The plugin returned no features on one of its outputs, when given a
|
cannam@17
|
171 simple test file. This may be perfectly reasonable behaviour, but
|
cannam@17
|
172 you might like to know about it.
|
cannam@17
|
173
|
Chris@62
|
174 ** ERROR: Plugin output <x> has FixedSampleRate but gives sample rate as 0
|
Chris@62
|
175
|
Chris@62
|
176 A plugin output that has a sample type of FixedSampleRate must have a
|
Chris@62
|
177 non-zero sample rate. See
|
Chris@62
|
178 https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/wiki/SampleType
|
Chris@62
|
179
|
cannam@17
|
180 ** NOTE: Plugin returns features with timestamps on OneSamplePerStep output
|
cannam@17
|
181 ** NOTE: Plugin returns features with durations on OneSamplePerStep output
|
cannam@17
|
182
|
cannam@17
|
183 Hosts will usually ignore timestamps and durations attached to any
|
Chris@62
|
184 feature returned on a OneSamplePerStep output. See
|
Chris@62
|
185 https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/wiki/SampleType
|
cannam@17
|
186
|
cannam@17
|
187 ** ERROR: Plugin returns features with no timestamps on VariableSampleRate output
|
cannam@17
|
188
|
cannam@17
|
189 Timestamps are mandatory on all features associated with a
|
Chris@62
|
190 VariableSampleRate output. See
|
Chris@62
|
191 https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/wiki/SampleType
|
cannam@17
|
192
|
cannam@17
|
193 ** WARNING: Plugin returned one or more NaN/inf values
|
cannam@17
|
194
|
cannam@17
|
195 The plugin returned features containing floating-point not-a-number
|
cannam@17
|
196 or infinity values. This warning may be associated with a test
|
cannam@17
|
197 involving feeding some unexpected type of data to the plugin.
|
cannam@17
|
198
|
cannam@17
|
199 ** ERROR: Consecutive runs with separate instances produce different results
|
cannam@17
|
200
|
cannam@17
|
201 The plugin was constructed and run twice against the same input data,
|
cannam@17
|
202 and returned different features each time.
|
cannam@17
|
203
|
cannam@17
|
204 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
205 will downgrade this error to a note.
|
cannam@17
|
206
|
cannam@17
|
207 ** ERROR: Consecutive runs with the same instance (using reset) produce different results
|
cannam@17
|
208
|
cannam@17
|
209 The plugin was constructed, initialised, run against some input data,
|
cannam@17
|
210 reset with a call to its reset() function, and run again against the
|
cannam@17
|
211 same data; and it returned different features on each run. This is
|
cannam@17
|
212 often a sign of some simple error such as forgetting to implement
|
cannam@17
|
213 reset().
|
cannam@17
|
214
|
cannam@17
|
215 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
216 will downgrade this error to a note.
|
cannam@17
|
217
|
cannam@17
|
218 ** ERROR: Simultaneous runs with separate instances produce different results
|
cannam@17
|
219
|
cannam@17
|
220 Two instances of the plugin were constructed and run against the same
|
cannam@17
|
221 input data, giving each block of data to one plugin's process call
|
cannam@17
|
222 and then to the other's, "interleaving" the processing between the
|
cannam@17
|
223 two instances (but within a single application thread); and the two
|
cannam@17
|
224 instances returned different features. This may indicate ill-advised
|
cannam@17
|
225 use of static data shared between plugin instances.
|
cannam@17
|
226
|
cannam@17
|
227 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
228 will downgrade this error to a note.
|
cannam@17
|
229
|
cannam@17
|
230 ** WARNING: Consecutive runs with different starting timestamps produce the same result
|
cannam@17
|
231
|
cannam@17
|
232 The plugin was run twice on the same audio data, but with different
|
cannam@17
|
233 input timestamps, and it returned the same results each time. While
|
cannam@17
|
234 this is often unproblematic, it can indicate that a plugin failed to
|
cannam@17
|
235 take the input timestamp into account when calculating its output
|
cannam@17
|
236 timestamps (if any).
|
cannam@17
|
237
|
cannam@17
|
238 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
239 will downgrade this warning to a note.
|
cannam@17
|
240
|
cannam@17
|
241 ** ERROR: Explicitly setting current program to its supposed current value changes the results
|
cannam@17
|
242
|
cannam@17
|
243 The plugin was constructed and run twice on the same data, once
|
cannam@17
|
244 without changing its "program" setting, and again having set the
|
cannam@17
|
245 program to the vaule returned by getCurrentProgram() (i.e. the same
|
cannam@17
|
246 program that was supposed to be in effect already). It returned
|
cannam@17
|
247 different results for the two runs, suggesting that some internal
|
cannam@17
|
248 data was changed in selectProgram in a way that differed from its
|
cannam@17
|
249 default.
|
cannam@17
|
250
|
cannam@17
|
251 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
252 will downgrade this error to a note.
|
cannam@17
|
253
|
cannam@17
|
254 ** ERROR: Explicitly setting parameters to their supposed default values changes the results
|
cannam@17
|
255
|
cannam@17
|
256 The plugin was constructed and run twice on the same data, once
|
cannam@17
|
257 without changing any of its parameters, and again having set the
|
cannam@17
|
258 parameters to their specified default values. It returned different
|
cannam@17
|
259 results for the two runs, suggesting that some internal data was
|
cannam@17
|
260 changed when a parameter was set to its default, in a way that
|
cannam@17
|
261 differed from the plugin's initially constructed state.
|
cannam@17
|
262
|
cannam@17
|
263 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
264 will downgrade this error to a note.
|
cannam@17
|
265
|
Chris@62
|
266 ** ERROR: Call to reset after setting parameters, but before processing, changes the results (parameter values not retained through reset?)
|
Chris@62
|
267
|
Chris@62
|
268 The plugin was constructed and run twice on the same data. The first
|
Chris@62
|
269 time, its parameters were set to some arbitrary values and it was
|
Chris@62
|
270 initialised and run. The second time, its parameters were set to the
|
Chris@62
|
271 same values and it was initialised, then reset(), then run. The two
|
Chris@62
|
272 runs returned different results, suggesting that perhaps some
|
Chris@62
|
273 parameter value was being modified within the reset() function. (This
|
Chris@62
|
274 function should reset internal state within the plugin, but not
|
Chris@62
|
275 parameter configuration.)
|
Chris@62
|
276
|
Chris@62
|
277 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
Chris@62
|
278 will downgrade this error to a note.
|
Chris@62
|
279
|
cannam@17
|
280 ** WARNING: Constructor takes some time to run: work should be deferred to initialise?
|
cannam@17
|
281
|
cannam@17
|
282 The plugin took a long time to construct. You should ensure that the
|
cannam@17
|
283 constructor for the plugin runs as quickly as possible, because it
|
cannam@17
|
284 may be called by a host that is only scanning the properties of all
|
cannam@17
|
285 available plugins on startup. Any serious initialisation work should
|
cannam@17
|
286 be done in the initialise() function rather than the constructor.
|
cannam@17
|
287
|
cannam@17
|
288
|
cannam@18
|
289 Authors
|
cannam@18
|
290 =======
|
cannam@18
|
291
|
cannam@18
|
292 This program was written at the Centre for Digital Music at Queen
|
Chris@58
|
293 Mary, University of London, by Chris Cannam. Copyright (c) 2009-2015 QMUL.
|
cannam@18
|
294
|