]> Shamusworld >> Repos - ardour-manual/commitdiff
update lua class doc
authorRobin Gareus <robin@gareus.org>
Wed, 5 Oct 2016 02:38:08 +0000 (04:38 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 5 Oct 2016 02:38:08 +0000 (04:38 +0200)
_manual/24_lua-scripting/02_class_reference.html

index d5f530c5cc1d3a0c9beaff5f803196402431aa78..01ec7126b120e7d08e40f93c1f33da3a01f06462 100644 (file)
@@ -605,7 +605,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.BackendVector</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<span class="em">ARDOUR::AudioBackendInfo* </span>})</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<span>ARDOUR::AudioBackendInfo* </span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:AudioBackendInfo">AudioBackendInfo</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AudioBackendInfo const*&amp; (std::vector&lt;ARDOUR::AudioBackendInfo const* &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;ARDOUR::AudioBackendInfo const* &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -1111,13 +1111,16 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.LuaAPI.Vamp</span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">float</span>)</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::LuaAPI::Vamp::*)(boost::shared_ptr&lt;ARDOUR::Readable&gt;, unsigned int, luabridge::LuaRef)">analyze</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Readable">Readable</a>, <span class="em">unsigned int</span>, <span class="em">--MISSING (luabridge::LuaRef)--</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::LuaAPI::Vamp::*)(boost::shared_ptr&lt;ARDOUR::Readable&gt;, unsigned int, luabridge::LuaRef)">analyze</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Readable">Readable</a>, <span class="em">unsigned int</span>, <span>Lua-Function</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> high-level abstraction to process a single channel of the given Readable.</p><p> If the plugin is not yet initialized, initialize() is called.</p><p> if  is not nil, it is called with the immediate Vamp::Plugin::Features on every process call.</p><dl><dt class="param-name-index-0">r</dt><dd class="param-descr-index-0"> readable </dd><dt class="param-name-index-1">channel</dt><dd class="param-descr-index-1"> channel to process </dd><dt class="param-name-index-2">fn</dt><dd class="param-descr-index-2"> lua callback function </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  0 on success</p></div></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::LuaAPI::Vamp::*)()">initialize</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> initialize the plugin for use with analyze().</p><p> This is equivalent to plugin():initialise (1, 8192, 8192) and prepares a plugin for analyze.</p><p> Manual initialization is only required to set plugin-parameters which depend on prior initialization of the plugin.</p><pre> vamp:reset ()
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> initialize the plugin for use with analyze().</p><p> This is equivalent to plugin():initialise (1, 512, 1024) and prepares a plugin for analyze.</p><p> Manual initialization is only required to set plugin-parameters which depend on prior initialization of the plugin.</p><pre> vamp:reset ()
  vamp:initialize ()
- vamp:plugin():setParameter (0, 1.5)
+ vamp:plugin():setParameter (0, 1.5, nil)
  vamp:analyze (r, 0)</pre></div></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:Plugin">Plugin</a></td><td class="decl"><span class="functionname"><abbr title="_VampPlugin::Vamp::Plugin* (ARDOUR::LuaAPI::Vamp::*)()">plugin</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:Plugin">Plugin</a></td><td class="decl"><span class="functionname"><abbr title="Vamp::Plugin* (ARDOUR::LuaAPI::Vamp::*)()">plugin</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:Plugin:FeatureSet">FeatureSet</a></td><td class="decl"><span class="functionname"><abbr title="std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt; (ARDOUR::LuaAPI::Vamp::*)(std::vector&lt;float* &gt; const&amp;, Vamp::RealTime)">process</abbr></span><span class="functionargs"> (<a class="" href="#C:FloatArrayVector">FloatArrayVector</a>, <a class="" href="#Vamp:RealTime">RealTime</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> process given array of audio-samples.</p><p> This is a lua-binding for vamp:plugin():process ()</p><dl><dt class="param-name-index-0">d</dt><dd class="param-descr-index-0"> audio-data, the vector must match the configured channel count    and hold a complete buffer for every channel as set during    plugin():initialise() </dd><dt class="param-name-index-1">rt</dt><dd class="param-descr-index-1"> timestamp matching the provided buffer. </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  features extracted from that data (if the plugin is causal)</p></div></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::LuaAPI::Vamp::*)()">reset</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> call plugin():reset() and clear intialization flag </p></div></td></tr>
  </table>
@@ -1511,9 +1514,13 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Evoral.ParameterDescriptor</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Data Members</th></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">lower</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Minimum value (in Hz, for frequencies)</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">normal</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Default value</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">toggled</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True iff parameter is boolean</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">upper</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Maximum value (in Hz, for frequencies)</p></div></td></tr>
 </table>
 <h3 id="ARDOUR:PeakMeter" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:PeakMeter</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::PeakMeter &gt;, boost::weak_ptr&lt; ARDOUR::PeakMeter &gt;</p>
