Mercurial > hg > vamp-plugin-sdk
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 */ |