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