@@ -3064,7 +3071,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (*)(std::string const&amp;)">http_get</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:ProcessorVector">ProcessorVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;boost::shared_ptr&lt;ARDOUR::Processor&gt; &gt; (*)(lua_State*)">processor_selection</abbr></span><span class="functionargs"> (<span class="em">--MISSING (lua_State*)--</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ProcessorVector">ProcessorVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;boost::shared_ptr&lt;ARDOUR::Processor&gt; &gt; (*)()">processor_selection</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="ArdourUI:ArdourMarker" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:ArdourMarker</h3>
 <p class="cdecl"><em>C&#8225;</em>: ArdourMarker</p>
@@ -3083,7 +3090,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ArdourUI.ArdourMarkerList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<span class="em">ArdourMarker* </span>})</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<span>ArdourMarker* </span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;ArdourMarker* &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)(ArdourMarker* const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#ArdourUI:ArdourMarker">ArdourMarker</a>)</span></td><td class="fill"></td></tr>
@@ -3109,6 +3116,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)()">deselect_all</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(...)</td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)(std::vector&lt;std::string &gt;, Editing::ImportDisposition, Editing::ImportMode, long&amp;, boost::shared_ptr&lt;ARDOUR::PluginInfo&gt;)">do_embed</abbr></span><span class="functionargs"> (<a class="" href="#C:StringVector">StringVector</a>, <a class="" href="#Editing.ImportDisposition">ImportDisposition</a>, <a class="" href="#Editing.ImportMode">ImportMode</a>, <span class="em">long&amp;</span>, <a class="" href="#ARDOUR:PluginInfo">PluginInfo</a>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(...)</td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)(std::vector&lt;std::string &gt;, Editing::ImportDisposition, Editing::ImportMode, ARDOUR::SrcQuality, long&amp;, boost::shared_ptr&lt;ARDOUR::PluginInfo&gt;)">do_import</abbr></span><span class="functionargs"> (<a class="" href="#C:StringVector">StringVector</a>, <a class="" href="#Editing.ImportDisposition">ImportDisposition</a>, <a class="" href="#Editing.ImportMode">ImportMode</a>, <a class="" href="#ARDOUR.SrcQuality">SrcQuality</a>, <span class="em">long&amp;</span>, <a class="" href="#ARDOUR:PluginInfo">PluginInfo</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Import existing media </p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (PublicEditor::*)() const">dragging_playhead</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  true if the playhead is currently being dragged, otherwise false </p></div></div></td></tr>
  <tr><td class="def"><a class="" href="#Editing.MouseMode">MouseMode</a></td><td class="decl"><span class="functionname"><abbr title="Editing::MouseMode (PublicEditor::*)() const">effective_mouse_mode</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -3199,7 +3207,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ArdourUI.ArdourMarkerList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<span class="em">ArdourMarker* </span>})</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<span>ArdourMarker* </span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;ArdourMarker* &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)(ArdourMarker* const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#ArdourUI:ArdourMarker">ArdourMarker</a>)</span></td><td class="fill"></td></tr>
@@ -3313,6 +3321,21 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (*)(float*)">sameinstance</abbr></span><span class="functionargs"> (<a class="" href="#C:FloatArray">FloatArray</a>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>void</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*)">set_table</abbr></span><span class="functionargs"> (<span class="em">LuaTable {float}</span>)</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="C:FloatArrayVector" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;C:FloatArrayVector</h3>
+<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;float* &gt;</p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Constructor</th></tr>
+ <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">C.FloatArrayVector</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<a class="" href="#C:FloatArray">FloatArray</a>})</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#C:FloatArray">FloatArray</a></td><td class="decl"><span class="functionname"><abbr title="float*&amp; (std::vector&lt;float* &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;float* &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;float* &gt;::*)(float* const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#C:FloatArray">FloatArray</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;float* &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">table</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="C:FloatVector" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;C:FloatVector</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::vector&lt;float &gt;</p>
 <div class="clear"></div>
@@ -3431,6 +3454,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Cairo::Context::*)(double, double)">scale</abbr></span><span class="functionargs"> (<span class="em">double</span>, <span class="em">double</span>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Modifies the current transformation matrix (CTM) by scaling the X and Y user-space axes by sx and sy respectively. The scaling of the axes takes place after any existing transformation of user space.</p><dl><dt class="param-name-index-0">sx</dt><dd class="param-descr-index-0"> scale factor for the X dimension </dd><dt class="param-name-index-1">sy</dt><dd class="param-descr-index-1">    scale factor for the Y dimension</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Cairo::Context::*)(std::vector&lt;double &gt; const&amp;, double)">set_dash</abbr></span><span class="functionargs"> (<a class="" href="#C:DoubleVector">DoubleVector</a>, <span class="em">double</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Sets the dash pattern to be used by stroke(). A dash pattern is specified by dashes, an array of positive values. Each value provides the user-space length of altenate &quot;on&quot; and &quot;off&quot; portions of the stroke. The offset specifies an offset into the pattern at which the stroke begins.</p><p> Each &quot;on&quot; segment will have caps applied as if the segment were a separate sub-path. In particular, it is valid to use an &quot;on&quot; length of 0.0 with Cairo::LINE_CAP_ROUND or Cairo::LINE_CAP_SQUARE in order to distributed dots or squares along a path.</p><p> Note: The length values are in user-space units as evaluated at the time of stroking. This is not necessarily the same as the user space at the time of set_dash().</p><p> If dashes is empty dashing is disabled. If the size of dashes is 1, a symmetric pattern is assumed with alternating on and off portions of the size specified by the single value in dashes.</p><p> It is invalid for any value in dashes to be negative, or for all values to be 0.  If this is the case, an exception will be thrown</p><dl><dt class="param-name-index-0">dashes</dt><dd class="param-descr-index-0">  an array specifying alternate lengths of on and off portions </dd><dt class="param-name-index-1">offset</dt><dd class="param-descr-index-1">    an offset into the dash pattern at which the stroke should start</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Cairo::Context::*)(double)">set_font_size</abbr></span><span class="functionargs"> (<span class="em">double</span>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Sets the current font matrix to a scale by a factor of <em>size,</em> replacing any font matrix previously set with set_font_size() or set_font_matrix(). This results in a font size of <em>size</em> user space units. (More precisely, this matrix will result in the font&#39;s em-square being a  by <em>size</em> square in user space.)</p><p> If text is drawn without a call to set_font_size(), (nor set_font_matrix() nor set_scaled_font()), the default font size is 10.0.</p><dl><dt class="param-name-index-0">size</dt><dd class="param-descr-index-0"> the new font size, in user space units)</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Cairo::Context::*)(Cairo::LineCap)">set_line_cap</abbr></span><span class="functionargs"> (<a class="" href="#Cairo.LineCap">LineCap</a>)</span></td><td class="fill"></td></tr>
@@ -3611,9 +3635,13 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Evoral.ParameterDescriptor</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Data Members</th></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">lower</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Minimum value (in Hz, for frequencies)</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">normal</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Default value</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">toggled</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True iff parameter is boolean</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">upper</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Maximum value (in Hz, for frequencies)</p></div></td></tr>
  </table>
 <h3 id="Evoral:Range" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Evoral:Range</h3>
 <p class="cdecl"><em>C&#8225;</em>: Evoral::Range&lt;long&gt;</p>
