Mercurial > hg > vamp-plugin-sdk
comparison README @ 78:6bf198e06d72 vamp-plugin-sdk-v1.1
* doc updates
author | cannam |
---|---|
date | Thu, 23 Aug 2007 10:31:46 +0000 |
parents | 0f8524203677 |
children | a6551cf99aff |
comparison
equal
deleted
inserted
replaced
77:ba5f87117b67 | 78:6bf198e06d72 |
---|---|
35 This simplifies plugins that do straightforward frequency-domain | 35 This simplifies plugins that do straightforward frequency-domain |
36 processing and permits the host to cache frequency-domain data | 36 processing and permits the host to cache frequency-domain data |
37 when possible. | 37 when possible. |
38 | 38 |
39 * A Vamp plugin is configured once before each processing run, and | 39 * A Vamp plugin is configured once before each processing run, and |
40 receives no further parameter changes during use -- unlike real | 40 receives no further parameter changes during use -- unlike real- |
41 time plugin APIs in which the input parameters may change at any | 41 time plugin APIs in which the input parameters may change at any |
42 time. This also means that fundamental properties such as the | 42 time. This also means that fundamental properties such as the |
43 number of values per output or the preferred processing block | 43 number of values per output or the preferred processing block |
44 size may depend on the input parameters. | 44 size may depend on the input parameters. |
45 | 45 |
47 | 47 |
48 | 48 |
49 About this SDK | 49 About this SDK |
50 ============== | 50 ============== |
51 | 51 |
52 This Software Development Kit contains the following: | 52 This is version 1.1 of the Vamp plugin Software Development Kit. |
53 Plugins and hosts built with this SDK are binary compatible with those | |
54 built using version 1.0 of the SDK. | |
55 | |
56 This SDK contains the following: | |
53 | 57 |
54 * vamp/vamp.h | 58 * vamp/vamp.h |
55 | 59 |
56 The formal C language plugin API for Vamp plugins. | 60 The formal C language plugin API for Vamp plugins. |
57 | 61 |
58 A Vamp plugin is a dynamic library (.so, .dll or .dylib depending on | 62 A Vamp plugin is a dynamic library (.so, .dll or .dylib depending on |
59 platform) exposing one C-linkage entry point (vampGetPluginDescriptor) | 63 platform) exposing one C-linkage entry point (vampGetPluginDescriptor) |
60 which returns data defined in the rest of this C header. | 64 which returns data defined in the rest of this C header. |
61 | 65 |
62 Although this is the official API for Vamp, we don't recommend that | 66 Although the C API is the official API for Vamp, we don't recommend |
63 you program directly to it. The C++ abstraction in the SDK directory | 67 that you program directly to it. The C++ abstraction found in the |
64 (below) is likely to be preferable for most purposes, and is better | 68 vamp-sdk directory (below) is preferable for most purposes and is |
65 documented. | 69 more thoroughly documented. |
66 | 70 |
67 * vamp-sdk | 71 * vamp-sdk |
68 | 72 |
69 C++ classes for straightforwardly implementing Vamp plugins and hosts. | 73 C++ classes for straightforwardly implementing Vamp plugins and hosts. |
70 | 74 |
71 Plugins should subclass Vamp::Plugin and then use a | 75 Plugins should subclass Vamp::Plugin and then use Vamp::PluginAdapter |
72 Vamp::PluginAdapter to expose the correct C API for the plugin. Read | 76 to expose the correct C API for the plugin. Plugin authors should |
73 vamp-sdk/PluginBase.h and Plugin.h for code documentation. Plugins | 77 read vamp-sdk/PluginBase.h and Plugin.h for code documentation, and |
78 refer to the example plugin code in the examples directory. Plugins | |
74 should link with -lvamp-sdk. | 79 should link with -lvamp-sdk. |
75 | 80 |
76 Hosts may use the Vamp::PluginHostAdapter to convert the loaded | 81 Hosts may use the Vamp::PluginHostAdapter to convert the loaded |
77 plugin's C API back into a Vamp::Plugin object. Hosts should link | 82 plugin's C API back into a Vamp::Plugin object. Host authors should |
78 with -lvamp-hostsdk. | 83 refer to the example host code in the host directory. Hosts should |
84 link with -lvamp-hostsdk. | |
79 | 85 |
80 * vamp-sdk/hostext | 86 * vamp-sdk/hostext |
81 | 87 |
82 Additional C++ classes to make a host's life easier (introduced in | 88 Additional C++ classes to make a host's life easier (introduced in |
83 version 1.1 of the Vamp SDK). | 89 version 1.1 of the Vamp SDK). |
84 | 90 |
85 Vamp::HostExt::PluginLoader provides a very simple interface for a | 91 Vamp::HostExt::PluginLoader provides a very easy interface for a host |
86 host to discover, load, and find out category information about the | 92 to discover, load, and find out category information about the |
87 available plugins. Most "casual" Vamp hosts will probably want to use | 93 available plugins. Most "casual" Vamp hosts will probably want to use |
88 this class. | 94 this class. |
89 | 95 |
90 Vamp::HostExt::PluginInputDomainAdapter provides a simple means for | 96 Vamp::HostExt::PluginInputDomainAdapter provides a means for hosts to |
91 hosts to handle plugins that expect frequency-domain input, without | 97 handle plugins that expect frequency-domain input, without having to |
92 having to convert the input themselves. | 98 convert the input themselves. |
93 | 99 |
94 Vamp::HostExt::PluginChannelAdapter provides a simple means for hosts | 100 Vamp::HostExt::PluginChannelAdapter provides a means for hosts to use |
95 to use plugins that do not necessarily support the same number of | 101 plugins that do not necessarily support the same number of audio |
96 audio channels as they have available, without having to apply a | 102 channels as they have available, without having to worry about |
97 channel management / mixdown policy themselves. | 103 applying a channel management / mixdown policy themselves. |
98 | 104 |
99 The PluginLoader class can also use the input domain and channel | 105 The PluginLoader class can also use the input domain and channel |
100 adapters automatically to make the entire conversion process | 106 adapters automatically to make the entire conversion process |
101 transparent to the host if required. | 107 transparent to the host if required. |
102 | 108 |
104 | 110 |
105 Example plugins implemented using the C++ classes. ZeroCrossing | 111 Example plugins implemented using the C++ classes. ZeroCrossing |
106 calculates the positions and density of zero-crossing points in an | 112 calculates the positions and density of zero-crossing points in an |
107 audio waveform. SpectralCentroid calculates the centre of gravity of | 113 audio waveform. SpectralCentroid calculates the centre of gravity of |
108 the frequency domain representation of each block of audio. | 114 the frequency domain representation of each block of audio. |
115 AmplitudeFollower tracks the amplitude of a signal based on a method | |
116 from the SuperCollider real-time audio system. | |
109 PercussionOnsetDetector estimates the locations of percussive onsets | 117 PercussionOnsetDetector estimates the locations of percussive onsets |
110 using a simple method described in "Drum Source Separation using | 118 using a simple method described in "Drum Source Separation using |
111 Percussive Feature Detection and Spectral Modulation" by Dan Barry, | 119 Percussive Feature Detection and Spectral Modulation" by Dan Barry, |
112 Derry Fitzgerald, Eugene Coyle and Bob Lawlor, ISSC 2005. | 120 Derry Fitzgerald, Eugene Coyle and Bob Lawlor, ISSC 2005. |
113 | 121 |