Wiki » History » Version 23

Chris Cannam, 2016-08-17 02:18 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 23 Chris Cannam
This output is new in v1.1 of the test plugin.
196 23 Chris Cannam
197 21 Chris Cannam
Since this output depends on the input, a sample is not given here.