# HG changeset patch # User cannam # Date 1187865106 0 # Node ID 6bf198e06d721fe081866ce07efbce4341a953c7 # Parent ba5f87117b676dd0897783b1cf2b2db933472f2c * doc updates diff -r ba5f87117b67 -r 6bf198e06d72 README --- a/README Thu Jun 07 14:22:22 2007 +0000 +++ b/README Thu Aug 23 10:31:46 2007 +0000 @@ -37,7 +37,7 @@ when possible. * A Vamp plugin is configured once before each processing run, and - receives no further parameter changes during use -- unlike real + receives no further parameter changes during use -- unlike real- time plugin APIs in which the input parameters may change at any time. This also means that fundamental properties such as the number of values per output or the preferred processing block @@ -49,7 +49,11 @@ About this SDK ============== -This Software Development Kit contains the following: +This is version 1.1 of the Vamp plugin Software Development Kit. +Plugins and hosts built with this SDK are binary compatible with those +built using version 1.0 of the SDK. + +This SDK contains the following: * vamp/vamp.h @@ -59,42 +63,44 @@ platform) exposing one C-linkage entry point (vampGetPluginDescriptor) which returns data defined in the rest of this C header. -Although this is the official API for Vamp, we don't recommend that -you program directly to it. The C++ abstraction in the SDK directory -(below) is likely to be preferable for most purposes, and is better -documented. +Although the C API is the official API for Vamp, we don't recommend +that you program directly to it. The C++ abstraction found in the +vamp-sdk directory (below) is preferable for most purposes and is +more thoroughly documented. * vamp-sdk C++ classes for straightforwardly implementing Vamp plugins and hosts. -Plugins should subclass Vamp::Plugin and then use a -Vamp::PluginAdapter to expose the correct C API for the plugin. Read -vamp-sdk/PluginBase.h and Plugin.h for code documentation. Plugins +Plugins should subclass Vamp::Plugin and then use Vamp::PluginAdapter +to expose the correct C API for the plugin. Plugin authors should +read vamp-sdk/PluginBase.h and Plugin.h for code documentation, and +refer to the example plugin code in the examples directory. Plugins should link with -lvamp-sdk. Hosts may use the Vamp::PluginHostAdapter to convert the loaded -plugin's C API back into a Vamp::Plugin object. Hosts should link -with -lvamp-hostsdk. +plugin's C API back into a Vamp::Plugin object. Host authors should +refer to the example host code in the host directory. Hosts should +link with -lvamp-hostsdk. * vamp-sdk/hostext Additional C++ classes to make a host's life easier (introduced in version 1.1 of the Vamp SDK). -Vamp::HostExt::PluginLoader provides a very simple interface for a -host to discover, load, and find out category information about the +Vamp::HostExt::PluginLoader provides a very easy interface for a host +to discover, load, and find out category information about the available plugins. Most "casual" Vamp hosts will probably want to use this class. -Vamp::HostExt::PluginInputDomainAdapter provides a simple means for -hosts to handle plugins that expect frequency-domain input, without -having to convert the input themselves. +Vamp::HostExt::PluginInputDomainAdapter provides a means for hosts to +handle plugins that expect frequency-domain input, without having to +convert the input themselves. -Vamp::HostExt::PluginChannelAdapter provides a simple means for hosts -to use plugins that do not necessarily support the same number of -audio channels as they have available, without having to apply a -channel management / mixdown policy themselves. +Vamp::HostExt::PluginChannelAdapter provides a means for hosts to use +plugins that do not necessarily support the same number of audio +channels as they have available, without having to worry about +applying a channel management / mixdown policy themselves. The PluginLoader class can also use the input domain and channel adapters automatically to make the entire conversion process @@ -106,6 +112,8 @@ calculates the positions and density of zero-crossing points in an audio waveform. SpectralCentroid calculates the centre of gravity of the frequency domain representation of each block of audio. +AmplitudeFollower tracks the amplitude of a signal based on a method +from the SuperCollider real-time audio system. PercussionOnsetDetector estimates the locations of percussive onsets using a simple method described in "Drum Source Separation using Percussive Feature Detection and Spectral Modulation" by Dan Barry, diff -r ba5f87117b67 -r 6bf198e06d72 vamp-sdk/Plugin.h --- a/vamp-sdk/Plugin.h Thu Jun 07 14:22:22 2007 +0000 +++ b/vamp-sdk/Plugin.h Thu Aug 23 10:31:46 2007 +0000 @@ -361,14 +361,14 @@ * will point to one array of floats per input channel, and each * of these arrays will contain blockSize/2+1 consecutive pairs of * real and imaginary component floats corresponding to bins - * 0..(blockSize/2) of the FFT output, where bin 0 contains the DC - * output and bin blockSize/2 corresponds to the Nyquist output. - * There will therefore be blockSize+2 floats per channel in total. - * The timestamp will be the real time in seconds of the centre of - * the FFT input window (i.e. the very first block passed to - * process might contain the FFT of half a block of zero samples - * and the first half-block of the actual data, with a timestamp - * of zero). + * 0..(blockSize/2) of the FFT output. That is, bin 0 (the first + * pair of floats) contains the DC output, up to bin blockSize/2 + * which contains the Nyquist-frequency output. There will + * therefore be blockSize+2 floats per channel in total. The + * timestamp will be the real time in seconds of the centre of the + * FFT input window (i.e. the very first block passed to process + * might contain the FFT of half a block of zero samples and the + * first half-block of the actual data, with a timestamp of zero). * * Return any features that have become available after this * process call. (These do not necessarily have to fall within diff -r ba5f87117b67 -r 6bf198e06d72 vamp-sdk/hostext/PluginLoader.cpp --- a/vamp-sdk/hostext/PluginLoader.cpp Thu Jun 07 14:22:22 2007 +0000 +++ b/vamp-sdk/hostext/PluginLoader.cpp Thu Aug 23 10:31:46 2007 +0000 @@ -525,7 +525,6 @@ PluginLoader::Impl::listFiles(string dir, string extension) { vector files; - size_t extlen = extension.length(); #ifdef _WIN32 @@ -543,6 +542,8 @@ FindClose(fh); #else + + size_t extlen = extension.length(); DIR *d = opendir(dir.c_str()); if (!d) return files;