cannam@0
|
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
cannam@0
|
2 <html>
|
cannam@0
|
3 <head>
|
cannam@0
|
4 <link rel="stylesheet" media="screen" type="text/css" href="screen.css"/>
|
cannam@0
|
5 <link rel="icon" type="image/png" href="images/waveform.png"/>
|
cannam@0
|
6 <link rel="shortcut" type="image/png" href="images/waveform.png"/>
|
cannam@0
|
7 <title>Vamp Plugins</title>
|
cannam@0
|
8 <meta name="robots" content="index"/>
|
cannam@0
|
9 <meta name="keywords" content="vamp plugin api plugins sonic visualiser visualizer visualise visualize audio music spectrogram feature extraction feapi vsi dssi"/>
|
cannam@0
|
10 <meta name="description" content="Vamp is a system for plugins that extract feature information from audio data."/>
|
cannam@0
|
11 </head>
|
cannam@0
|
12 <body>
|
cannam@0
|
13 <h1 id="header"><span>Vamp Plugins</span></h1>
|
cannam@0
|
14
|
cannam@0
|
15 <div id="nav">
|
cannam@0
|
16 <ul>
|
cannam@0
|
17 <li class="first"><a href="index.html">Home</a></li>
|
cannam@0
|
18 <li><a href="rationale.html">Rationale</a></li>
|
cannam@0
|
19 <li><a href="download.html">Download Plugins</a></li>
|
cannam@0
|
20 <li><a href="develop.html">Make Plugins</a></li>
|
cannam@0
|
21 <li><a href="http://vamp-plugins.org/forum/">Forum</a></li>
|
cannam@35
|
22 <li><a href="http://vamp-plugins.org/wiki/">Wiki</a></li>
|
cannam@0
|
23 </ul></div>
|
cannam@0
|
24
|
cannam@0
|
25 <h2 id="firstpara">Comparing Vamp and VST</h2>
|
cannam@0
|
26
|
cannam@0
|
27 <p>The principal technical differences between Vamp and a real-time audio
|
cannam@0
|
28 plugin system such as VST are:</p>
|
cannam@0
|
29
|
cannam@0
|
30 <ul>
|
cannam@0
|
31
|
cannam@0
|
32 <li>Vamp plugins may output complex multidimensional data with
|
cannam@0
|
33 labels. As a consequence, they are likely to work best when the
|
cannam@0
|
34 output data has a much lower sampling rate than the input.</li>
|
cannam@0
|
35
|
cannam@0
|
36 <li>While Vamp plugins receive their data block-by-block, they
|
cannam@0
|
37 are not required to return output immediately on receiving the
|
cannam@0
|
38 input. A Vamp plugin may be non-causal, preferring to store up
|
cannam@0
|
39 data based on its input until the end of a processing run and
|
cannam@0
|
40 then return all results at once.</li>
|
cannam@0
|
41
|
cannam@0
|
42 <li>Vamp plugins have more control over their inputs than a
|
cannam@0
|
43 typical real-time processing plugin. For example, they can
|
cannam@0
|
44 indicate to the host their preferred processing block and step
|
cannam@0
|
45 sizes, and these do not have to be equal.</li>
|
cannam@0
|
46
|
cannam@0
|
47 <li>Vamp plugins may ask to receive data in the frequency domain
|
cannam@0
|
48 instead of the time domain. The host takes the responsibility
|
cannam@0
|
49 for converting the input data using an FFT of windowed frames.
|
cannam@0
|
50 This simplifies plugins that do straightforward frequency-domain
|
cannam@0
|
51 processing and permits the host to cache frequency-domain data
|
cannam@0
|
52 when possible.</li>
|
cannam@0
|
53
|
cannam@0
|
54 <li>A Vamp plugin is configured once before each processing run,
|
cannam@0
|
55 and receives no further parameter changes during use –
|
cannam@0
|
56 unlike real time plugin APIs in which the input parameters may
|
cannam@0
|
57 change at any time. This means that fundamental properties such
|
cannam@0
|
58 as the number of values per output or the preferred processing
|
cannam@0
|
59 block size may depend on the input parameters. Many Vamp
|
cannam@0
|
60 plugins would be unable to work without this guarantee.</li>
|
cannam@0
|
61
|
cannam@0
|
62 <li>Vamp plugins do not have to be able to run in real time.</li>
|
cannam@0
|
63
|
cannam@0
|
64 </ul>
|
cannam@0
|
65
|
cannam@0
|
66
|
cannam@0
|
67 </body>
|
cannam@0
|
68 </html>
|