annotate README @ 14:b63909cbbf57

* Add README file
author cannam
date Thu, 06 Apr 2006 16:36:24 +0000
parents
children 61887dda7fe0
rev   line source
cannam@14 1
cannam@14 2 Vamp
cannam@14 3 ====
cannam@14 4
cannam@14 5 An API for audio analysis and feature extraction plugins.
cannam@14 6
cannam@14 7 Vamp is an API for C and C++ plugins that process sampled audio data
cannam@14 8 to produce descriptive output, such as measurements of particular
cannam@14 9 features of the audio or semantic output based on them.
cannam@14 10
cannam@14 11 The principal differences between Vamp and a real-time audio
cannam@14 12 processing plugin system such as VST are:
cannam@14 13
cannam@14 14 * Vamp plugins may output complex multidimensional data with labels.
cannam@14 15 As a consequence, they are likely to work best when the output
cannam@14 16 data has a much lower sampling rate than the input. (This also
cannam@14 17 means it is usually desirable to implement them in C++ using the
cannam@14 18 high-level base class provided rather than use the raw C API.)
cannam@14 19
cannam@14 20 * While Vamp plugins receive data block-by-block, they are not
cannam@14 21 required to return output immediately on receiving the input.
cannam@14 22 A Vamp plugin may be non-causal, preferring to store up data
cannam@14 23 based on its input until the end of a processing run and then
cannam@14 24 return all results at once.
cannam@14 25
cannam@14 26 * Vamp plugins have more control over their inputs than a typical
cannam@14 27 real-time processing plugin. For example, they can indicate to
cannam@14 28 the host the permitted range of processing block sizes, and can
cannam@14 29 request input data in the frequency domain instead of the time
cannam@14 30 domain.
cannam@14 31
cannam@14 32 * A Vamp plugin is configured once before each processing run, and
cannam@14 33 receives no further parameter changes during use -- unlike real
cannam@14 34 time plugin APIs in which the input parameters may change at any
cannam@14 35 time. This also means that fundamental properties such as the
cannam@14 36 number of values per output or the preferred processing block
cannam@14 37 size can depend on the input parameters.
cannam@14 38
cannam@14 39
cannam@14 40 About this SDK
cannam@14 41 ==============
cannam@14 42
cannam@14 43 This Software Development Kit contains the following:
cannam@14 44
cannam@14 45 * vamp/vamp.h
cannam@14 46
cannam@14 47 The formal C language plugin API for Vamp plugins.
cannam@14 48
cannam@14 49 A Vamp plugin is a dynamic library (.so, .dll or .dylib depending on
cannam@14 50 platform) exposing one C-linkage entry point (vampGetPluginDescriptor)
cannam@14 51 which returns data defined in the rest of this C header.
cannam@14 52
cannam@14 53 Although this is the official API for Vamp, we don't recommend that
cannam@14 54 you program directly to it. The C++ abstraction in the SDK directory
cannam@14 55 (below) is likely to be preferable for most purposes and also better
cannam@14 56 documented.
cannam@14 57
cannam@14 58 * vamp-sdk
cannam@14 59
cannam@14 60 C++ classes for straightforwardly implementing Vamp plugins and hosts.
cannam@14 61 Plugins should subclass Vamp::Plugin (in vamp-sdk/Plugin.h) and then
cannam@14 62 use a Vamp::PluginAdapter to expose the correct C API for the plugin.
cannam@14 63 Hosts may use the Vamp::PluginHostAdapter to convert the loaded
cannam@14 64 plugin's C API back into a Vamp::Plugin object.
cannam@14 65
cannam@14 66 * examples
cannam@14 67
cannam@14 68 Example plugins implemented using the C++ classes. ZeroCrossing
cannam@14 69 calculates the positions and density of zero-crossing points in an
cannam@14 70 audio waveform; SpectralCentroid calculates the centre of gravity of
cannam@14 71 the frequency domain representation of each block of audio.
cannam@14 72
cannam@14 73 * host
cannam@14 74
cannam@14 75 The simplest possible Vamp host -- this doesn't even process anything
cannam@14 76 yet, just loads the plugins and prints out their names.
cannam@14 77
cannam@14 78
cannam@14 79 Building the SDK
cannam@14 80 ================
cannam@14 81
cannam@14 82 Edit the Makefile for your platform according to the comments in it.
cannam@14 83 Type "make".
cannam@14 84
cannam@14 85
cannam@14 86 Licensing
cannam@14 87 =========
cannam@14 88
cannam@14 89 This plugin SDK is freely redistributable under the "new BSD" licence.
cannam@14 90 See the file COPYING for more details. In short, you are permitted to
cannam@14 91 reuse the SDK and example plugins in any commercial or non-commercial,
cannam@14 92 proprietary or open-source application under almost any conditions.
cannam@14 93
cannam@14 94
cannam@14 95 See Also
cannam@14 96 ========
cannam@14 97
cannam@14 98 Sonic Visualiser, an interactive open-source graphical audio
cannam@14 99 inspection, analysis and visualisation tool supporting Vamp plugins.
cannam@14 100
cannam@14 101
cannam@14 102 Chris Cannam
cannam@14 103 Centre for Digital Music
cannam@14 104 Queen Mary, University of London