annotate README @ 25:abd05f5eee2f

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