@@ -3632,7 +3660,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">LuaSignal.Set</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<span class="em">47ul</span>})</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<span>47ul</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::bitset&lt;47ul&gt;::*)() const">any</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::bitset&lt;47ul&gt;::*)() const">count</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::bitset&lt;47ul&gt;::*)() const">none</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -3870,168 +3898,233 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Timecode.BBT_TIME</span><span class="functionargs"> (<span class="em">unsigned int</span>, <span class="em">unsigned int</span>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="Vamp:Plugin" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::Plugin</p>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::Plugin</p>
  <p class="classinfo">is-a: <a class="" href="#Vamp:PluginBase">Vamp:PluginBase</a></p>
 <div class="clear"></div>
+<div class="classdox"><p class="para-brief">  Vamp::Plugin is a base class for plugin instance classes that provide feature extraction from audio or related data.</p><p> In most cases, the input will be audio and the output will be a stream of derived data at a lower sampling resolution than the input.</p><p> Note that this class inherits several abstract methods from PluginBase.  These must be implemented by the subclass.</p><p>  PLUGIN LIFECYCLE</p><p> Feature extraction plugins are managed differently from real-time plugins (such as VST effects).  The main difference is that the parameters for a feature extraction plugin are configured before the plugin is used, and do not change during use.</p><p> 1. Host constructs the plugin, passing it the input sample rate. The plugin may do basic initialisation, but should not do anything computationally expensive at this point.  You must make sure your plugin is cheap to construct, otherwise you&#39;ll seriously affect the startup performance of almost all hosts.  If you have serious initialisation to do, the proper place is in initialise() (step 5).</p><p> 2. Host may query the plugin&#39;s available outputs.</p><p> 3. Host queries programs and parameter descriptors, and may set some or all of them.  Parameters that are not explicitly set should take their default values as specified in the parameter descriptor. When a program is set, the parameter values may change and the host will re-query them to check.</p><p> 4. Host queries the preferred step size, block size and number of channels.  These may all vary depending on the parameter values. (Note however that you cannot make the number of distinct outputs dependent on parameter values.)</p><p> 5. Plugin is properly initialised with a call to initialise.  This fixes the step size, block size, and number of channels, as well as all of the parameter and program settings.  If the values passed in to initialise do not match the plugin&#39;s advertised preferred values from step 4, the plugin may refuse to initialise and return false (although if possible it should accept the new values).  Any computationally expensive setup code should take place here.</p><p> 6. Host finally checks the number of values, resolution, extents etc per output (which may vary depending on the number of channels, step size and block size as well as the parameter values).</p><p> 7. Host will repeatedly call the process method to pass in blocks of input data.  This method may return features extracted from that data (if the plugin is causal).</p><p> 8. Host will call getRemainingFeatures exactly once, after all the input data has been processed.  This may return any non-causal or leftover features.</p><p> 9. At any point after initialise was called, the host may optionally call the reset method and restart processing.  (This does not mean it can change the parameters, which are fixed from initialise until destruction.)</p><p> A plugin does not need to handle the case where setParameter or selectProgram is called after initialise has been called.  It&#39;s the host&#39;s responsibility not to do that.  Similarly, the plugin may safely assume that initialise is called no more than once.</p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#Vamp:Plugin:FeatureSet">FeatureSet</a></td><td class="decl"><span class="functionname"><abbr title="std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt; (_VampPlugin::Vamp::Plugin::*)()">getRemainingFeatures</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:Plugin:FeatureSet">FeatureSet</a></td><td class="decl"><span class="functionname"><abbr title="std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt; (_VampPlugin::Vamp::Plugin::*)(float const* const*, _VampPlugin::Vamp::RealTime)">process</abbr></span><span class="functionargs"> (<span class="em">--MISSING (float**)--</span>, <a class="" href="#Vamp:RealTime">RealTime</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:Plugin:FeatureSet">FeatureSet</a></td><td class="decl"><span class="functionname"><abbr title="std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt; (Vamp::Plugin::*)()">getRemainingFeatures</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> After all blocks have been processed, calculate and return any remaining features derived from the complete input.</p></div></td></tr>
  </table>
 <h4 class="cls">Inherited from Vamp:PluginBase</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getCopyright</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getCurrentProgram</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getDescription</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getIdentifier</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getMaker</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getName</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname"><abbr title="float (_VampPlugin::Vamp::PluginBase::*)(std::string) const">getParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterList">ParameterList</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt; (_VampPlugin::Vamp::PluginBase::*)() const">getParameterDescriptors</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (_VampPlugin::Vamp::PluginBase::*)() const">getPluginVersion</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#C:StringVector">StringVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;std::string &gt; (_VampPlugin::Vamp::PluginBase::*)() const">getPrograms</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getType</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (_VampPlugin::Vamp::PluginBase::*)(std::string)">selectProgram</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (_VampPlugin::Vamp::PluginBase::*)(std::string, float)">setParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">float</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getCopyright</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the copyright statement or licensing summary for the plugin.  This can be an informative text, without the same presentation constraints as mentioned for getMaker above.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getCurrentProgram</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the current program.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getDescription</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get a human-readable description for the plugin, typically a line of text that may optionally be displayed in addition to the plugin&#39;s &quot;name&quot;.  May be empty if the name has said it all already.</p><p> Example: &quot;Detect and count zero crossing points&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getIdentifier</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the computer-usable name of the plugin.  This should be reasonably short and contain no whitespace or punctuation characters.  It may only contain the characters [a-zA-Z0-9_-]. This is the authoritative way for a program to identify a plugin within a given library.</p><p> This text may be visible to the user, but it should not be the main text used to identify a plugin to the user (that will be the name, below).</p><p> Example: &quot;zero_crossings&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getMaker</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the name of the author or vendor of the plugin in human-readable form.  This should be a short identifying text, as it may be used to label plugins from the same source in a menu or similar.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getName</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get a human-readable name or title of the plugin.  This should be brief and self-contained, as it may be used to identify the plugin to the user in isolation (i.e. without also showing the plugin&#39;s &quot;identifier&quot;).</p><p> Example: &quot;Zero Crossings&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname"><abbr title="float (Vamp::PluginBase::*)(std::string) const">getParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the value of a named parameter.  The argument is the identifier field from that parameter&#39;s descriptor.</p></div></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterList">ParameterList</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt; (Vamp::PluginBase::*)() const">getParameterDescriptors</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the controllable parameters of this plugin.</p></div></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (Vamp::PluginBase::*)() const">getPluginVersion</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the version number of the plugin.</p></div></td></tr>
+ <tr><td class="def"><a class="" href="#C:StringVector">StringVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;std::string &gt; (Vamp::PluginBase::*)() const">getPrograms</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the program settings available in this plugin.  A program is a named shorthand for a set of parameter values; changing the program may cause the plugin to alter the values of its published parameters (and&#47;or non-public internal processing parameters).  The host should re-read the plugin&#39;s parameter values after setting a new program.</p><p> The programs must have unique names.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getType</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the type of plugin.  This is to be implemented by the immediate subclass, not by actual plugins.  Do not attempt to implement this in plugin code.</p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Vamp::PluginBase::*)(std::string)">selectProgram</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Select a program.  (If the given program name is not one of the available programs, do nothing.)</p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Vamp::PluginBase::*)(std::string, float)">setParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">float</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set a named parameter.  The first argument is the identifier field from that parameter&#39;s descriptor.</p></div></td></tr>
 </table>
 <h3 id="Vamp:Plugin:Feature" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin:Feature</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::Plugin::Feature</p>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::Plugin::Feature</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Data Members</th></tr>
  <tr><td class="def"><a class="" href="#Vamp:RealTime">Vamp:RealTime</a></td><td class="decl"><span class="functionname">duration</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Duration of the output feature.  This is mandatory if the output has VariableSampleRate or FixedSampleRate and hasDuration is true, and unused otherwise.</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">hasDuration</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if an output feature has a specified duration.  This is optional if the output has VariableSampleRate or FixedSampleRate, and and unused if the output has OneSamplePerStep.</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">hasTimestamp</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if an output feature has its own timestamp.  This is mandatory if the output has VariableSampleRate, optional if the output has FixedSampleRate, and unused if the output has OneSamplePerStep.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">label</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Label for the sample of this feature.</p></div></td></tr>
  <tr><td class="def"><a class="" href="#Vamp:RealTime">Vamp:RealTime</a></td><td class="decl"><span class="functionname">timestamp</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Timestamp of the output feature.  This is mandatory if the output has VariableSampleRate or if the output has FixedSampleRate and hasTimestamp is true, and unused otherwise.</p></div></td></tr>
  <tr><td class="def"><a class="" href="#C:FloatVector">C:FloatVector</a></td><td class="decl"><span class="functionname">values</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Results for a single sample of this feature.  If the output hasFixedBinCount, there must be the same number of values as the output&#39;s binCount count.</p></div></td></tr>
  </table>
 <h3 id="Vamp:Plugin:FeatureList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin:FeatureList</h3>
