comparison README @ 18:b4043af42278

* Some textual changes
author cannam
date Mon, 10 Apr 2006 10:31:19 +0000
parents 61887dda7fe0
children 0e7aa8fabd76
comparison
equal deleted inserted replaced
17:a67eeb9d6341 18:b4043af42278
3 ==== 3 ====
4 4
5 An API for audio analysis and feature extraction plugins. 5 An API for audio analysis and feature extraction plugins.
6 6
7 Vamp is an API for C and C++ plugins that process sampled audio data 7 Vamp is an API for C and C++ plugins that process sampled audio data
8 to produce descriptive output, such as measurements of particular 8 to produce descriptive output (measurements or semantic observations).
9 features of the audio or semantic output based on them.
10 9
11 The principal differences between Vamp and a real-time audio 10 The principal differences between Vamp and a real-time audio
12 processing plugin system such as VST are: 11 processing plugin system such as VST are:
13 12
14 * Vamp plugins may output complex multidimensional data with labels. 13 * Vamp plugins may output complex multidimensional data with labels.
23 based on its input until the end of a processing run and then 22 based on its input until the end of a processing run and then
24 return all results at once. 23 return all results at once.
25 24
26 * Vamp plugins have more control over their inputs than a typical 25 * Vamp plugins have more control over their inputs than a typical
27 real-time processing plugin. For example, they can indicate to 26 real-time processing plugin. For example, they can indicate to
28 the host the permitted range of processing block sizes, and can 27 the host their preferred processing block and step sizes, and these
29 request input data in the frequency domain instead of the time 28 may differ.
30 domain. 29
30 * Vamp plugins may ask to receive data in the frequency domain
31 instead of the time domain. The host takes the responsibility
32 for converting the input data using an FFT of windowed frames.
33 This simplifies plugins that do straightforward frequency-domain
34 processing and permits the host to cache frequency-domain data
35 when possible.
31 36
32 * A Vamp plugin is configured once before each processing run, and 37 * A Vamp plugin is configured once before each processing run, and
33 receives no further parameter changes during use -- unlike real 38 receives no further parameter changes during use -- unlike real
34 time plugin APIs in which the input parameters may change at any 39 time plugin APIs in which the input parameters may change at any
35 time. This also means that fundamental properties such as the 40 time. This also means that fundamental properties such as the
36 number of values per output or the preferred processing block 41 number of values per output or the preferred processing block
37 size can depend on the input parameters. 42 size may depend on the input parameters.
38 43
39 44
40 About this SDK 45 About this SDK
41 ============== 46 ==============
42 47
50 platform) exposing one C-linkage entry point (vampGetPluginDescriptor) 55 platform) exposing one C-linkage entry point (vampGetPluginDescriptor)
51 which returns data defined in the rest of this C header. 56 which returns data defined in the rest of this C header.
52 57
53 Although this is the official API for Vamp, we don't recommend that 58 Although this is the official API for Vamp, we don't recommend that
54 you program directly to it. The C++ abstraction in the SDK directory 59 you program directly to it. The C++ abstraction in the SDK directory
55 (below) is likely to be preferable for most purposes and also better 60 (below) is likely to be preferable for most purposes, and is better
56 documented. 61 documented.
57 62
58 * vamp-sdk 63 * vamp-sdk
59 64
60 C++ classes for straightforwardly implementing Vamp plugins and hosts. 65 C++ classes for straightforwardly implementing Vamp plugins and hosts.
61 Plugins should subclass Vamp::Plugin (in vamp-sdk/Plugin.h) and then 66
62 use a Vamp::PluginAdapter to expose the correct C API for the plugin. 67 Plugins should subclass Vamp::Plugin and then use a
68 Vamp::PluginAdapter to expose the correct C API for the plugin. Read
69 vamp-sdk/PluginBase.h and Plugin.h for code documentation.
70
63 Hosts may use the Vamp::PluginHostAdapter to convert the loaded 71 Hosts may use the Vamp::PluginHostAdapter to convert the loaded
64 plugin's C API back into a Vamp::Plugin object. 72 plugin's C API back into a Vamp::Plugin object.
65 73
66 * examples 74 * examples
67 75
78 86
79 87
80 Building the SDK 88 Building the SDK
81 ================ 89 ================
82 90
83 Edit the Makefile for your platform according to the comments in it. 91 Edit the Makefile to suit your platform according to the comments in
84 Type "make". 92 it. Type "make".
85 93
86 94
87 Licensing 95 Licensing
88 ========= 96 =========
89 97
90 This plugin SDK is freely redistributable under the "new BSD" licence. 98 This plugin SDK is freely redistributable under a "new-style BSD"
91 See the file COPYING for more details. In short, you are permitted to 99 licence. See the file COPYING for more details. In short, you are
92 reuse the SDK and example plugins in any commercial or non-commercial, 100 permitted to reuse the SDK and example plugins in any commercial or
93 proprietary or open-source application under almost any conditions. 101 non-commercial, proprietary or open-source application or plugin under
102 almost any conditions provided you retain the original copyright note.
94 103
95 104
96 See Also 105 See Also
97 ======== 106 ========
98 107