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
|
cannam@17
|
174 ** NOTE: Plugin returns features with timestamps on OneSamplePerStep output
|
cannam@17
|
175 ** NOTE: Plugin returns features with durations on OneSamplePerStep output
|
cannam@17
|
176
|
cannam@17
|
177 Hosts will usually ignore timestamps and durations attached to any
|
cannam@17
|
178 feature returned on a OneSamplePerStep output.
|
cannam@17
|
179
|
cannam@17
|
180 ** ERROR: Plugin returns features with no timestamps on VariableSampleRate output
|
cannam@17
|
181
|
cannam@17
|
182 Timestamps are mandatory on all features associated with a
|
cannam@17
|
183 VariableSampleRate output.
|
cannam@17
|
184
|
cannam@17
|
185 ** WARNING: Plugin returned one or more NaN/inf values
|
cannam@17
|
186
|
cannam@17
|
187 The plugin returned features containing floating-point not-a-number
|
cannam@17
|
188 or infinity values. This warning may be associated with a test
|
cannam@17
|
189 involving feeding some unexpected type of data to the plugin.
|
cannam@17
|
190
|
cannam@17
|
191 ** ERROR: Consecutive runs with separate instances produce different results
|
cannam@17
|
192
|
cannam@17
|
193 The plugin was constructed and run twice against the same input data,
|
cannam@17
|
194 and returned different features each time.
|
cannam@17
|
195
|
cannam@17
|
196 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
197 will downgrade this error to a note.
|
cannam@17
|
198
|
cannam@17
|
199 ** ERROR: Consecutive runs with the same instance (using reset) produce different results
|
cannam@17
|
200
|
cannam@17
|
201 The plugin was constructed, initialised, run against some input data,
|
cannam@17
|
202 reset with a call to its reset() function, and run again against the
|
cannam@17
|
203 same data; and it returned different features on each run. This is
|
cannam@17
|
204 often a sign of some simple error such as forgetting to implement
|
cannam@17
|
205 reset().
|
cannam@17
|
206
|
cannam@17
|
207 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
208 will downgrade this error to a note.
|
cannam@17
|
209
|
cannam@17
|
210 ** ERROR: Simultaneous runs with separate instances produce different results
|
cannam@17
|
211
|
cannam@17
|
212 Two instances of the plugin were constructed and run against the same
|
cannam@17
|
213 input data, giving each block of data to one plugin's process call
|
cannam@17
|
214 and then to the other's, "interleaving" the processing between the
|
cannam@17
|
215 two instances (but within a single application thread); and the two
|
cannam@17
|
216 instances returned different features. This may indicate ill-advised
|
cannam@17
|
217 use of static data shared between plugin instances.
|
cannam@17
|
218
|
cannam@17
|
219 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
220 will downgrade this error to a note.
|
cannam@17
|
221
|
cannam@17
|
222 ** WARNING: Consecutive runs with different starting timestamps produce the same result
|
cannam@17
|
223
|
cannam@17
|
224 The plugin was run twice on the same audio data, but with different
|
cannam@17
|
225 input timestamps, and it returned the same results each time. While
|
cannam@17
|
226 this is often unproblematic, it can indicate that a plugin failed to
|
cannam@17
|
227 take the input timestamp into account when calculating its output
|
cannam@17
|
228 timestamps (if any).
|
cannam@17
|
229
|
cannam@17
|
230 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
231 will downgrade this warning to a note.
|
cannam@17
|
232
|
cannam@17
|
233 ** ERROR: Explicitly setting current program to its supposed current value changes the results
|
cannam@17
|
234
|
cannam@17
|
235 The plugin was constructed and run twice on the same data, once
|
cannam@17
|
236 without changing its "program" setting, and again having set the
|
cannam@17
|
237 program to the vaule returned by getCurrentProgram() (i.e. the same
|
cannam@17
|
238 program that was supposed to be in effect already). It returned
|
cannam@17
|
239 different results for the two runs, suggesting that some internal
|
cannam@17
|
240 data was changed in selectProgram in a way that differed from its
|
cannam@17
|
241 default.
|
cannam@17
|
242
|
cannam@17
|
243 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
244 will downgrade this error to a note.
|
cannam@17
|
245
|
cannam@17
|
246 ** ERROR: Explicitly setting parameters to their supposed default values changes the results
|
cannam@17
|
247
|
cannam@17
|
248 The plugin was constructed and run twice on the same data, once
|
cannam@17
|
249 without changing any of its parameters, and again having set the
|
cannam@17
|
250 parameters to their specified default values. It returned different
|
cannam@17
|
251 results for the two runs, suggesting that some internal data was
|
cannam@17
|
252 changed when a parameter was set to its default, in a way that
|
cannam@17
|
253 differed from the plugin's initially constructed state.
|
cannam@17
|
254
|
cannam@17
|
255 If you give the -n or --nondeterministic option, vamp-plugin-tester
|
cannam@17
|
256 will downgrade this error to a note.
|
cannam@17
|
257
|
cannam@17
|
258 ** WARNING: Constructor takes some time to run: work should be deferred to initialise?
|
cannam@17
|
259
|
cannam@17
|
260 The plugin took a long time to construct. You should ensure that the
|
cannam@17
|
261 constructor for the plugin runs as quickly as possible, because it
|
cannam@17
|
262 may be called by a host that is only scanning the properties of all
|
cannam@17
|
263 available plugins on startup. Any serious initialisation work should
|
cannam@17
|
264 be done in the initialise() function rather than the constructor.
|
cannam@17
|
265
|
cannam@17
|
266
|
cannam@18
|
267 Authors
|
cannam@18
|
268 =======
|
cannam@18
|
269
|
cannam@18
|
270 This program was written at the Centre for Digital Music at Queen
|
Chris@42
|
271 Mary, University of London, by Chris Cannam. Copyright (c) 2009-2014 QMUL.
|
cannam@18
|
272
|