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