Wiki » History » Version 22
Chris Cannam, 2016-08-17 02:17 PM
1 | 1 | Chris Cannam | h1. About the Vamp Test Plugin |
---|---|---|---|
2 | 1 | Chris Cannam | |
3 | 16 | Chris Cannam | {{>toc}} |
4 | 16 | Chris Cannam | |
5 | 4 | Chris Cannam | The Vamp Test Plugin is a plugin that does no real work, does not analyse its input at all, and always returns the same results. (With one caveat: you should feed it at least 15 seconds of input audio, because it returns features across a 15-second span.) |
6 | 4 | Chris Cannam | |
7 | 5 | Chris Cannam | It has several outputs, which are designed to test the host's handling of various aspects of the Vamp OutputDescriptor SampleType and SampleRate settings. Note that all output features have labels indicating the expected timing and (in some cases) values for the feature. |
8 | 2 | Chris Cannam | |
9 | 1 | Chris Cannam | Think of it as the Vamp plugin equivalent of a TV test pattern or printer test page. |
10 | 3 | Chris Cannam | |
11 | 3 | Chris Cannam | h2. Outputs |
12 | 3 | Chris Cannam | |
13 | 21 | Chris Cannam | The plugin outputs are listed below, with a description and an example of Sonic Annotator's display of the output features. The output comes from Sonic Annotator v0.8 -- use of this plugin turned up a bug in 0.7 which 0.8 fixes! |
14 | 5 | Chris Cannam | |
15 | 5 | Chris Cannam | h3. instants |
16 | 5 | Chris Cannam | |
17 | 6 | Chris Cannam | The *instants* output is a @VariableSampleRate@ output containing ten instants explicitly timestamped at 1.5 second intervals. They are labelled by number and time. |
18 | 5 | Chris Cannam | |
19 | 5 | Chris Cannam | <pre> |
20 | 5 | Chris Cannam | "test.wav",0.000000000,"1 of 10 at 0" |
21 | 5 | Chris Cannam | ,1.500000000,"2 of 10 at 1.5" |
22 | 5 | Chris Cannam | ,3.000000000,"3 of 10 at 3" |
23 | 5 | Chris Cannam | ,4.500000000,"4 of 10 at 4.5" |
24 | 5 | Chris Cannam | ,6.000000000,"5 of 10 at 6" |
25 | 5 | Chris Cannam | ,7.500000000,"6 of 10 at 7.5" |
26 | 5 | Chris Cannam | ,9.000000000,"7 of 10 at 9" |
27 | 5 | Chris Cannam | ,10.500000000,"8 of 10 at 10.5" |
28 | 5 | Chris Cannam | ,12.000000000,"9 of 10 at 12" |
29 | 1 | Chris Cannam | ,13.500000000,"10 of 10 at 13.5" |
30 | 6 | Chris Cannam | </pre> |
31 | 6 | Chris Cannam | |
32 | 6 | Chris Cannam | h3. curve-oss |
33 | 6 | Chris Cannam | |
34 | 6 | Chris Cannam | The *curve-oss* output is a @OneSamplePerStep@ output containing 20 values from 0 to 0.95 in increments of 0.05. They have implicit timing, so their timestamps will depend on the process block size. The expected times are calculated by the plugin and returned in the feature labels. |
35 | 6 | Chris Cannam | |
36 | 6 | Chris Cannam | <pre> |
37 | 6 | Chris Cannam | "test.wav",0.000000000,0,"1 of 20: 0 at 0" |
38 | 6 | Chris Cannam | ,0.023219954,0.05,"2 of 20: 0.05 at 0.023" |
39 | 6 | Chris Cannam | ,0.046439909,0.1,"3 of 20: 0.1 at 0.046" |
40 | 6 | Chris Cannam | ,0.069659863,0.15,"4 of 20: 0.15 at 0.069" |
41 | 6 | Chris Cannam | ,0.092879818,0.2,"5 of 20: 0.2 at 0.092" |
42 | 6 | Chris Cannam | ,0.116099773,0.25,"6 of 20: 0.25 at 0.116" |
43 | 6 | Chris Cannam | ,0.139319727,0.3,"7 of 20: 0.3 at 0.139" |
44 | 6 | Chris Cannam | ,0.162539682,0.35,"8 of 20: 0.35 at 0.162" |
45 | 6 | Chris Cannam | ,0.185759637,0.4,"9 of 20: 0.4 at 0.185" |
46 | 6 | Chris Cannam | ,0.208979591,0.45,"10 of 20: 0.45 at 0.208" |
47 | 6 | Chris Cannam | ,0.232199546,0.5,"11 of 20: 0.5 at 0.232" |
48 | 6 | Chris Cannam | ,0.255419501,0.55,"12 of 20: 0.55 at 0.255" |
49 | 6 | Chris Cannam | ,0.278639455,0.6,"13 of 20: 0.6 at 0.278" |
50 | 6 | Chris Cannam | ,0.301859410,0.65,"14 of 20: 0.65 at 0.301" |
51 | 6 | Chris Cannam | ,0.325079365,0.7,"15 of 20: 0.7 at 0.325" |
52 | 6 | Chris Cannam | ,0.348299319,0.75,"16 of 20: 0.75 at 0.348" |
53 | 6 | Chris Cannam | ,0.371519274,0.8,"17 of 20: 0.8 at 0.371" |
54 | 6 | Chris Cannam | ,0.394739229,0.85,"18 of 20: 0.85 at 0.394" |
55 | 6 | Chris Cannam | ,0.417959183,0.9,"19 of 20: 0.9 at 0.417" |
56 | 6 | Chris Cannam | ,0.441179138,0.95,"20 of 20: 0.95 at 0.441" |
57 | 5 | Chris Cannam | </pre> |
58 | 8 | Chris Cannam | |
59 | 8 | Chris Cannam | h3. curve-fsr |
60 | 8 | Chris Cannam | |
61 | 9 | Chris Cannam | The *curve-fsr* output is a @FixedSampleRate@ output which contains 10 implicitly timed features with values from 0 to 0.9 in increments of 0.1. |
62 | 8 | Chris Cannam | |
63 | 9 | Chris Cannam | This output has a SampleRate of 2.5, so the features should appear at 0.4 second intervals. |
64 | 10 | Chris Cannam | |
65 | 10 | Chris Cannam | <pre> |
66 | 10 | Chris Cannam | "test.wav",0.000000000,0,"1 of 10: 0 at 0" |
67 | 10 | Chris Cannam | ,0.400000000,0.1,"2 of 10: 0.1 at 0.4" |
68 | 10 | Chris Cannam | ,0.800000000,0.2,"3 of 10: 0.2 at 0.8" |
69 | 10 | Chris Cannam | ,1.200000000,0.3,"4 of 10: 0.3 at 1.2" |
70 | 10 | Chris Cannam | ,1.600000000,0.4,"5 of 10: 0.4 at 1.6" |
71 | 10 | Chris Cannam | ,2.000000000,0.5,"6 of 10: 0.5 at 2" |
72 | 10 | Chris Cannam | ,2.400000000,0.6,"7 of 10: 0.6 at 2.4" |
73 | 10 | Chris Cannam | ,2.800000000,0.7,"8 of 10: 0.7 at 2.8" |
74 | 10 | Chris Cannam | ,3.200000000,0.8,"9 of 10: 0.8 at 3.2" |
75 | 10 | Chris Cannam | ,3.600000000,0.9,"10 of 10: 0.9 at 3.6" |
76 | 10 | Chris Cannam | </pre> |
77 | 11 | Chris Cannam | |
78 | 11 | Chris Cannam | h3. curve-fsr-timed |
79 | 11 | Chris Cannam | |
80 | 11 | Chris Cannam | The *curve-fsr-timed* output is a @FixedSampleRate@ output in which the features have explicit timestamps. The features have values from 0 to 0.9 in increments of 0.1. They are not, however, equally spaced. |
81 | 11 | Chris Cannam | |
82 | 20 | Chris Cannam | According to the "Vamp Plugin Programmers' Guide":http://vamp-plugins.org/guide.pdf, "The host may round the timestamp according to the sample rate given in the output descriptor's sampleRate field". In my view this is the right thing for a host to do, although it's technically optional. The guide doesn't say whether timestamps should be rounded down or to the closest sample; this plugin assumes rounding to the closest sample. It also isn't clear whether a half-way point should round down or up; I would expect up. |
83 | 20 | Chris Cannam | |
84 | 20 | Chris Cannam | This output tests the basics of this behaviour by providing features at timestamps that do not lie on sample boundaries, along with a label indicating what the host would be expected to snap them to (always the nearest sample boundary). |
85 | 11 | Chris Cannam | |
86 | 12 | Chris Cannam | The output has a SampleRate of 2.5, so the features should be snapped to 0.4 second boundaries. |
87 | 12 | Chris Cannam | |
88 | 11 | Chris Cannam | Thus: |
89 | 11 | Chris Cannam | |
90 | 11 | Chris Cannam | <pre> |
91 | 11 | Chris Cannam | "test.wav",0.000000000,0,"1 of 10: 0 at 0 snap to 0" |
92 | 11 | Chris Cannam | ,0.000000000,0.1,"2 of 10: 0.1 at 0 snap to 0" |
93 | 11 | Chris Cannam | ,0.000000000,0.2,"3 of 10: 0.2 at 0.166 snap to 0" |
94 | 11 | Chris Cannam | ,0.400000000,0.3,"4 of 10: 0.3 at 0.333 snap to 0.4" |
95 | 11 | Chris Cannam | ,2.000000000,0.4,"5 of 10: 0.4 at 2 snap to 2" |
96 | 11 | Chris Cannam | ,2.000000000,0.5,"6 of 10: 0.5 at 2 snap to 2" |
97 | 11 | Chris Cannam | ,2.000000000,0.6,"7 of 10: 0.6 at 2.166 snap to 2" |
98 | 11 | Chris Cannam | ,2.400000000,0.7,"8 of 10: 0.7 at 2.333 snap to 2.4" |
99 | 11 | Chris Cannam | ,4.000000000,0.8,"9 of 10: 0.8 at 4 snap to 4" |
100 | 11 | Chris Cannam | ,4.000000000,0.9,"10 of 10: 0.9 at 4 snap to 4" |
101 | 11 | Chris Cannam | </pre> |
102 | 13 | Chris Cannam | |
103 | 13 | Chris Cannam | h3. curve-vsr |
104 | 13 | Chris Cannam | |
105 | 19 | Chris Cannam | The *curve-vsr* output is a @VariableSampleRate@ output which contains 10 explicitly timed features at 0.75 second intervals with values from 0 to 0.9 in increments of 0.1. |
106 | 13 | Chris Cannam | |
107 | 13 | Chris Cannam | <pre> |
108 | 13 | Chris Cannam | "test.wav",0.000000000,0,"1 of 10: 0 at 0" |
109 | 13 | Chris Cannam | ,0.750000000,0.1,"2 of 10: 0.1 at 0.75" |
110 | 13 | Chris Cannam | ,1.500000000,0.2,"3 of 10: 0.2 at 1.5" |
111 | 13 | Chris Cannam | ,2.250000000,0.3,"4 of 10: 0.3 at 2.25" |
112 | 13 | Chris Cannam | ,3.000000000,0.4,"5 of 10: 0.4 at 3" |
113 | 13 | Chris Cannam | ,3.750000000,0.5,"6 of 10: 0.5 at 3.75" |
114 | 13 | Chris Cannam | ,4.500000000,0.6,"7 of 10: 0.6 at 4.5" |
115 | 13 | Chris Cannam | ,5.250000000,0.7,"8 of 10: 0.7 at 5.25" |
116 | 13 | Chris Cannam | ,6.000000000,0.8,"9 of 10: 0.8 at 6" |
117 | 13 | Chris Cannam | ,6.750000000,0.9,"10 of 10: 0.9 at 6.75" |
118 | 13 | Chris Cannam | </pre> |
119 | 14 | Chris Cannam | |
120 | 14 | Chris Cannam | h3. grid-oss |
121 | 14 | Chris Cannam | |
122 | 14 | Chris Cannam | The *grid-oss* output is a @OneSamplePerStep@ output containing 20 consecutive features of 10 values each, with values ranging from 0 at "bottom left" to (nearly) 1 at "top right". |
123 | 14 | Chris Cannam | |
124 | 14 | Chris Cannam | <pre> |
125 | 14 | Chris Cannam | "test.wav",0.000000000,0.0666667,0.1,0.133333,0.166667,0.2,0.233333,0.266667,0.3,0.333333,0.366667,"1 of 20 at 0" |
126 | 14 | Chris Cannam | ,0.023219954,0.1,0.133333,0.166667,0.2,0.233333,0.266667,0.3,0.333333,0.366667,0.4,"2 of 20 at 0.023" |
127 | 14 | Chris Cannam | ,0.046439909,0.133333,0.166667,0.2,0.233333,0.266667,0.3,0.333333,0.366667,0.4,0.433333,"3 of 20 at 0.046" |
128 | 14 | Chris Cannam | ,0.069659863,0.166667,0.2,0.233333,0.266667,0.3,0.333333,0.366667,0.4,0.433333,0.466667,"4 of 20 at 0.069" |
129 | 14 | Chris Cannam | ,0.092879818,0.2,0.233333,0.266667,0.3,0.333333,0.366667,0.4,0.433333,0.466667,0.5,"5 of 20 at 0.092" |
130 | 14 | Chris Cannam | ,0.116099773,0.233333,0.266667,0.3,0.333333,0.366667,0.4,0.433333,0.466667,0.5,0.533333,"6 of 20 at 0.116" |
131 | 14 | Chris Cannam | ,0.139319727,0.266667,0.3,0.333333,0.366667,0.4,0.433333,0.466667,0.5,0.533333,0.566667,"7 of 20 at 0.139" |
132 | 14 | Chris Cannam | ,0.162539682,0.3,0.333333,0.366667,0.4,0.433333,0.466667,0.5,0.533333,0.566667,0.6,"8 of 20 at 0.162" |
133 | 14 | Chris Cannam | ,0.185759637,0.333333,0.366667,0.4,0.433333,0.466667,0.5,0.533333,0.566667,0.6,0.633333,"9 of 20 at 0.185" |
134 | 14 | Chris Cannam | ,0.208979591,0.366667,0.4,0.433333,0.466667,0.5,0.533333,0.566667,0.6,0.633333,0.666667,"10 of 20 at 0.208" |
135 | 14 | Chris Cannam | ,0.232199546,0.4,0.433333,0.466667,0.5,0.533333,0.566667,0.6,0.633333,0.666667,0.7,"11 of 20 at 0.232" |
136 | 14 | Chris Cannam | ,0.255419501,0.433333,0.466667,0.5,0.533333,0.566667,0.6,0.633333,0.666667,0.7,0.733333,"12 of 20 at 0.255" |
137 | 14 | Chris Cannam | ,0.278639455,0.466667,0.5,0.533333,0.566667,0.6,0.633333,0.666667,0.7,0.733333,0.766667,"13 of 20 at 0.278" |
138 | 14 | Chris Cannam | ,0.301859410,0.5,0.533333,0.566667,0.6,0.633333,0.666667,0.7,0.733333,0.766667,0.8,"14 of 20 at 0.301" |
139 | 14 | Chris Cannam | ,0.325079365,0.533333,0.566667,0.6,0.633333,0.666667,0.7,0.733333,0.766667,0.8,0.833333,"15 of 20 at 0.325" |
140 | 14 | Chris Cannam | ,0.348299319,0.566667,0.6,0.633333,0.666667,0.7,0.733333,0.766667,0.8,0.833333,0.866667,"16 of 20 at 0.348" |
141 | 14 | Chris Cannam | ,0.371519274,0.6,0.633333,0.666667,0.7,0.733333,0.766667,0.8,0.833333,0.866667,0.9,"17 of 20 at 0.371" |
142 | 14 | Chris Cannam | ,0.394739229,0.633333,0.666667,0.7,0.733333,0.766667,0.8,0.833333,0.866667,0.9,0.933333,"18 of 20 at 0.394" |
143 | 14 | Chris Cannam | ,0.417959183,0.666667,0.7,0.733333,0.766667,0.8,0.833333,0.866667,0.9,0.933333,0.966667,"19 of 20 at 0.417" |
144 | 14 | Chris Cannam | ,0.441179138,0.7,0.733333,0.766667,0.8,0.833333,0.866667,0.9,0.933333,0.966667,1,"20 of 20 at 0.441" |
145 | 14 | Chris Cannam | </pre> |
146 | 15 | Chris Cannam | |
147 | 15 | Chris Cannam | h3. grid-fsr |
148 | 15 | Chris Cannam | |
149 | 15 | Chris Cannam | The *grid-fsr* output is a @FixedSampleRate@ output which contains 10 implicitly timed features with 10 values each. |
150 | 15 | Chris Cannam | |
151 | 15 | Chris Cannam | This output has a SampleRate of 2.5, so the features should appear at 0.4 second intervals. |
152 | 15 | Chris Cannam | |
153 | 15 | Chris Cannam | <pre> |
154 | 15 | Chris Cannam | "test.wav",0.000000000,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,"1 of 10 at 0" |
155 | 15 | Chris Cannam | ,0.400000000,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,"2 of 10 at 0.4" |
156 | 15 | Chris Cannam | ,0.800000000,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,"3 of 10 at 0.8" |
157 | 15 | Chris Cannam | ,1.200000000,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,"4 of 10 at 1.2" |
158 | 15 | Chris Cannam | ,1.600000000,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,"5 of 10 at 1.6" |
159 | 15 | Chris Cannam | ,2.000000000,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,"6 of 10 at 2" |
160 | 15 | Chris Cannam | ,2.400000000,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,"7 of 10 at 2.4" |
161 | 15 | Chris Cannam | ,2.800000000,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,"8 of 10 at 2.8" |
162 | 15 | Chris Cannam | ,3.200000000,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,"9 of 10 at 3.2" |
163 | 15 | Chris Cannam | ,3.600000000,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,"10 of 10 at 3.6" |
164 | 15 | Chris Cannam | </pre> |
165 | 17 | Chris Cannam | |
166 | 17 | Chris Cannam | h3. notes-regions |
167 | 17 | Chris Cannam | |
168 | 17 | Chris Cannam | The *notes-regions* output is a @VariableSampleRate@ output which contains 10 explicitly timed features at 1 second intervals with values from 0 to 0.9 in increments of 0.1. The features have durations of 1.75 and 0.5 seconds respectively (repeated 5 times). |
169 | 17 | Chris Cannam | |
170 | 17 | Chris Cannam | <pre> |
171 | 17 | Chris Cannam | "test.wav",0.000000000,1.750000000,0,"1 of 10: 0 at 0 dur. 1.75" |
172 | 17 | Chris Cannam | ,1.000000000,0.500000000,0.1,"2 of 10: 0.1 at 1 dur. 0.5" |
173 | 17 | Chris Cannam | ,2.000000000,1.750000000,0.2,"3 of 10: 0.2 at 2 dur. 1.75" |
174 | 17 | Chris Cannam | ,3.000000000,0.500000000,0.3,"4 of 10: 0.3 at 3 dur. 0.5" |
175 | 17 | Chris Cannam | ,4.000000000,1.750000000,0.4,"5 of 10: 0.4 at 4 dur. 1.75" |
176 | 17 | Chris Cannam | ,5.000000000,0.500000000,0.5,"6 of 10: 0.5 at 5 dur. 0.5" |
177 | 17 | Chris Cannam | ,6.000000000,1.750000000,0.6,"7 of 10: 0.6 at 6 dur. 1.75" |
178 | 17 | Chris Cannam | ,7.000000000,0.500000000,0.7,"8 of 10: 0.7 at 7 dur. 0.5" |
179 | 17 | Chris Cannam | ,8.000000000,1.750000000,0.8,"9 of 10: 0.8 at 8 dur. 1.75" |
180 | 17 | Chris Cannam | ,9.000000000,0.500000000,0.9,"10 of 10: 0.9 at 9 dur. 0.5" |
181 | 1 | Chris Cannam | </pre> |
182 | 21 | Chris Cannam | |
183 | 21 | Chris Cannam | h3. input-summary |
184 | 21 | Chris Cannam | |
185 | 21 | Chris Cannam | The *input-summary* output is a @OneSamplePerStep@ output which produces data derived from the input to the plugin, so as to test whether the host is providing the expected input. Each feature contains one value per input channel. That value consists of the first sample value on that channel plus the total number of non-zero samples on that channel within the associated block of input. ("Non-zero" is determined by comparison against a magnitude threshold which is actually 1e-6 rather than exactly zero.) |
186 | 21 | Chris Cannam | |
187 | 22 | Chris Cannam | This output is new in v1.1 of the test plugin. |
188 | 22 | Chris Cannam | |
189 | 21 | Chris Cannam | Since this output depends on the input, a sample is not given here. |
190 | 21 | Chris Cannam | |
191 | 21 | Chris Cannam | h3. input-timestamp |
192 | 21 | Chris Cannam | |
193 | 21 | Chris Cannam | The *input-timestamp* output is a @OneSamplePerStep@ output which produces single-valued features, whose value is the time in sample frames converted from the timestamp of the corresponding process input block. |
194 | 21 | Chris Cannam | |
195 | 21 | Chris Cannam | Since this output depends on the input, a sample is not given here. |