-<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt;</p>
+<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;Vamp::Plugin::Feature &gt;</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Vamp.Plugin.FeatureList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<a class="" href="#Vamp:Plugin:Feature">Feature</a>})</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:Plugin:Feature">Feature</a></td><td class="decl"><span class="functionname"><abbr title="_VampPlugin::Vamp::Plugin::Feature&amp; (std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:Plugin:Feature">Feature</a></td><td class="decl"><span class="functionname"><abbr title="Vamp::Plugin::Feature&amp; (std::vector&lt;Vamp::Plugin::Feature &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;Vamp::Plugin::Feature &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt;::*)(_VampPlugin::Vamp::Plugin::Feature const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:Plugin:Feature">Feature</a>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;Vamp::Plugin::Feature &gt;::*)(Vamp::Plugin::Feature const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:Plugin:Feature">Feature</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;Vamp::Plugin::Feature &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">table</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="Vamp:Plugin:FeatureSet" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin:FeatureSet</h3>
-<p class="cdecl"><em>C&#8225;</em>: std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt;</p>
+<p class="cdecl"><em>C&#8225;</em>: std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt;</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Vamp.Plugin.FeatureSet</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<a class="" href="#Vamp:Plugin:Feature">Feature</a>})</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)()">clear</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)(int const&amp;) const">count</abbr></span><span class="functionargs"> (<span class="em">int</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)()">clear</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)(int const&amp;) const">count</abbr></span><span class="functionargs"> (<span class="em">int</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::map&lt;int, std::vector&lt;_VampPlugin::Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::map&lt;int, std::vector&lt;Vamp::Plugin::Feature &gt; &gt; &gt; &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">table</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="Vamp:Plugin:OutputDescriptor" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin:OutputDescriptor</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::Plugin::OutputDescriptor</p>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::Plugin::OutputDescriptor</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Data Members</th></tr>
  <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname">binCount</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The number of values per result of the output.  Undefined if hasFixedBinCount is false.  If this is zero, the output is point data (i.e. only the time of each output is of interest, the value list will be empty).</p></div></td></tr>
  <tr><td class="def"><a class="" href="#C:StringVector">C:StringVector</a></td><td class="decl"><span class="functionname">binNames</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The (human-readable) names of each of the bins, if appropriate.  This is always optional.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">description</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> A human-readable short text describing the output.  May be empty if the name has said it all already. Example: &quot;The number of zero crossing points per processing block&quot;</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">hasDuration</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if the returned results for this output are known to have a duration field.</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">hasFixedBinCount</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if the output has the same number of values per sample for every output sample.  Outputs for which this is false are unlikely to be very useful in a general-purpose host.</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">hasKnownExtents</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if the results in each output bin fall within a fixed numeric range (minimum and maximum values).  Undefined if binCount is zero.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">identifier</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The name of the output, in computer-usable form.  Should be reasonably short and without whitespace or punctuation, using the characters [a-zA-Z0-9_-] only. Example: &quot;zero_crossing_count&quot;</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">isQuantized</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if the output values are quantized to a particular resolution.  Undefined if binCount is zero.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">maxValue</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Maximum value of the results in the output.  Undefined if hasKnownExtents is false or binCount is zero.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">minValue</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Minimum value of the results in the output.  Undefined if hasKnownExtents is false or binCount is zero.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">quantizeStep</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Quantization resolution of the output values (e.g. 1.0 if they are all integers).  Undefined if isQuantized is false or binCount is zero.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">sampleRate</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#_VampPlugin.Vamp.Plugin.OutputDescriptor.SampleType">_VampPlugin.Vamp.Plugin.OutputDescriptor.SampleType</a></td><td class="decl"><span class="functionname">sampleType</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Sample rate of the output results, as samples per second. Undefined if sampleType is OneSamplePerStep.</p><p> If sampleType is VariableSampleRate and this value is non-zero, then it may be used to calculate a resolution for the output (i.e. the &quot;duration&quot; of each sample, in time, will be 1&#47;sampleRate seconds).  It&#39;s recommended to set this to zero if that behaviour is not desired.</p></div></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp.Plugin.OutputDescriptor.SampleType">Vamp.Plugin.OutputDescriptor.SampleType</a></td><td class="decl"><span class="functionname">sampleType</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Positioning in time of the output results.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">unit</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The unit of the output, in human-readable form.</p></div></td></tr>
  </table>
 <h3 id="Vamp:Plugin:OutputList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:Plugin:OutputList</h3>
-<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;_VampPlugin::Vamp::Plugin::OutputDescriptor &gt;</p>
+<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;Vamp::Plugin::OutputDescriptor &gt;</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Vamp.Plugin.OutputList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<a class="" href="#Vamp:Plugin:OutputDescriptor">OutputDescriptor</a>})</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:Plugin:OutputDescriptor">OutputDescriptor</a></td><td class="decl"><span class="functionname"><abbr title="_VampPlugin::Vamp::Plugin::OutputDescriptor&amp; (std::vector&lt;_VampPlugin::Vamp::Plugin::OutputDescriptor &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;_VampPlugin::Vamp::Plugin::OutputDescriptor &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:Plugin:OutputDescriptor">OutputDescriptor</a></td><td class="decl"><span class="functionname"><abbr title="Vamp::Plugin::OutputDescriptor&amp; (std::vector&lt;Vamp::Plugin::OutputDescriptor &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;Vamp::Plugin::OutputDescriptor &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;_VampPlugin::Vamp::Plugin::OutputDescriptor &gt;::*)(_VampPlugin::Vamp::Plugin::OutputDescriptor const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:Plugin:OutputDescriptor">OutputDescriptor</a>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;_VampPlugin::Vamp::Plugin::OutputDescriptor &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;Vamp::Plugin::OutputDescriptor &gt;::*)(Vamp::Plugin::OutputDescriptor const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:Plugin:OutputDescriptor">OutputDescriptor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;Vamp::Plugin::OutputDescriptor &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">table</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="Vamp:PluginBase" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:PluginBase</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::PluginBase</p>
-<div class="clear"></div>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getCopyright</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getCurrentProgram</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getDescription</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getIdentifier</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getMaker</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getName</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname"><abbr title="float (_VampPlugin::Vamp::PluginBase::*)(std::string) const">getParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterList">ParameterList</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt; (_VampPlugin::Vamp::PluginBase::*)() const">getParameterDescriptors</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (_VampPlugin::Vamp::PluginBase::*)() const">getPluginVersion</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#C:StringVector">StringVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;std::string &gt; (_VampPlugin::Vamp::PluginBase::*)() const">getPrograms</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::PluginBase::*)() const">getType</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (_VampPlugin::Vamp::PluginBase::*)(std::string)">selectProgram</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (_VampPlugin::Vamp::PluginBase::*)(std::string, float)">setParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">float</span>)</span></td><td class="fill"></td></tr>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::PluginBase</p>
+<div class="clear"></div>
+<div class="classdox"><p class="para-brief"> A base class for plugins with optional configurable parameters, programs, etc.  The Vamp::Plugin is derived from this, and individual Vamp plugins should derive from that.</p><p> This class does not provide the necessary interfaces to instantiate or run a plugin.  It only specifies an interface for retrieving those controls that the host may wish to show to the user for editing.  It could meaningfully be subclassed by real-time plugins or other sorts of plugin as well as Vamp plugins.</p></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getCopyright</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the copyright statement or licensing summary for the plugin.  This can be an informative text, without the same presentation constraints as mentioned for getMaker above.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getCurrentProgram</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the current program.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getDescription</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get a human-readable description for the plugin, typically a line of text that may optionally be displayed in addition to the plugin&#39;s &quot;name&quot;.  May be empty if the name has said it all already.</p><p> Example: &quot;Detect and count zero crossing points&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getIdentifier</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the computer-usable name of the plugin.  This should be reasonably short and contain no whitespace or punctuation characters.  It may only contain the characters [a-zA-Z0-9_-]. This is the authoritative way for a program to identify a plugin within a given library.</p><p> This text may be visible to the user, but it should not be the main text used to identify a plugin to the user (that will be the name, below).</p><p> Example: &quot;zero_crossings&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getMaker</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the name of the author or vendor of the plugin in human-readable form.  This should be a short identifying text, as it may be used to label plugins from the same source in a menu or similar.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getName</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get a human-readable name or title of the plugin.  This should be brief and self-contained, as it may be used to identify the plugin to the user in isolation (i.e. without also showing the plugin&#39;s &quot;identifier&quot;).</p><p> Example: &quot;Zero Crossings&quot;</p></div></td></tr>
+ <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname"><abbr title="float (Vamp::PluginBase::*)(std::string) const">getParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the value of a named parameter.  The argument is the identifier field from that parameter&#39;s descriptor.</p></div></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterList">ParameterList</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt; (Vamp::PluginBase::*)() const">getParameterDescriptors</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the controllable parameters of this plugin.</p></div></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (Vamp::PluginBase::*)() const">getPluginVersion</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the version number of the plugin.</p></div></td></tr>
+ <tr><td class="def"><a class="" href="#C:StringVector">StringVector</a></td><td class="decl"><span class="functionname"><abbr title="std::vector&lt;std::string &gt; (Vamp::PluginBase::*)() const">getPrograms</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the program settings available in this plugin.  A program is a named shorthand for a set of parameter values; changing the program may cause the plugin to alter the values of its published parameters (and&#47;or non-public internal processing parameters).  The host should re-read the plugin&#39;s parameter values after setting a new program.</p><p> The programs must have unique names.</p></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::PluginBase::*)() const">getType</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get the type of plugin.  This is to be implemented by the immediate subclass, not by actual plugins.  Do not attempt to implement this in plugin code.</p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Vamp::PluginBase::*)(std::string)">selectProgram</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Select a program.  (If the given program name is not one of the available programs, do nothing.)</p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Vamp::PluginBase::*)(std::string, float)">setParameter</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">float</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set a named parameter.  The first argument is the identifier field from that parameter&#39;s descriptor.</p></div></td></tr>
  </table>
 <h3 id="Vamp:PluginBase:ParameterDescriptor" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:PluginBase:ParameterDescriptor</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::PluginBase::ParameterDescriptor</p>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::PluginBase::ParameterDescriptor</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Data Members</th></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">defaultValue</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The default value of the parameter.  The plugin should ensure that parameters have this value on initialisation (i.e. the host is not required to explicitly set parameters if it wants to use their default values).</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">description</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> A human-readable short text describing the parameter.  May be empty if the name has said it all already.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">identifier</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The name of the parameter, in computer-usable form.  Should be reasonably short, and may only contain the characters [a-zA-Z0-9_-].</p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">isQuantized</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> True if the parameter values are quantized to a particular resolution.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">maxValue</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The maximum value of the parameter.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">minValue</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The minimum value of the parameter.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">name</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The human-readable name of the parameter.</p></div></td></tr>
  <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">quantizeStep</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Quantization resolution of the parameter values (e.g. 1.0 if they are all integers).  Undefined if isQuantized is false.</p></div></td></tr>
  <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname">unit</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> The unit of the parameter, in human-readable form.</p></div></td></tr>
  <tr><td class="def"><a class="" href="#C:StringVector">C:StringVector</a></td><td class="decl"><span class="functionname">valueNames</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Names for the quantized values.  If isQuantized is true, this may either be empty or contain one string for each of the quantize steps from minValue up to maxValue inclusive. Undefined if isQuantized is false.</p><p> If these names are provided, they should be shown to the user in preference to the values themselves.  The user may never see the actual numeric values unless they are also encoded in the names.</p></div></td></tr>
  </table>
 <h3 id="Vamp:PluginBase:ParameterList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:PluginBase:ParameterList</h3>
-<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt;</p>
+<p class="cdecl"><em>C&#8225;</em>: std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt;</p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Vamp.PluginBase.ParameterList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">add</abbr></span><span class="functionargs"> (<em>LuaTable</em> {<a class="" href="#Vamp:PluginBase:ParameterDescriptor">ParameterDescriptor</a>})</span></td><td class="fill"></td></tr>
- <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterDescriptor">ParameterDescriptor</a></td><td class="decl"><span class="functionname"><abbr title="_VampPlugin::Vamp::PluginBase::ParameterDescriptor&amp; (std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:PluginBase:ParameterDescriptor">ParameterDescriptor</a></td><td class="decl"><span class="functionname"><abbr title="Vamp::PluginBase::ParameterDescriptor&amp; (std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt;::*)(unsigned long)">at</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt;::*)() const">empty</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaIter</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">iter</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt;::*)(_VampPlugin::Vamp::PluginBase::ParameterDescriptor const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:PluginBase:ParameterDescriptor">ParameterDescriptor</a>)</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;_VampPlugin::Vamp::PluginBase::ParameterDescriptor &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt;::*)(Vamp::PluginBase::ParameterDescriptor const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:PluginBase:ParameterDescriptor">ParameterDescriptor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;Vamp::PluginBase::ParameterDescriptor &gt;::*)() const">size</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">table</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="Vamp:RealTime" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Vamp:RealTime</h3>
-<p class="cdecl"><em>C&#8225;</em>: _VampPlugin::Vamp::RealTime</p>
+<p class="cdecl"><em>C&#8225;</em>: Vamp::RealTime</p>
 <div class="clear"></div>
+<div class="classdox"><p class="para-brief">  RealTime represents time values to nanosecond precision with accurate arithmetic and frame-rate conversion functions.</p></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">Vamp.RealTime</span><span class="functionargs"> (<span class="em">int</span>, <span class="em">int</span>)</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (_VampPlugin::Vamp::RealTime::*)() const">msec</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (_VampPlugin::Vamp::RealTime::*)() const">toString</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
- <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (_VampPlugin::Vamp::RealTime::*)() const">usec</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Vamp:RealTime">RealTime</a></td><td class="decl"><span class="functionname"><abbr title="Vamp::RealTime (*)(long, unsigned int)">frame2RealTime</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (Vamp::RealTime::*)() const">msec</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (*)(Vamp::RealTime const&amp;, unsigned int)">realTime2Frame</abbr></span><span class="functionargs"> (<a class="" href="#Vamp:RealTime">RealTime</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (Vamp::RealTime::*)() const">toString</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Return a human-readable debug-type string to full precision (probably not a format to show to a user directly)</p></div></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (Vamp::RealTime::*)() const">usec</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Data Members</th></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname">nsec</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname">sec</span></td><td class="fill"></td></tr>
  </table>
 <h2 id="h_enum">Enum/Constants</h2>
 <h3 id="PBD.Controllable.GroupControlDisposition" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;PBD.Controllable.GroupControlDisposition</h3>
@@ -4060,7 +4153,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li class="const">Evoral.InterpolationStyle.Linear</li>
 <li class="const">Evoral.InterpolationStyle.Curved</li>
 </ul>
-<h3 id="_VampPlugin.Vamp.Plugin.OutputDescriptor.SampleType" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;_VampPlugin.Vamp.Plugin.OutputDescriptor.SampleType</h3>
+<h3 id="Vamp.Plugin.OutputDescriptor.SampleType" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;Vamp.Plugin.OutputDescriptor.SampleType</h3>
 <ul class="enum">
 <li class="const">Vamp.Plugin.OutputDescriptor.SampleType.OneSamplePerStep</li>
 <li class="const">Vamp.Plugin.OutputDescriptor.SampleType.FixedSampleRate</li>
@@ -4550,6 +4643,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li><a class="" href="#C:ByteArray">C:ByteArray</a></li>
 <li><a class="" href="#C:DoubleVector">C:DoubleVector</a></li>
 <li><a class="" href="#C:FloatArray">C:FloatArray</a></li>
+<li><a class="" href="#C:FloatArrayVector">C:FloatArrayVector</a></li>
 <li><a class="" href="#C:FloatVector">C:FloatVector</a></li>
 <li><a class="" href="#C:IntArray">C:IntArray</a></li>
 <li><a class="" href="#C:StringList">C:StringList</a></li>
@@ -4594,6 +4688,6 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li><a class="" href="#Vamp:PluginBase:ParameterList">Vamp:PluginBase:ParameterList</a></li>
 <li><a class="" href="#Vamp:RealTime">Vamp:RealTime</a></li>
 </ul>
-<!-- 351 / 1770 !-->
+<!-- 424 / 1776 !-->
 </div>
-<div class="luafooter">Ardour 5.4-3-g2607e15 &nbsp;-&nbsp; Mon, 03 Oct 2016 04:29:09 +0200</div>
+<div class="luafooter">Ardour 5.4-25-gb233a56 &nbsp;-&nbsp; Wed, 05 Oct 2016 04:37:46 +0200</div>