Mercurial > hg > vamp-website
changeset 6:73f05249ac60 website
* Update Vamp example plugins RDF, add user doc
author | cannam |
---|---|
date | Fri, 14 Nov 2008 11:55:26 +0000 |
parents | 3bb2cfd86a2f |
children | 60ee9a026a62 |
files | plugin-doc/vamp-example-plugins.html rdf/plugins/vamp-example-plugins.n3 |
diffstat | 2 files changed, 343 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin-doc/vamp-example-plugins.html Fri Nov 14 11:55:26 2008 +0000 @@ -0,0 +1,302 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <link rel="stylesheet" media="screen" type="text/css" href="/screen.css"/> + <link rel="icon" type="image/png" href="/images/waveform.png"/> + <link rel="shortcut" type="image/png" href="/images/waveform.png"/> + <title>Vamp Example Plugins: User Documentation</title> + <meta name="robots" content="index"/> + </head> + <body> +<h1 id="header"><span>Vamp Example Plugins</span></h1> + +<p>The <code>vamp-example-plugins</code> library contains a number of + <a href="http://www.vamp-plugins.org/">Vamp audio analysis + plugins</a> provided as part of the Vamp plugin SDK. + +</p> +<p>These are simple, but sometimes useful, plugins whose source code you + are free to study and reuse in any proprietary or non-proprietary + plugins of your own without any licensing obligation. +</p> +<p>User documentation for the individual plugins in this library follows. +</p> +<div class="toc2">1. <a href="#amplitudefollower">Amplitude Follower</a></div> +<div class="toc2">2. <a href="#fixedtempo">Simple Fixed Tempo Estimator</a></div> +<div class="toc2">3. <a href="#percussiononsets">Simple Percussion Onset Detector</a></div> +<div class="toc2">4. <a href="#powerspectrum">Simple Power Spectrum</a></div> +<div class="toc2">5. <a href="#spectralcentroid">Spectral Centroid</a></div> +<div class="toc2">6. <a href="#zerocrossing">Zero Crossings</a></div> + +<div class="oddcontent"><a name="amplitudefollower"></a><h2>1. Amplitude Follower</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:amplitudefollower</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#amplitudefollower">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#amplitudefollower</a> +</p> +<p>Amplitude Follower tracks and returns the amplitude of the audio + signal sample by sample, returning peak values block by block. +</p> +</div><div class="evencontent"><a name="toc2"></a><h3>1.1. Parameters</h3> + +<p><b>Attack time</b> (seconds) – The 60dB convergence time for an increase in amplitude.<br> + <b>Release time</b> (seconds) – The 60dB convergence time for a decrease in amplitude. +</p> +<p>For example, if you feed the plugin with a simple step function that + jumps from level A to level B, then the output will start off as A, + then at the moment of stepping it will start to converge exponentially + to B, reaching with 60dB of the actual value within the time specified + by the Attack time parameter. +</p> +<p>Similarly, if the plugin's input then steps down from B to A, the + output will start converging at the moment of stepping, reaching + within 60dB of the new value within the time specified by the Release + time parameter. +</p> +</div><div class="oddcontent"><a name="toc3"></a><h3>1.2. Outputs</h3> + +</div><div class="evencontent"><a name="toc4"></a><h4>1.2.1. Amplitude</h4> + +<p>The peak tracked amplitude (in volts) for the current processing block. +</p> +</div><div class="oddcontent"><a name="toc5"></a><h3>1.3. References and Credits</h3> + +<p>Amplitude Follower uses a method from the SuperCollider audio + processing language. It was implemented as a Vamp plugin by Dan + Stowell. +</p> +</div><div class="evencontent"><a name="fixedtempo"></a><h2>2. Simple Fixed Tempo Estimator</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:fixedtempo</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#fixedtempo">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#fixedtempo</a> +</p> +<p>Simple Fixed Tempo Estimator analyses a fragment of audio and + estimates its tempo. It assumes that its input is of fixed tempo, and + it analyses only the first (small but configurable number of) seconds + before returning a result, discarding all subsequent input. +</p> +<p>The plugin calculates an overall energy rise function across a series + of short frequency-domain input frames, takes the autocorrelation of + this function, filters it to stress possible metrical patterns, + locates peaks, and converts from autocorrelation lag to the + corresponding tempo. +</p> +<p>The filtering process involves searching for peaks at simple + metrically related intervals (at a given autocorrelation lag as well + as at 0.5, 2, and 4 times that lag), boosting each peak that shows + strong related peaks. A simplistic perceptual curve is also applied + in order to increase the probability of detecting a "likely" tempo. + For improved tempo precision, each tempo with strong related peaks is + averaged with the tempi calculated from those peaks. +</p> +<p>The method is best suited for 4/4 pop and dance rhythms. +</p> +<p>This plugin returns many of its intermediate calculations as + additional outputs, as well as the most favoured tempo. Although as a + tempo estimator it's still fairly primitive, it is intended to provide + a useful example of a slightly more complex feature extraction plugin + than the other examples, as well as one that returns several different + types of output at a time. +</p> +</div><div class="oddcontent"><a name="toc7"></a><h3>2.1. Parameters</h3> + +<p><b>Minimum estimated tempo</b>, <b>Maximum estimated tempo</b> (bpm) – These + parameters control the range of values within which the tempo + estimator will return its estimate. +</p> +<p><b>Input duration to study</b> (seconds) – The tempo estimator uses only the + first part of its input, discarding any that follows. This parameter + controls how much input it will use. There is no value in increasing + this beyond 8x the duration of the slowest returned beat. The default + of 10 seconds is likely to be appropriate for most purposes. +</p> +</div><div class="evencontent"><a name="toc8"></a><h3>2.2. Outputs</h3> + +</div><div class="oddcontent"><a name="toc9"></a><h4>2.2.1. Tempo</h4> + +<p>The tempo estimator's best guess at the tempo of its input, in beats + per minute. +</p> +<p>This is returned as a feature whose timestamp and duration cover the + range of the input which was used in estimating the tempo, with a + single value containing the tempo. +</p> +</div><div class="evencontent"><a name="toc10"></a><h4>2.2.2. Tempo candidates</h4> + +<p>Several guesses at the possible tempo. This output is returned as a + single feature whose timestamp and duration cover the range of the + input which was used in estimating the tempo, with up to 10 bins + containing one tempo value in each bin, with the "best guess" tempo in + bin 0. +</p> +</div><div class="oddcontent"><a name="toc11"></a><h4>2.2.3. Detection function</h4> + +<p>The basic onset detection function used in tempo estimation. +</p> +</div><div class="evencontent"><a name="toc12"></a><h4>2.2.4. Autocorrelation function</h4> + +<p>The autocorrelation of the onset detection function. +</p> +</div><div class="oddcontent"><a name="toc13"></a><h4>2.2.5. Filtered Autocorrelation</h4> + +<p>The autocorrelation after filtering to boost values with possible + metrically related peaks and to apply perceptual weighting. The peak + value of this function is the one that will be used as the "best + guess". +</p> +</div><div class="evencontent"><a name="toc14"></a><h3>2.3. References and Credits</h3> + +<p>Simple Fixed Tempo Estimator uses a method derived from work by + Matthew Davies: see for example M. E. P. Davies and M. D. Plumbley, + <i>Beat Tracking With A Two State Model</i>, in Proceedings of the IEEE + International Conference on Acoustics, Speech and Signal Processing + 2005. This plugin, made by Chris Cannam, is only an unsubtle + simplification of a small part of the published method. +</p> +<p>The Queen Mary plugin set + (<a href="http://www.elec.qmul.ac.uk/digitalmusic/downloads/index.html#qm-vamp-plugins">http://www.elec.qmul.ac.uk/digitalmusic/downloads/index.html#qm-vamp-plugins</a>) + contains a Tempo and Beat Tracker plugin by Matthew Davies providing a + more realistic implementation. +</p> +</div><div class="oddcontent"><a name="percussiononsets"></a><h2>3. Simple Percussion Onset Detector</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:percussiononsets</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#percussiononsets">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#percussiononsets</a> +</p> +<p>Simple Percussion Onset Detector estimates the locations of percussive + onsets in the audio signal. +</p> +<p>The principle is to exploit the broadband nature of noisy percussive + onsets by identifying only those frames in which the energy rise shows + a broadband profile. +</p> +<p>The plugin takes a series of frequency domain frames, and examines + each frame to count the number of bins whose energy content has + increased by more than a certain threshold since the prior frame. + Frames in which this number is at a peak relative to prior and + following frames and also exceeds another threshold value are + classified as percussive onsets. +</p> +</div><div class="evencontent"><a name="toc16"></a><h3>3.1. Parameters</h3> + +<p><b>Energy rise threshold</b> (dB) – The rise in energy within a bin from one + frame to the next that is required for a bin to be counted toward the + detection function's bin count. This roughly corresponds to how + "loud" a percussive sound must be in order to be detected. +</p> +<p><b>Sensitivity</b> (%) – The proportion of bins that must exceed the energy + rise threshold in order for an onset to be detected (at frames in + which the detection function peaks). This roughly corresponds to how + "noisy" a percussive sound must be in order to be detected. +</p> +</div><div class="oddcontent"><a name="toc17"></a><h3>3.2. Outputs</h3> + +</div><div class="evencontent"><a name="toc18"></a><h4>3.2.1. Onsets</h4> + +<p>The estimated onset locations. +</p> +</div><div class="oddcontent"><a name="toc19"></a><h4>3.2.2. Detection Function</h4> + +<p>The energy rise detection function whose peaks were used to estimate + onset locations. +</p> +</div><div class="evencontent"><a name="toc20"></a><h3>3.3. References and Credits</h3> + +<p>The method used in Simple Percussion Onset Detector was described in +Dan Barry, Derry Fitzgerald, Eugene Coyle and + Bob Lawlor, <i>Drum Source Separation using Percussive Feature Detection and + Spectral Modulation</i>, ISSC 2005. The plugin was made by Chris Cannam. +</p> +</div><div class="oddcontent"><a name="powerspectrum"></a><h2>4. Simple Power Spectrum</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:powerspectrum</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#powerspectrum">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#powerspectrum</a> +</p> +<p>Simple Power Spectrum returns a power spectrum calculated from + windowed short-time Fourier transforms of the input audio. (The power + spectrum for a frame consists of a sequence of the squares of the + magnitudes of the complex values for each frequency bin in the result + of the Fourier transform.) +</p> +<p>This very simple plugin is an illustration of the fact that if a + plugin requests frequency-domain input, its input will already be in + the form needed for a spectrum such as this. The plugin has no work + left to do except to calculate the squared magnitude from the + cartesian complex representation. +</p> +<p>This plugin also illustrates how to return "grid-type" visualisation + data from a Vamp plugin. +</p> +</div><div class="evencontent"><a name="toc22"></a><h3>4.1. Parameters</h3> + +<p>None. +</p> +</div><div class="oddcontent"><a name="toc23"></a><h3>4.2. Outputs</h3> + +</div><div class="evencontent"><a name="toc24"></a><h4>4.2.1. Power Spectrum</h4> + +<p>The power spectrum calculated from the input frame. This output + returns a single feature per processing block, containing + blocksize/2+1 power values corresponding to the FFT bins from DC to + Nyquist inclusive. The DC bin is always returned. +</p> +</div><div class="oddcontent"><a name="spectralcentroid"></a><h2>5. Spectral Centroid</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:spectralcentroid</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#spectralcentroid">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#spectralcentroid</a> +</p> +<p>Spectral Centroid calculates the "centre of gravity" of the frequency + spectrum for each input frame. +</p> +</div><div class="evencontent"><a name="toc26"></a><h3>5.1. Parameters</h3> + +<p>None. +</p> +</div><div class="oddcontent"><a name="toc27"></a><h3>5.2. Outputs</h3> + +</div><div class="evencontent"><a name="toc28"></a><h4>5.2.1. Log Frequency Centroid</h4> + +<p>The centroid of the log-weighted frequency spectrum. That is, the sum + across Fourier transform output bins of the logarithm of the bin + frequency multiplied by the bin magnitude, divided by the sum of the + bin magnitudes, and the inverse logarithm taken so as to give the + result as a frequency in Hz. +</p> +</div><div class="oddcontent"><a name="toc29"></a><h4>5.2.2. Linear Frequency Centroid</h4> + +<p>The centroid of the linear-weighted frequency spectrum. That is, the + sum across Fourier transform output bins of the bin frequency + multiplied by the bin magnitude, divided by the sum of the bin + magnitudes. The result is a frequency in Hz. +</p> +</div><div class="evencontent"><a name="zerocrossing"></a><h2>6. Zero Crossings</h2> + +<p><b>System identifier</b> – <code>vamp-example-plugins:zerocrossing</code><br> + <b>RDF URI</b> – <a href="http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#zerocrossing">http://vamp-plugins.org/rdf/plugins/vamp-example-plugins#zerocrossing</a> +</p> +<p>Zero Crossings calculates the positions and density of "zero-crossing" + points in an audio waveform. For the purposes of this plugin, that + means those positions at which the sampled value switches from + zero-or-less to greater-than-zero, or vice versa. +</p> +</div><div class="oddcontent"><a name="toc31"></a><h3>6.1. Parameters</h3> + +<p>None. +</p> +</div><div class="evencontent"><a name="toc32"></a><h3>6.2. Outputs</h3> + +</div><div class="oddcontent"><a name="toc33"></a><h4>6.2.1. Zero Crossing Counts</h4> + +<p>The number of zero-crossing points found in the current block of + samples, as a single-valued feature returned per processing block. +</p> +</div><div class="evencontent"><a name="toc34"></a><h4>6.2.2. Zero Crossings</h4> + +<p>The locations of zero-crossing points, returning one feature + timestamped to the zero-crossing location, without values, for each + crossing point. +</p> +<p></p> + +</div> +</body> +</html>
--- a/rdf/plugins/vamp-example-plugins.n3 Tue Nov 11 15:27:18 2008 +0000 +++ b/rdf/plugins/vamp-example-plugins.n3 Fri Nov 14 11:55:26 2008 +0000 @@ -27,8 +27,10 @@ dc:title "Amplitude Follower" ; vamp:name "Amplitude Follower" ; dc:description "Track the amplitude of the audio signal" ; - foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; # FIXME could give plugin author's URI here -# cc:license <Place plugin license URI here and uncomment> ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#amplitudefollower> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; vamp:identifier "amplitudefollower" ; vamp:vamp_API_version vamp:api_version_2 ; owl:versionInfo "1" ; @@ -73,8 +75,10 @@ dc:title "Simple Fixed Tempo Estimator" ; vamp:name "Simple Fixed Tempo Estimator" ; dc:description "Study a short section of audio and estimate its tempo, assuming the tempo is constant" ; - foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; # FIXME could give plugin author's URI here -# cc:license <Place plugin license URI here and uncomment> ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#fixedtempo> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; vamp:identifier "fixedtempo" ; vamp:vamp_API_version vamp:api_version_2 ; owl:versionInfo "1" ; @@ -143,8 +147,10 @@ dc:title "Simple Percussion Onset Detector" ; vamp:name "Simple Percussion Onset Detector" ; dc:description "Detect percussive note onsets by identifying broadband energy rises" ; - foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; # FIXME could give plugin author's URI here -# cc:license <Place plugin license URI here and uncomment> ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#percussiononsets> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; vamp:identifier "percussiononsets" ; vamp:vamp_API_version vamp:api_version_2 ; owl:versionInfo "2" ; @@ -199,12 +205,35 @@ vamp:bin_names ( ""); vamp:computes_signal_type af:OnsetDetectionFunction ; . +plugbase:powerspectrum a vamp:Plugin ; + dc:title "Simple Power Spectrum" ; + vamp:name "Simple Power Spectrum" ; + dc:description "Return the power spectrum of a signal" ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#powerspectrum> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; + vamp:identifier "powerspectrum" ; + vamp:vamp_API_version vamp:api_version_2 ; + owl:versionInfo "1" ; + vamp:input_domain vamp:FrequencyDomain ; + + vamp:output plugbase:powerspectrum_output_powerspectrum ; + . +plugbase:powerspectrum_output_powerspectrum a vamp:DenseOutput ; + vamp:identifier "powerspectrum" ; + dc:title "Power Spectrum" ; + dc:description "Power values of the frequency spectrum bins calculated from the input signal" ; + vamp:computes_signal_type af:Signal ; + . plugbase:spectralcentroid a vamp:Plugin ; dc:title "Spectral Centroid" ; vamp:name "Spectral Centroid" ; dc:description "Calculate the centroid frequency of the spectrum of the input signal" ; - foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; # FIXME could give plugin author's URI here -# cc:license <Place plugin license URI here and uncomment> ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#spectralcentroid> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; vamp:identifier "spectralcentroid" ; vamp:vamp_API_version vamp:api_version_2 ; owl:versionInfo "2" ; @@ -237,8 +266,10 @@ dc:title "Zero Crossings" ; vamp:name "Zero Crossings" ; dc:description "Detect and count zero crossing points" ; - foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; # FIXME could give plugin author's URI here -# cc:license <Place plugin license URI here and uncomment> ; + foaf:page <http://www.vamp-plugins.org/plugin-doc/vamp-example-plugins.html#zerocrossing> ; + foaf:maker [ foaf:name "Vamp SDK Example Plugins" ] ; + cc:license <http://creativecommons.org/licenses/BSD/> ; + dc:rights "Freely redistributable (BSD license)" ; vamp:identifier "zerocrossing" ; vamp:vamp_API_version vamp:api_version_2 ; owl:versionInfo "2" ;