comparison vamp-sdk/doc-overview @ 54:933fee59d33a

* doc updates
author cannam
date Fri, 30 Mar 2007 17:14:16 +0000
parents
children 0f8524203677
comparison
equal deleted inserted replaced
53:74822738965b 54:933fee59d33a
1
2 /** \mainpage Vamp Plugin SDK
3
4 \section about About Vamp
5
6 Vamp is an API for C and C++ plugins that process sampled audio data
7 to produce descriptive output (measurements or semantic observations).
8 Find more information at http://www.vamp-plugins.org/ .
9
10 Although the official API for Vamp plugins is defined in C for maximum
11 binary compatibility, we strongly recommend using the provided C++
12 classes in the SDK to implement your own plugins and hosts.
13
14 \section plugins For Plugins
15
16 Plugins should subclass Vamp::Plugin, and then use a
17 Vamp::PluginAdapter to expose the correct C API for the plugin. Read
18 the documentation for Vamp::PluginBase and Vamp::Plugin before
19 starting.
20
21 Plugins should be compiled and linked into dynamic libraries using the
22 usual convention for your platform, and should link (preferably
23 statically) with -lvamp-sdk. Any number of plugins can reside in a
24 single dynamic library. See plugins.cpp in the example plugins
25 directory for the sort of code that will need to accompany your plugin
26 class or classes, to make it possible for a host to look up your
27 plugins properly.
28
29 The following example plugins are provided:
30
31 - ZeroCrossing calculates the positions and density of zero-crossing
32 points in an audio waveform.
33
34 - SpectralCentroid calculates the centre of gravity of the frequency
35 domain representation of each block of audio.
36
37 - AmplitudeFollower is an implementation of SuperCollider's
38 amplitude-follower algorithm as a simple Vamp plugin.
39
40 - PercussionOnsetDetector estimates the locations of percussive
41 onsets using a simple method described in "Drum Source Separation
42 using Percussive Feature Detection and Spectral Modulation" by Dan
43 Barry, Derry Fitzgerald, Eugene Coyle and Bob Lawlor, ISSC 2005.
44
45 \section hosts For Hosts
46
47 Hosts will usually want to use a Vamp::PluginHostAdapter to convert
48 each plugin's exposed C API back into a useful Vamp::Plugin object.
49
50 Hosts should link with -lvamp-hostsdk.
51
52 The Vamp API does not officially specify how to load plugin libraries
53 or where to find them. However, the SDK does include a function
54 (Vamp::PluginHostAdapter::getPluginPath()) that returns a recommended
55 directory search path that hosts may use for plugin libraries.
56
57 Our suggestion for a host is to search each directory in this path for
58 .DLL (on Windows), .so (on Linux, Solaris, BSD etc) or .dylib (on
59 OS/X) files, then to load each one and perform a dynamic name lookup
60 on the vampGetPluginDescriptor function to enumerate the plugins in
61 the library. The example host has some code that may help, but this
62 operation will necessarily be system-dependent.
63
64 Vamp also has an informal convention for sorting plugins into
65 functional categories. In addition to the library file itself, a
66 plugin library may install a category file with the same name as the
67 library but .cat extension. The existence and format of this file are
68 not specified by the Vamp API, but by convention the file may contain
69 lines of the format
70
71 \code
72 vamp:pluginlibrary:pluginname::General Category > Specific Category
73 \endcode
74
75 which a host may read and use to assign plugins a location within a
76 category tree for display to the user. The expectation is that
77 advanced users may also choose to set up their own preferred category
78 trees, which is why this information is not queried as part of the
79 Vamp API itself.
80
81 There is an example host in the "host" directory from
82 which code may be drawn.
83
84 \section license License
85
86 This plugin SDK is freely redistributable under a "new-style BSD"
87 licence. See the file COPYING for more details. In short, you may
88 modify and redistribute the SDK and example plugins within any
89 commercial or non-commercial, proprietary or open-source plugin or
90 application under almost any conditions, with no obligation to provide
91 source code, provided you retain the original copyright note.
92
93
94 */