Mercurial > hg > vamp-plugin-sdk
comparison examples/vamp-example-plugins.txt @ 255:88ef5ffdbe8d
* docs
author | cannam |
---|---|
date | Wed, 12 Nov 2008 14:11:01 +0000 |
parents | |
children | f80e34e36a79 |
comparison
equal
deleted
inserted
replaced
254:e02c93c4de8f | 255:88ef5ffdbe8d |
---|---|
1 | |
2 Vamp Example Plugins | |
3 ==================== | |
4 | |
5 The vamp-example-plugins library contains a number of Vamp audio | |
6 analysis plugins provided as part of the Vamp plugin SDK. | |
7 | |
8 These are simple, but sometimes useful, plugins whose source code you | |
9 are free to study and reuse in any proprietary or non-proprietary | |
10 plugins of your own without any licensing obligation. | |
11 | |
12 User documentation for the individual plugins in this library follows. | |
13 | |
14 | |
15 Amplitude Follower | |
16 ================== | |
17 | |
18 System identifier: vamp-example-plugins:amplitudefollower | |
19 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#amplitudefollower | |
20 | |
21 Amplitude Follower tracks and returns the amplitude of the audio | |
22 signal, block by block. It uses a method from the SuperCollider audio | |
23 processing language, implemented as a Vamp plugin by Dan Stowell. | |
24 | |
25 Parameters | |
26 ---------- | |
27 | |
28 Attack time (seconds) | |
29 Release time (seconds) | |
30 | |
31 Outputs | |
32 ------- | |
33 | |
34 Amplitude | |
35 ~~~~~~~~~ | |
36 | |
37 The estimated peak amplitude (in volts) for the current processing block. | |
38 | |
39 | |
40 Simple Fixed Tempo Estimator | |
41 ============================ | |
42 | |
43 System identifier: vamp-example-plugins:fixedtempo | |
44 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#fixedtempo | |
45 | |
46 Simple Fixed Tempo Estimator analyses a fragment of audio and | |
47 estimates its tempo. It assumes that its input is of fixed tempo, and | |
48 it analyses only the first (small but configurable number of) seconds | |
49 before returning a result, discarding all subsequent input. | |
50 | |
51 The plugin calculates an overall energy rise function across a series | |
52 of short frequency-domain input frames, takes the autocorrelation of | |
53 this function, filters it to stress possible metrical patterns, | |
54 locates peaks, and converts from autocorrelation lag to the | |
55 corresponding tempo. | |
56 | |
57 The filtering process involves searching for peaks at simple | |
58 metrically related intervals (at a given autocorrelation lag as well | |
59 as at 0.5, 2, and 4 times that lag), boosting each peak that shows | |
60 strong related peaks. A simplistic perceptual curve is also applied | |
61 in order to increase the probability of detecting a "likely" tempo. | |
62 For improved tempo precision, each tempo with strong related peaks is | |
63 averaged with the tempi calculated from those peaks. | |
64 | |
65 The method is mainly tuned for 4/4 pop and dance rhythms. | |
66 | |
67 This plugin returns many of its intermediate calculations as | |
68 additional outputs, as well as the most favoured tempo. Although as a | |
69 tempo estimator it's still fairly primitive, it is intended to provide | |
70 a useful example of a slightly more complex feature extraction plugin | |
71 than the other examples, as well as one that returns several different | |
72 types of output at a time. | |
73 | |
74 Parameters | |
75 ---------- | |
76 | |
77 Minimum estimated tempo, Maximum estimated tempo (bpm) - These | |
78 parameters control the range of values within which the tempo | |
79 estimator will return its estimate. | |
80 | |
81 Input duration to study (seconds) - The tempo estimator uses only the | |
82 first part of its input, discarding any that follows. This parameter | |
83 controls how much input it will use. There is no value in increasing | |
84 this beyond 8x the duration of the slowest returned beat. The default | |
85 of 10 seconds is likely to be appropriate for most purposes. | |
86 | |
87 Outputs | |
88 ------- | |
89 | |
90 Tempo | |
91 ~~~~~ | |
92 | |
93 The tempo estimator's best guess at the tempo of its input, in beats | |
94 per minute. | |
95 | |
96 This is returned as a feature whose timestamp and duration cover the | |
97 range of the input which was used in estimating the tempo, with a | |
98 single value containing the tempo. | |
99 | |
100 Tempo candidates | |
101 ~~~~~~~~~~~~~~~~ | |
102 | |
103 Several guesses at the possible tempo. This output is returned as a | |
104 single feature whose timestamp and duration cover the range of the | |
105 input which was used in estimating the tempo, with up to 10 bins | |
106 containing one tempo value in each bin, with the "best guess" tempo in | |
107 bin 0. | |
108 | |
109 Detection function | |
110 ~~~~~~~~~~~~~~~~~~ | |
111 | |
112 The basic onset detection function used in tempo estimation. | |
113 | |
114 Autocorrelation function | |
115 ~~~~~~~~~~~~~~~~~~~~~~~~ | |
116 | |
117 The autocorrelation of the onset detection function. | |
118 | |
119 Filtered Autocorrelation | |
120 ~~~~~~~~~~~~~~~~~~~~~~~~ | |
121 | |
122 The autocorrelation after filtering to boost values with possible | |
123 metrically related peaks and to apply perceptual weighting. The peak | |
124 value of this function is the one that will be used as the "best | |
125 guess". | |
126 | |
127 | |
128 Simple Percussion Onset Detector | |
129 ================================ | |
130 | |
131 System identifier: vamp-example-plugins:percussiononsets | |
132 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#percussiononsets | |
133 | |
134 Simple Percussion Onset Detector estimates the locations of percussive | |
135 onsets in the audio signal. It uses a method described in "Drum | |
136 Source Separation using Percussive Feature Detection and Spectral | |
137 Modulation" by Dan Barry, Derry Fitzgerald, Eugene Coyle and Bob | |
138 Lawlor, ISSC 2005. | |
139 | |
140 The principle is to exploit the broadband nature of noisy percussive | |
141 onsets by identifying only those frames in which the energy rise shows | |
142 a broadband profile. | |
143 | |
144 The plugin takes a series of frequency domain frames, and examines | |
145 each frame to count the number of bins whose energy content has | |
146 increased by more than a certain threshold since the prior frame. | |
147 Frames in which this number is at a peak relative to prior and | |
148 following frames and also exceeds another threshold value are | |
149 classified as percussive onsets. | |
150 | |
151 Parameters | |
152 ---------- | |
153 | |
154 Energy rise threshold (dB) - The rise in energy within a bin from one | |
155 frame to the next that is required for a bin to be counted toward the | |
156 detection function's bin count. This roughly corresponds to how | |
157 "loud" a percussive sound must be in order to be detected. | |
158 | |
159 Sensitivity (%) - The proportion of bins that must exceed the energy | |
160 rise threshold in order for an onset to be detected (at frames in | |
161 which the detection function peaks). This roughly corresponds to how | |
162 "noisy" a percussive sound must be in order to be detected. | |
163 | |
164 Outputs | |
165 ------- | |
166 | |
167 Onsets | |
168 ~~~~~~ | |
169 | |
170 The estimated onset locations. | |
171 | |
172 Detection Function | |
173 ~~~~~~~~~~~~~~~~~~ | |
174 | |
175 The energy rise detection function whose peaks were used to estimate | |
176 onset locations. | |
177 | |
178 | |
179 Simple Power Spectrum | |
180 ===================== | |
181 | |
182 System identifier: vamp-example-plugins:powerspectrum | |
183 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#powerspectrum | |
184 | |
185 Simple Power Spectrum returns a power spectrum calculated from | |
186 windowed short-time Fourier transforms of the input audio. (The power | |
187 spectrum for a frame consists of a sequence of the squares of the | |
188 magnitudes of the complex values for each frequency bin in the result | |
189 of the Fourier transform.) | |
190 | |
191 This very simple plugin is an illustration of the fact that if a | |
192 plugin requests frequency-domain input, its input will already be in | |
193 the form needed for a spectrum such as this. The plugin has no work | |
194 left to do except to calculate the squared magnitude from the | |
195 cartesian complex representation. | |
196 | |
197 This plugin also illustrates how to return "grid-type" visualisation | |
198 data from a Vamp plugin. | |
199 | |
200 Parameters | |
201 ---------- | |
202 | |
203 None. | |
204 | |
205 Outputs | |
206 ------- | |
207 | |
208 Power Spectrum | |
209 ~~~~~~~~~~~~~~ | |
210 | |
211 The power spectrum calculated from the input frame. This output | |
212 returns a single feature per processing block, containing | |
213 blocksize/2+1 power values corresponding to the FFT bins from DC to | |
214 Nyquist inclusive. The DC bin is always returned. | |
215 | |
216 | |
217 Spectral Centroid | |
218 ================= | |
219 | |
220 System identifier: vamp-example-plugins:spectralcentroid | |
221 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#spectralcentroid | |
222 | |
223 Spectral Centroid calculates the "centre of gravity" of the frequency | |
224 spectrum for each input frame. | |
225 | |
226 Parameters | |
227 ---------- | |
228 | |
229 None. | |
230 | |
231 Outputs | |
232 ------- | |
233 | |
234 Log Frequency Centroid | |
235 ~~~~~~~~~~~~~~~~~~~~~~ | |
236 | |
237 The centroid of the log-weighted frequency spectrum. That is, the sum | |
238 across Fourier transform output bins of the logarithm of the bin | |
239 frequency multiplied by the bin magnitude, divided by the sum of the | |
240 bin magnitudes, and the inverse logarithm taken so as to give the | |
241 result as a frequency in Hz. | |
242 | |
243 Linear Frequency Centroid | |
244 ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
245 | |
246 The centroid of the linear-weighted frequency spectrum. That is, the | |
247 sum across Fourier transform output bins of the bin frequency | |
248 multiplied by the bin magnitude, divided by the sum of the bin | |
249 magnitudes. The result is a frequency in Hz. | |
250 | |
251 | |
252 Zero Crossings | |
253 ============== | |
254 | |
255 System identifier: vamp-example-plugins:zerocrossing | |
256 RDF URI: http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#zerocrossing | |
257 | |
258 Zero Crossings calculates the positions and density of "zero-crossing" | |
259 points in an audio waveform. For the purposes of this plugin, that | |
260 means those positions at which the sampled value switches from | |
261 zero-or-less to greater-than-zero, or vice versa. | |
262 | |
263 Parameters | |
264 ---------- | |
265 | |
266 None. | |
267 | |
268 Outputs | |
269 ------- | |
270 | |
271 Zero Crossing Counts | |
272 ~~~~~~~~~~~~~~~~~~~~ | |
273 | |
274 The number of zero-crossing points found in the current block of | |
275 samples, as a single-valued feature returned per processing block. | |
276 | |
277 Zero Crossings | |
278 ~~~~~~~~~~~~~~ | |
279 | |
280 The locations of zero-crossing points, returning one feature | |
281 timestamped to the zero-crossing location, without values, for each | |
282 crossing point. | |
283 |