]> Shamusworld >> Repos - ardour-manual/blobdiff - _manual/24_lua-scripting/02_class_reference.html
update lua class reference & CSS
[ardour-manual] / _manual / 24_lua-scripting / 02_class_reference.html
index 8f71da02847c9579a0cc935b75eca8d7bdb69203..0cde811307e3f3f5e2602011f8c4f3a2755ba1a8 100644 (file)
@@ -8,8 +8,10 @@ title: Class Reference
 This documention is far from complete may be inaccurate and subject to change.
 </p>
 
+
 <div id="luaref">
 
+
 <h2 id="h_intro">Overview</h2>
 <p>
 The top-level entry point are <a class="" href="#ARDOUR:Session">ARDOUR:Session</a> and <a class="" href="#ArdourUI:Editor">ArdourUI:Editor</a>.
@@ -35,6 +37,12 @@ Operations are performed on objects. One gets a reference to an object and then
 e.g <code>obj = Session:route_by_name("Audio")   obj:set_name("Guitar")</code>.
 </p>
 <p>
+Lua automatically follows C++ class inheritance. e.g one can directly call all SessionObject and Route methods on Track object. However lua does not automatically promote objects. A Route object which just happens to be a Track needs to be explicily cast to a Track. Methods for casts are provided with each class. Note that the cast may fail and return a <em>nil</em> reference.
+</p>
+<p>
+Likewise multiple inheritance is a <a href="http://www.lua.org/pil/16.3.html">non-trivial issue</a> in lua. To avoid performance penalties involved with lookups, explicit casts are required in this case. One example is <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a> which is-a StatefulDestructible which inhertis from both Stateful and Destructible.
+</p>
+<p>
 Object lifetimes are managed by the Session. Most Objects cannot be directly created, but one asks the Session to create or destroy them. This is mainly due to realtime constrains:
 you cannot simply remove a track that is currently processing audio. There are various <em>factory</em> methods for object creation or removal.
 </p>
@@ -118,6 +126,38 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 
 
 <h2 id="h_classes">Class Documentation</h2>
+<h3 id="ARDOUR:Amp" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Amp</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Amp &gt;, boost::weak_ptr&lt; ARDOUR::Amp &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:Processor">ARDOUR:Processor</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:GainControl">GainControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::GainControl&gt; (ARDOUR::Amp::*)()">gain_control</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:Processor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Processor::*)()">activate</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 (ARDOUR::Processor::*)() const">active</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationControl">AutomationControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationControl&gt; (ARDOUR::Automatable::*)(Evoral::Parameter const&amp;, bool)">automation_control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::Control&gt; (Evoral::ControlSet::*)(Evoral::Parameter const&amp;, bool)">control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</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 (ARDOUR::Processor::*)()">deactivate</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 (ARDOUR::Processor::*)() const">display_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
 <h3 id="ARDOUR:AudioBackend" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:AudioBackend</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::AudioBackend &gt;, boost::weak_ptr&lt; ARDOUR::AudioBackend &gt;</p>
 <div class="clear"></div>
@@ -177,9 +217,12 @@ 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">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AudioBuffer::*)(float, long)">apply_gain</abbr></span><span class="functionargs"> (<span class="em">float</span>, <span class="em">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 (ARDOUR::AudioBuffer::*)(unsigned int, unsigned int&amp;) const">check_silence</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>, <span class="em">unsigned int&amp;</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> check buffer for silence </p><dl><dt class="param-name-index-0">nframes</dt><dd class="param-descr-index-0">  number of frames to check </dd><dt class="param-name-index-1">n</dt><dd class="param-descr-index-1"> first non zero sample (if any) </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  true if all samples are zero</p></div></div></td></tr>
  <tr><td class="def"><a class="" href="#C:FloatArray">FloatArray</a></td><td class="decl"><span class="functionname"><abbr title="float* (ARDOUR::AudioBuffer::*)(long)">data</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::AudioBuffer::*)(float const*, long, long, long)">read_from</abbr></span><span class="functionargs"> (<a class="" href="#C:FloatArray">FloatArray</a>, <span class="em">long</span>, <span class="em">long</span>, <span class="em">long</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 (ARDOUR::AudioBuffer::*)(long, long)">silence</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
-<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Clear (eg zero, or empty) buffer </p></div></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> silence buffer </p><dl><dt class="param-name-index-0">len</dt><dd class="param-descr-index-0"> number of samples to clear </dd><dt class="param-name-index-1">offset</dt><dd class="param-descr-index-1"> start offset</dd></dl></div></td></tr>
  </table>
 <h3 id="ARDOUR:AudioEngine" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:AudioEngine</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::AudioEngine</p>
@@ -198,6 +241,62 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::AudioEngine::*)(bool)">start</abbr></span><span class="functionargs"> (<span class="em">bool</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::AudioEngine::*)(bool)">stop</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="ARDOUR:AudioPort" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:AudioPort</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::AudioPort &gt;, boost::weak_ptr&lt; ARDOUR::AudioPort &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:Port">ARDOUR:Port</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:Port</h4>
+<table class="classmembers">
+ <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::Port::*)(ARDOUR::Port*)">connect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)(std::string const&amp;)">connect_by_name</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">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Port::*)() const">connected</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 this port is connected to anything </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::Port::*)(ARDOUR::Port*) const">connected_to</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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 (ARDOUR::Port::*)(std::string const&amp;) const">connected_to_name</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">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::Port::*)(ARDOUR::Port*)">disconnect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)()">disconnect_all</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 (ARDOUR::Port::*)(std::string const&amp;)">disconnect_by_name</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">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (ARDOUR::Port::*)() const">name</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>  Port short name </p></div></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (ARDOUR::Port::*)(bool) const">pretty_name</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</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>  Port human readable name </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::Port::*)() const">receives_input</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 this Port receives input, otherwise false </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::Port::*)() const">sends_output</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 this Port sends output, otherwise false </p></div></div></td></tr>
+</table>
+<h3 id="ARDOUR:AudioRange" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:AudioRange</h3>
+<p class="cdecl"><em>C&#8225;</em>: ARDOUR::AudioRange</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">ARDOUR.AudioRange</span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::AudioRange::*)(ARDOUR::AudioRange const&amp;) const">equal</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:AudioRange">AudioRange</a>)</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 (ARDOUR::AudioRange::*)() const">length</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">long</span></td><td class="decl"><span class="functionname">end</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname">id</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname">start</span></td><td class="fill"></td></tr>
+ </table>
+<h3 id="ARDOUR:AudioRangeList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:AudioRangeList</h3>
+<p class="cdecl"><em>C&#8225;</em>: std::list&lt;ARDOUR::AudioRange &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">ARDOUR.AudioRangeList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;ARDOUR::AudioRange &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;ARDOUR::AudioRange &gt;::*)()">reverse</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::list&lt;ARDOUR::AudioRange &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="ARDOUR:AudioSource" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:AudioSource</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::AudioSource &gt;, boost::weak_ptr&lt; ARDOUR::AudioSource &gt;</p>
  <p class="classinfo">is-a: <a class="" href="#ARDOUR:Source">ARDOUR:Source</a></p>
@@ -219,38 +318,55 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h4 class="cls">Inherited from ARDOUR:Track</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce_range</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool) const">bounceable</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)()">can_record</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Playlist">Playlist</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Playlist&gt; (ARDOUR::Track::*)()">playlist</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 (ARDOUR::Track::*)() const">record_enabled</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 (ARDOUR::Track::*)() const">record_safe</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 (ARDOUR::Track::*)(std::string const&amp;)">set_name</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_enabled</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_safe</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AudioTrack">AudioTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AudioTrack (ARDOUR::Track::*)()">to_audio_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:MidiTrack">MidiTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::MidiTrack (ARDOUR::Track::*)()">to_midi_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:Route</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">active</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, int, ARDOUR::Route::ProcessorStreams*, bool)">add_processor_by_index</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">int</span>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">add_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">amp</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 (ARDOUR::Route::*)()">comment</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, unsigned int, ARDOUR::ChanCount)">customize_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanCount">ChanCount</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Delivery">Delivery</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Delivery&gt; (ARDOUR::Route::*)() const">main_outs</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"> the signal processorat at end of the processing chain which produces output </p></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">muted</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_inputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_outputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Processor">Processor</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Processor&gt; (ARDOUR::Route::*)(unsigned int) const">nth_plugin</abbr></span><span class="functionargs"> (<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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*, bool)">remove_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">remove_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</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::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*)">replace_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>)</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">reset_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</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 (ARDOUR::Route::*)(bool, void*)">set_active</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">void*</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 (ARDOUR::Route::*)(std::string, void*)">set_comment</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">void*</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 (ARDOUR::Route::*)(bool)">set_strict_io</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Route::*)() const">soloed</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 (ARDOUR::Route::*)() const">strict_io</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">trim</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Track">Track</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Track (ARDOUR::Route::*)()">to_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:AudioTrackList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:AudioTrackList</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::list&lt;boost::shared_ptr&lt;ARDOUR::AudioTrack&gt; &gt;</p>
@@ -279,25 +395,54 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  </table>
 <h3 id="ARDOUR:AutomationControl" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:AutomationControl</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::AutomationControl &gt;, boost::weak_ptr&lt; ARDOUR::AutomationControl &gt;</p>
- <p class="classinfo">is-a: <a class="" href="#Evoral:Control">Evoral:Control</a></p>
+ <p class="classinfo">is-a: <a class="" href="#PBD:Controllable">PBD:Controllable</a></p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationList">AutomationList</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationList&gt; (ARDOUR::AutomationControl::*)() const">alist</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR.AutoState">AutoState</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoState (ARDOUR::AutomationControl::*)() const">automation_state</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR.AutoStyle">AutoStyle</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoStyle (ARDOUR::AutomationControl::*)() const">automation_style</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (ARDOUR::AutomationControl::*)() const">get_value</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 effective `user&#39; value based on automation state </p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</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 (ARDOUR::AutomationControl::*)(ARDOUR::AutoState)">set_automation_state</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoState">AutoState</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 (ARDOUR::AutomationControl::*)(ARDOUR::AutoStyle)">set_automation_style</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoStyle">AutoStyle</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 (ARDOUR::AutomationControl::*)(double, PBD::Controllable::GroupControlDisposition)">set_value</abbr></span><span class="functionargs"> (<span class="em">double</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get and Set `internal&#39; value</p><p> All derived classes must implement this.</p><p> Basic derived classes will ignore </p><dl><dt class="param-name-index-invalid">group_override,</dt><dd class="param-descr-index-invalid"> but more sophisticated children, notably those that proxy the value setting logic via an object that is aware of group relationships between this control and others, will find it useful.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AutomationControl::*)(double)">start_touch</abbr></span><span class="functionargs"> (<span class="em">double</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 (ARDOUR::AutomationControl::*)(bool, double)">stop_touch</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">double</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 (ARDOUR::AutomationControl::*)() const">writable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="Evoral::Control (ARDOUR::AutomationControl::*)()">to_ctrl</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
-<h4 class="cls">Inherited from Evoral:Control</h4>
+<h4 class="cls">Inherited from PBD:Controllable</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#Evoral:ControlList">ControlList</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::ControlList&gt; (Evoral::Control::*)()">list</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 (PBD::Controllable::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
+<h3 id="ARDOUR:AutomationList" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:AutomationList</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::AutomationList &gt;, boost::weak_ptr&lt; ARDOUR::AutomationList &gt;</p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:XMLNode">XMLNode</a></td><td class="decl"><span class="functionname"><abbr title="XMLNode&amp; (ARDOUR::AutomationList::*)()">get_state</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:Command">Command</a></td><td class="decl"><span class="functionname"><abbr title="Command* (ARDOUR::AutomationList::*)(XMLNode*, XMLNode*)">memento_command</abbr></span><span class="functionargs"> (<a class="" href="#PBD:XMLNode">XMLNode</a>, <a class="" href="#PBD:XMLNode">XMLNode</a>)</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 (ARDOUR::AutomationList::*)() const">touch_enabled</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 (ARDOUR::AutomationList::*)() const">touching</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 (ARDOUR::AutomationList::*)() const">writing</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#Evoral:ControlList">ControlList</a></td><td class="decl"><span class="functionname"><abbr title="Evoral::ControlList (ARDOUR::AutomationList::*)()">list</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::AutomationList::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::AutomationList::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="ARDOUR:BackendVector" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:BackendVector</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::vector&lt;ARDOUR::AudioBackendInfo const* &gt;</p>
 <div class="clear"></div>
@@ -327,19 +472,35 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <div class="clear"></div>
 <div class="classdox"><p class="para-brief"> A count of channels, possibly with many types.</p><p> Operators are defined so this may safely be used as if it were a simple (single-typed) integer count of channels.</p></div>
 <table class="classmembers">
+ <tr><th colspan="3">Constructor</th></tr>
+ <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.ChanCount</span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Convenience constructor for making single-typed streams (mono, stereo, midi, etc) </p><dl><dt class="param-name-index-0">type</dt><dd class="param-descr-index-0"> data type </dd><dt class="param-name-index-1">count</dt><dd class="param-descr-index-1"> number of channels</dd></dl></div></td></tr>
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanCount::*)(ARDOUR::DataType) const">get</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> query channel count for given type </p><dl><dt class="param-name-index-invalid">type</dt><dd class="param-descr-index-invalid"> data type </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  channel count for given type</p></div></div></td></tr>
  <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanCount::*)() const">n_audio</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"> query number of audio channels </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  number of audio channels</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanCount::*)() const">n_midi</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"> query number of midi channels </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  number of midi channels</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanCount::*)() const">n_total</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"> query total channel count of all data types </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  total channel count (audio + midi)</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::ChanCount::*)()">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"> zero count of all data types </p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::ChanCount::*)(ARDOUR::DataType, unsigned int)">set</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> set channel count for given type </p><dl><dt class="param-name-index-1">count</dt><dd class="param-descr-index-1"> number of channels</dd><dt class="param-name-index-invalid">type</dt><dd class="param-descr-index-invalid"> data type </dd></dl></div></td></tr>
  </table>
 <h3 id="ARDOUR:ChanMapping" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:ChanMapping</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::ChanMapping</p>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> A mapping from one set of channels to another (e.g. how to &#39;connect&#39; two BufferSets).</p></div>
+<div class="classdox"><p class="para-brief"> A mapping from one set of channels to another. The general form is  1 source (from), many sinks (to). numeric IDs are used to identify sources and sinks.</p><p> for plugins this is used to map &quot;plugin-pin&quot; to &quot;audio-buffer&quot;</p></div>
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.ChanMapping</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanMapping::*)(ARDOUR::DataType, unsigned int)">get</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::ChanMapping::*)(ARDOUR::DataType, unsigned int) const">get</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> get buffer mapping for given data type and pin </p><dl><dt class="param-name-index-1">from</dt><dd class="param-descr-index-1"> numeric source id </dd><dt class="param-name-index-invalid">type</dt><dd class="param-descr-index-invalid"> data type </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  mapped buffer number (or ChanMapping::Invalid)</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::ChanMapping::*)(ARDOUR::DataType, unsigned int, unsigned int)">set</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned int</span>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> set buffer mapping for given data type </p><dl><dt class="param-name-index-1">from</dt><dd class="param-descr-index-1"> numeric source id </dd><dt class="param-name-index-2">to</dt><dd class="param-descr-index-2"> buffer</dd><dt class="param-name-index-invalid">type</dt><dd class="param-descr-index-invalid"> data type </dd></dl></div></td></tr>
  </table>
 <h3 id="ARDOUR:DSP" class="cls freeclass"><abbr title="Namespace">&Nopf;</abbr>&nbsp;ARDOUR.DSP</h3>
 <div class="clear"></div>
@@ -374,7 +535,7 @@ 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">ARDOUR.DSP.Biquad</span><span class="functionargs"> (<span class="em">double</span>)</span></td><td class="fill"></td></tr>
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::DSP::BiQuad::*)(ARDOUR::DSP::BiQuad::Type, double, double, double)">compute</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.DSP.BiQuad.Type">Type</a>, <span class="em">double</span>, <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"> setup filter, compute coefficients</p><dl><dt class="param-name-index-0">t</dt><dd class="param-descr-index-0"> filter type (LowPass, HighPass, etc) </dd><dt class="param-name-index-1">freq</dt><dd class="param-descr-index-1"> filter frequency </dd><dt class="param-name-index-2">Q</dt><dd class="param-descr-index-2"> filter quality </dd><dt class="param-name-index-3">gain</dt><dd class="param-descr-index-3"> filter gain</dd></dl></div></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> setup filter, compute coefficients</p><dl><dt class="param-name-index-0">type</dt><dd class="param-descr-index-0"> filter type (LowPass, HighPass, etc) </dd><dt class="param-name-index-1">freq</dt><dd class="param-descr-index-1"> filter frequency </dd><dt class="param-name-index-2">Q</dt><dd class="param-descr-index-2"> filter quality </dd><dt class="param-name-index-3">gain</dt><dd class="param-descr-index-3"> filter gain</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::DSP::BiQuad::*)()">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"> reset filter state </p></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::DSP::BiQuad::*)(float*, unsigned int)">run</abbr></span><span class="functionargs"> (<a class="" href="#C:FloatArray">FloatArray</a>, <span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
@@ -424,7 +585,55 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <table class="classmembers">
  <tr><th colspan="3">Constructor</th></tr>
  <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.DataType</span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:DataType">DataType</a></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">audio</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"> convenience contructor for DataType::AUDIO </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  DataType::AUDIO</p></div></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:DataType">DataType</a></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">midi</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"> convenience contructor for DataType::MIDI </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  DataType::MIDI</p></div></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:DataType">DataType</a></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">null</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"> convenience contructor for DataType::NIL </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  DataType::NIL</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">char*</span></td><td class="decl"><span class="functionname"><abbr title="char const* (ARDOUR::DataType::*)() const">to_string</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"> Inverse of the from-string constructor </p></div></td></tr>
+ </table>
+<h3 id="ARDOUR:Delivery" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Delivery</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Delivery &gt;, boost::weak_ptr&lt; ARDOUR::Delivery &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:IOProcessor">ARDOUR:IOProcessor</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
+<h4 class="cls">Inherited from ARDOUR:IOProcessor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">input</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_input_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_output_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">output</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:Processor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Processor::*)()">activate</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 (ARDOUR::Processor::*)() const">active</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationControl">AutomationControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationControl&gt; (ARDOUR::Automatable::*)(Evoral::Parameter const&amp;, bool)">automation_control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::Control&gt; (Evoral::ControlSet::*)(Evoral::Parameter const&amp;, bool)">control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</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 (ARDOUR::Processor::*)()">deactivate</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 (ARDOUR::Processor::*)() const">display_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
 <h3 id="ARDOUR:DeviceStatus" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:DeviceStatus</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::AudioBackend::DeviceStatus</p>
 <div class="clear"></div>
@@ -449,28 +658,163 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::vector&lt;ARDOUR::AudioBackend::DeviceStatus &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="ARDOUR:GainControl" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:GainControl</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::GainControl &gt;, boost::weak_ptr&lt; ARDOUR::GainControl &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:AutomationControl">ARDOUR:AutomationControl</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:AutomationControl</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationList">AutomationList</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationList&gt; (ARDOUR::AutomationControl::*)() const">alist</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR.AutoState">AutoState</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoState (ARDOUR::AutomationControl::*)() const">automation_state</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR.AutoStyle">AutoStyle</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoStyle (ARDOUR::AutomationControl::*)() const">automation_style</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (ARDOUR::AutomationControl::*)() const">get_value</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 effective `user&#39; value based on automation state </p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AutomationControl::*)(ARDOUR::AutoState)">set_automation_state</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoState">AutoState</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 (ARDOUR::AutomationControl::*)(ARDOUR::AutoStyle)">set_automation_style</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoStyle">AutoStyle</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 (ARDOUR::AutomationControl::*)(double, PBD::Controllable::GroupControlDisposition)">set_value</abbr></span><span class="functionargs"> (<span class="em">double</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get and Set `internal&#39; value</p><p> All derived classes must implement this.</p><p> Basic derived classes will ignore </p><dl><dt class="param-name-index-invalid">group_override,</dt><dd class="param-descr-index-invalid"> but more sophisticated children, notably those that proxy the value setting logic via an object that is aware of group relationships between this control and others, will find it useful.</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AutomationControl::*)(double)">start_touch</abbr></span><span class="functionargs"> (<span class="em">double</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 (ARDOUR::AutomationControl::*)(bool, double)">stop_touch</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">double</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 (ARDOUR::AutomationControl::*)() const">writable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="Evoral::Control (ARDOUR::AutomationControl::*)()">to_ctrl</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from PBD:Controllable</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 (PBD::Controllable::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h3 id="ARDOUR:IO" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:IO</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::IO &gt;, boost::weak_ptr&lt; ARDOUR::IO &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::IO::*)() const">active</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 (ARDOUR::IO::*)(std::string, void*, ARDOUR::DataType)">add_port</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">void*</span>, <a class="" href="#ARDOUR:DataType">DataType</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Add a port.</p><dl><dt class="param-name-index-0">destination</dt><dd class="param-descr-index-0"> Name of port to connect new port to. </dd><dt class="param-name-index-1">src</dt><dd class="param-descr-index-1"> Source for emitted ConfigurationChanged signal. </dd><dt class="param-name-index-2">type</dt><dd class="param-descr-index-2"> Data type of port.  Default value (NIL) will use this IO&#39;s default type.</dd></dl></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AudioPort">AudioPort</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AudioPort&gt; (ARDOUR::IO::*)(unsigned int) const">audio</abbr></span><span class="functionargs"> (<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 (ARDOUR::IO::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;, std::string, void*)">connect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>, <span class="em">std::string</span>, <span class="em">void*</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::IO::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;, std::string, void*)">disconnect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>, <span class="em">std::string</span>, <span class="em">void*</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 (ARDOUR::IO::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;) const">has_port</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:MidiPort">MidiPort</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::MidiPort&gt; (ARDOUR::IO::*)(unsigned int) const">midi</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount const&amp; (ARDOUR::IO::*)() const">n_ports</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Port">Port</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Port&gt; (ARDOUR::IO::*)(unsigned int) const">nth</abbr></span><span class="functionargs"> (<span class="em">unsigned 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 (ARDOUR::IO::*)() const">physically_connected</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Port">Port</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Port&gt; (ARDOUR::IO::*)(unsigned int) const">port_by_name</abbr></span><span class="functionargs"> (<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 (ARDOUR::IO::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;, void*)">remove_port</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>, <span class="em">void*</span>)</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h3 id="ARDOUR:IOProcessor" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:IOProcessor</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::IOProcessor &gt;, boost::weak_ptr&lt; ARDOUR::IOProcessor &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:Processor">ARDOUR:Processor</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">input</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_input_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_output_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">output</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:Processor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Processor::*)()">activate</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 (ARDOUR::Processor::*)() const">active</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationControl">AutomationControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationControl&gt; (ARDOUR::Automatable::*)(Evoral::Parameter const&amp;, bool)">automation_control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::Control&gt; (Evoral::ControlSet::*)(Evoral::Parameter const&amp;, bool)">control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</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 (ARDOUR::Processor::*)()">deactivate</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 (ARDOUR::Processor::*)() const">display_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h3 id="ARDOUR:InterThreadInfo" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:InterThreadInfo</h3>
+<p class="cdecl"><em>C&#8225;</em>: ARDOUR::InterThreadInfo</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">ARDOUR.InterThreadInfo</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">bool</span></td><td class="decl"><span class="functionname">cancel</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname">done</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">float</span></td><td class="decl"><span class="functionname">progress</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="ARDOUR:Location" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:Location</h3>
-<p class="cdecl"><em>C&#8225;</em>: ARDOUR::Location</p>
+<p class="cdecl"><em>C&#8225;</em>: ARDOUR::Locations</p>
  <p class="classinfo">is-a: <a class="" href="#PBD:StatefulDestructible">PBD:StatefulDestructible</a></p>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state </p></div>
+<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state with destruction notification </p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Location">Location</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Location* (ARDOUR::Locations::*)() const">auto_loop_location</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Location">Location</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Location* (ARDOUR::Locations::*)() const">auto_punch_location</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 (ARDOUR::Location::*)() const">end</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 (ARDOUR::Locations::*)(long, bool)">first_mark_after</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">bool</span>)</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 (ARDOUR::Locations::*)(long, bool)">first_mark_after</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">bool</span>)</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 (ARDOUR::Location::*)() const">length</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 (ARDOUR::Location::*)()">lock</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 (ARDOUR::Location::*)() const">locked</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 (ARDOUR::Location::*)(long)">move_to</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Location">Location</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Location* (ARDOUR::Locations::*)() const">session_range_location</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 (ARDOUR::Location::*)(long, bool, bool)">set_end</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">bool</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set end position.  </p><dl><dt class="param-name-index-1">force</dt><dd class="param-descr-index-1"> true to force setting, even if the given new end is before the current start.  </dd><dt class="param-name-index-2">allow_bbt_recompute</dt><dd class="param-descr-index-2"> True to recompute BBT end time from the new given end time.</dd><dt class="param-name-index-invalid">s</dt><dd class="param-descr-index-invalid"> New end.  </dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::Location::*)(long, long, bool)">set_length</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <span class="em">bool</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::Location::*)(long, bool, bool)">set_start</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">bool</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set start position.  </p><dl><dt class="param-name-index-0">s</dt><dd class="param-descr-index-0"> New start.  </dd><dt class="param-name-index-1">force</dt><dd class="param-descr-index-1"> true to force setting, even if the given new start is after the current end.  </dd><dt class="param-name-index-2">allow_bbt_recompute</dt><dd class="param-descr-index-2"> True to recompute BBT start time from the new given start time.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (ARDOUR::Location::*)() const">start</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from PBD:Stateful</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
+<h3 id="ARDOUR:LocationList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:LocationList</h3>
+<p class="cdecl"><em>C&#8225;</em>: std::list&lt;ARDOUR::Location* &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">ARDOUR.LocationList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;ARDOUR::Location* &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;ARDOUR::Location* &gt;::*)()">reverse</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::list&lt;ARDOUR::Location* &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="ARDOUR:LuaAPI" class="cls freeclass"><abbr title="Namespace">&Nopf;</abbr>&nbsp;ARDOUR.LuaAPI</h3>
 <div class="clear"></div>
 <table class="classmembers">
@@ -481,10 +825,22 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> create a new Plugin Instance</p><dl><dt class="param-name-index-0">s</dt><dd class="param-descr-index-0"> Session Handle </dd><dt class="param-name-index-1">id</dt><dd class="param-descr-index-1"> Plugin Name, ID or URI </dd><dt class="param-name-index-2">type</dt><dd class="param-descr-index-2"> Plugin Type </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  Processor or nil</p></div></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:PluginInfo">PluginInfo</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::PluginInfo&gt; (*)(std::string const&amp;, ARDOUR::PluginType)">new_plugin_info</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <a class="" href="#ARDOUR.PluginType">PluginType</a>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> search a Plugin</p><dl><dt class="param-name-index-0">id</dt><dd class="param-descr-index-0"> Plugin Name, ID or URI </dd><dt class="param-name-index-1">type</dt><dd class="param-descr-index-1"> Plugin Type </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  PluginInfo or nil if not found</p></div></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Processor">Processor</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Processor&gt; (*)()">nil_proc</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">LuaTable</span></td><td class="decl"><span class="functionname"><abbr title="int (*)(lua_State*) const">plugin_automation</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"> A convenience function to get a Automation Lists and ParamaterDescriptor for a given plugin control.</p><p> This is equivalent to the following lua code </p><pre> function (processor, param_id)
+  local plugininsert = processor:to_insert ()
+  local plugin = plugininsert:plugin(0)
+  local _, t = plugin:get_parameter_descriptor(param_id, ARDOUR.ParameterDescriptor ())
+  local ctrl = Evoral.Parameter (ARDOUR.AutomationType.PluginAutomation, 0, param_id)
+  local ac = pi:automation_control (ctrl, false)
+  local acl = ac:alist()
+  return ac:alist(), ac:to_ctrl():list(), t[2]
+ end</pre><p> Example usage: get the third input parameter of first plugin on the given route (Ardour starts counting at zero). </p><pre> local al, cl, pd = ARDOUR.LuaAPI.plugin_automation (route:nth_plugin (0), 3)</pre><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  3 parameters: AutomationList, ControlList, ParamaterDescriptor</p></div></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (*)(boost::shared_ptr&lt;ARDOUR::PluginInsert&gt;, unsigned int, float)">set_plugin_insert_param</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:PluginInsert">PluginInsert</a>, <span class="em">unsigned int</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 plugin control-input parameter value</p><p> This is a wrapper around set_processor_param which looks up the Processor by plugin-insert.</p><dl><dt class="param-name-index-1">which</dt><dd class="param-descr-index-1"> control-input to set (starting at 0) </dd><dt class="param-name-index-invalid">proc</dt><dd class="param-descr-index-invalid"> Plugin-Insert </dd><dt class="param-name-index-invalid">value</dt><dd class="param-descr-index-invalid"> value to set </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  true on success, false on error or out-of-bounds value</p></div></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, unsigned int, float)">set_processor_param</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">unsigned int</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 plugin control-input parameter value</p><dl><dt class="param-name-index-0">proc</dt><dd class="param-descr-index-0"> Plugin-Processor </dd><dt class="param-name-index-1">which</dt><dd class="param-descr-index-1"> control-input to set (starting at 0) </dd><dt class="param-name-index-invalid">value</dt><dd class="param-descr-index-invalid"> value to set </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  true on success, false on error or out-of-bounds value</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (*)(unsigned long)">usleep</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="ARDOUR:LuaOSC:Address" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:LuaOSC:Address</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::LuaOSC::Address</p>
@@ -521,6 +877,37 @@ 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 (ARDOUR::MidiBuffer::*)(long, long)">silence</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Clear (eg zero, or empty) buffer </p></div></td></tr>
  </table>
+<h3 id="ARDOUR:MidiPort" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:MidiPort</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::MidiPort &gt;, boost::weak_ptr&lt; ARDOUR::MidiPort &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:Port">ARDOUR:Port</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::MidiPort::*)() const">input_active</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="void (*)()">isnil</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 (ARDOUR::MidiPort::*)(bool)">set_input_active</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:Port</h4>
+<table class="classmembers">
+ <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::Port::*)(ARDOUR::Port*)">connect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)(std::string const&amp;)">connect_by_name</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">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Port::*)() const">connected</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 this port is connected to anything </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::Port::*)(ARDOUR::Port*) const">connected_to</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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 (ARDOUR::Port::*)(std::string const&amp;) const">connected_to_name</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">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::Port::*)(ARDOUR::Port*)">disconnect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)()">disconnect_all</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 (ARDOUR::Port::*)(std::string const&amp;)">disconnect_by_name</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">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (ARDOUR::Port::*)() const">name</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>  Port short name </p></div></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (ARDOUR::Port::*)(bool) const">pretty_name</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</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>  Port human readable name </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::Port::*)() const">receives_input</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 this Port receives input, otherwise false </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::Port::*)() const">sends_output</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 this Port sends output, otherwise false </p></div></div></td></tr>
+</table>
 <h3 id="ARDOUR:MidiTrack" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:MidiTrack</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::MidiTrack &gt;, boost::weak_ptr&lt; ARDOUR::MidiTrack &gt;</p>
  <p class="classinfo">is-a: <a class="" href="#ARDOUR:Track">ARDOUR:Track</a></p>
@@ -532,38 +919,55 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h4 class="cls">Inherited from ARDOUR:Track</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce_range</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool) const">bounceable</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)()">can_record</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Playlist">Playlist</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Playlist&gt; (ARDOUR::Track::*)()">playlist</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 (ARDOUR::Track::*)() const">record_enabled</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 (ARDOUR::Track::*)() const">record_safe</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 (ARDOUR::Track::*)(std::string const&amp;)">set_name</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_enabled</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_safe</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AudioTrack">AudioTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AudioTrack (ARDOUR::Track::*)()">to_audio_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:MidiTrack">MidiTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::MidiTrack (ARDOUR::Track::*)()">to_midi_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:Route</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">active</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, int, ARDOUR::Route::ProcessorStreams*, bool)">add_processor_by_index</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">int</span>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">add_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">amp</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 (ARDOUR::Route::*)()">comment</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, unsigned int, ARDOUR::ChanCount)">customize_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanCount">ChanCount</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Delivery">Delivery</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Delivery&gt; (ARDOUR::Route::*)() const">main_outs</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"> the signal processorat at end of the processing chain which produces output </p></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">muted</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_inputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_outputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Processor">Processor</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Processor&gt; (ARDOUR::Route::*)(unsigned int) const">nth_plugin</abbr></span><span class="functionargs"> (<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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*, bool)">remove_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">remove_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</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::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*)">replace_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>)</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">reset_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</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 (ARDOUR::Route::*)(bool, void*)">set_active</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">void*</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 (ARDOUR::Route::*)(std::string, void*)">set_comment</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">void*</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 (ARDOUR::Route::*)(bool)">set_strict_io</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Route::*)() const">soloed</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 (ARDOUR::Route::*)() const">strict_io</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">trim</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Track">Track</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Track (ARDOUR::Route::*)()">to_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:MidiTrackList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:MidiTrackList</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::list&lt;boost::shared_ptr&lt;ARDOUR::MidiTrack&gt; &gt;</p>
@@ -609,6 +1013,49 @@ 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">toggled</span></td><td class="fill"></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>
 </table>
+<h3 id="ARDOUR:Playlist" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Playlist</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Playlist &gt;, boost::weak_ptr&lt; ARDOUR::Playlist &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;, long, float, bool)">add_region</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>, <span class="em">long</span>, <span class="em">float</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Playlist::*)(std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; const&amp;)">combine</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:RegionList">RegionList</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::Playlist::*)(long) const">count_regions_at</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Playlist">Playlist</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Playlist&gt; (ARDOUR::Playlist::*)(std::list&lt;ARDOUR::AudioRange &gt;&amp;, bool)">cut</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:AudioRangeList">AudioRangeList&amp;</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:DataType">DataType</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::DataType const&amp; (ARDOUR::Playlist::*)() const">data_type</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;, long, long, float)">duplicate</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>, <span class="em">long</span>, <span class="em">long</span>, <span class="em">float</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 (ARDOUR::Playlist::*)(ARDOUR::AudioRange&amp;, float)">duplicate_range</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:AudioRange">AudioRange&amp;</a>, <span class="em">float</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;, long, long, long)">duplicate_until</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>, <span class="em">long</span>, <span class="em">long</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Playlist::*)(long, ARDOUR::RegionPoint, int)">find_next_region</abbr></span><span class="functionargs"> (<span class="em">long</span>, <a class="" href="#ARDOUR.RegionPoint">RegionPoint</a>, <span class="em">int</span>)</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 (ARDOUR::Playlist::*)(long, int)">find_next_region_boundary</abbr></span><span class="functionargs"> (<span class="em">long</span>, <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="void (*)()">isnil</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">lower_region</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">lower_region_to_bottom</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::Playlist::*)() const">n_regions</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">raise_region</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">raise_region_to_top</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Playlist::*)(PBD::ID const&amp;) const">region_by_id</abbr></span><span class="functionargs"> (<a class="" href="#PBD:ID">ID</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RegionListPtr">RegionListPtr</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; &gt; (ARDOUR::Playlist::*)(long)">regions_at</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RegionListPtr">RegionListPtr</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; &gt; (ARDOUR::Playlist::*)(long, long)">regions_touched</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><dl><dt class="param-name-index-0">start</dt><dd class="param-descr-index-0"> Range start.  </dd><dt class="param-name-index-1">end</dt><dd class="param-descr-index-1"> Range end.  </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  regions which have some part within this range.</p></div></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RegionListPtr">RegionListPtr</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; &gt; (ARDOUR::Playlist::*)(Evoral::Range&lt;long&gt;)">regions_with_end_within</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Range">Range</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RegionListPtr">RegionListPtr</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; &gt; (ARDOUR::Playlist::*)(Evoral::Range&lt;long&gt;)">regions_with_start_within</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Range">Range</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">remove_region</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</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 (ARDOUR::Playlist::*)(long)">split</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;, long)">split_region</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Playlist::*)(long)">top_region_at</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Playlist::*)(long)">top_unmuted_region_at</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::Playlist::*)(boost::shared_ptr&lt;ARDOUR::Region&gt;)">uncombine</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</a>)</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
 <h3 id="ARDOUR:Plugin" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Plugin</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Plugin &gt;, boost::weak_ptr&lt; ARDOUR::Plugin &gt;</p>
  <p class="classinfo">is-a: <a class="" href="#PBD:StatefulDestructiblePtr">PBD:StatefulDestructiblePtr</a></p>
@@ -621,6 +1068,7 @@ 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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">char*</span></td><td class="decl"><span class="functionname"><abbr title="char const* (ARDOUR::Plugin::*)() const">label</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 (ARDOUR::Plugin::*)(ARDOUR::Plugin::PresetRecord)">load_preset</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:PresetRecord">PresetRecord</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set parameters using a preset </p></div></td></tr>
  <tr><td class="def"><span class="em">char*</span></td><td class="decl"><span class="functionname"><abbr title="char const* (ARDOUR::Plugin::*)() const">maker</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">char*</span></td><td class="decl"><span class="functionname"><abbr title="char const* (ARDOUR::Plugin::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(<span class="em">unsigned int</span>, ...)</td><td class="decl"><span class="functionname"><abbr title="unsigned int (ARDOUR::Plugin::*)(unsigned int, bool&amp;) const">nth_parameter</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>, <span class="em">bool&amp;</span>)</span></td><td class="fill"></td></tr>
@@ -632,6 +1080,8 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h4 class="cls">Inherited from PBD:StatefulPtr</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:PluginControl" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:PluginControl</h3>
@@ -645,19 +1095,32 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h4 class="cls">Inherited from ARDOUR:AutomationControl</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationList">AutomationList</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationList&gt; (ARDOUR::AutomationControl::*)() const">alist</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR.AutoState">AutoState</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoState (ARDOUR::AutomationControl::*)() const">automation_state</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR.AutoStyle">AutoStyle</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AutoStyle (ARDOUR::AutomationControl::*)() const">automation_style</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (ARDOUR::AutomationControl::*)() const">get_value</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 effective `user&#39; value based on automation state </p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AutomationControl::*)(ARDOUR::AutoState)">set_automation_state</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoState">AutoState</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 (ARDOUR::AutomationControl::*)(ARDOUR::AutoStyle)">set_automation_style</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR.AutoStyle">AutoStyle</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 (ARDOUR::AutomationControl::*)(double, PBD::Controllable::GroupControlDisposition)">set_value</abbr></span><span class="functionargs"> (<span class="em">double</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Get and Set `internal&#39; value</p><p> All derived classes must implement this.</p><p> Basic derived classes will ignore </p><dl><dt class="param-name-index-invalid">group_override,</dt><dd class="param-descr-index-invalid"> but more sophisticated children, notably those that proxy the value setting logic via an object that is aware of group relationships between this control and others, will find it useful.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::AutomationControl::*)(double)">start_touch</abbr></span><span class="functionargs"> (<span class="em">double</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 (ARDOUR::AutomationControl::*)(bool, double)">stop_touch</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">double</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 (ARDOUR::AutomationControl::*)() const">writable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="Evoral::Control (ARDOUR::AutomationControl::*)()">to_ctrl</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
-<h4 class="cls">Inherited from Evoral:Control</h4>
+<h4 class="cls">Inherited from PBD:Controllable</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#Evoral:ControlList">ControlList</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::ControlList&gt; (Evoral::Control::*)()">list</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 (PBD::Controllable::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:PluginInfo" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:PluginInfo</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::PluginInfo &gt;, boost::weak_ptr&lt; ARDOUR::PluginInfo &gt;</p>
@@ -678,13 +1141,10 @@ 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 (ARDOUR::PluginInsert::*)()">deactivate</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanMapping">ChanMapping</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanMapping (ARDOUR::PluginInsert::*)(unsigned int) const">input_map</abbr></span><span class="functionargs"> (<span class="em">unsigned 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="void (*)()">isnil</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 (ARDOUR::PluginInsert::*)() const">no_inplace</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanMapping">ChanMapping</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanMapping (ARDOUR::PluginInsert::*)(unsigned int) const">output_map</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Plugin">Plugin</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Plugin&gt; (ARDOUR::PluginInsert::*)(unsigned int) const">plugin</abbr></span><span class="functionargs"> (<span class="em">unsigned int</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 (ARDOUR::PluginInsert::*)(unsigned int, ARDOUR::ChanMapping)">set_input_map</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanMapping">ChanMapping</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 (ARDOUR::PluginInsert::*)(bool)">set_no_inplace</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::PluginInsert::*)(unsigned int, ARDOUR::ChanMapping)">set_output_map</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanMapping">ChanMapping</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 (ARDOUR::PluginInsert::*)(bool)">set_strict_io</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::PluginInsert::*)() const">strict_io_configured</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from ARDOUR:Processor</h4>
@@ -694,18 +1154,60 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><a class="" href="#ARDOUR:AutomationControl">AutomationControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationControl&gt; (ARDOUR::Automatable::*)(Evoral::Parameter const&amp;, bool)">automation_control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::Control&gt; (Evoral::ControlSet::*)(Evoral::Parameter const&amp;, bool)">control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</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 (ARDOUR::Processor::*)() const">display_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
+<h3 id="ARDOUR:Port" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Port</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Port &gt;, boost::weak_ptr&lt; ARDOUR::Port &gt;</p>
+<div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
+ <tr><td class="def"><span class="em">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::Port::*)(ARDOUR::Port*)">connect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)(std::string const&amp;)">connect_by_name</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">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Port::*)() const">connected</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 this port is connected to anything </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::Port::*)(ARDOUR::Port*) const">connected_to</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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 (ARDOUR::Port::*)(std::string const&amp;) const">connected_to_name</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">int</span></td><td class="decl"><span class="functionname"><abbr title="int (ARDOUR::Port::*)(ARDOUR::Port*)">disconnect</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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::Port::*)()">disconnect_all</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 (ARDOUR::Port::*)(std::string const&amp;)">disconnect_by_name</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">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</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 (ARDOUR::Port::*)() const">name</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>  Port short name </p></div></div></td></tr>
+ <tr><td class="def"><span class="em">std::string</span></td><td class="decl"><span class="functionname"><abbr title="std::string (ARDOUR::Port::*)(bool) const">pretty_name</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</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>  Port human readable name </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::Port::*)() const">receives_input</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 this Port receives input, otherwise false </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::Port::*)() const">sends_output</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 this Port sends output, otherwise false </p></div></div></td></tr>
+ </table>
+<h3 id="ARDOUR:PortSet" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:PortSet</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::PortSet &gt;, boost::weak_ptr&lt; ARDOUR::PortSet &gt;</p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::PortSet::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;)">add</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</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 (ARDOUR::PortSet::*)()">clear</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"> Remove all ports from the PortSet.  Ports are not deregistered with the engine, it&#39;s the caller&#39;s responsibility to not leak here!</p></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::PortSet::*)(boost::shared_ptr&lt;ARDOUR::Port const&gt;) const">contains</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</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 (ARDOUR::PortSet::*)() const">empty</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="void (*)()">isnil</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 (ARDOUR::PortSet::*)(ARDOUR::DataType) const">num_ports</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Port">Port</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Port&gt; (ARDOUR::PortSet::*)(ARDOUR::DataType, unsigned long) const">port</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:DataType">DataType</a>, <span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> nth port of type <em>t,</em> or nth port if t = NIL </p><dl><dt class="param-name-index-0">t</dt><dd class="param-descr-index-0"> data type </dd><dt class="param-name-index-1">index</dt><dd class="param-descr-index-1"> port index</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::PortSet::*)(boost::shared_ptr&lt;ARDOUR::Port&gt;)">remove</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Port">Port</a>)</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="ARDOUR:PresetRecord" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:PresetRecord</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::Plugin::PresetRecord</p>
 <div class="clear"></div>
@@ -718,7 +1220,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  </table>
 <h3 id="ARDOUR:Processor" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Processor</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Processor &gt;, boost::weak_ptr&lt; ARDOUR::Processor &gt;</p>
- <p class="classinfo">is-a: <a class="" href="#ARDOUR:Automatable">ARDOUR:Automatable</a>, <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
@@ -729,18 +1231,19 @@ 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 (ARDOUR::Processor::*)()">deactivate</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 (ARDOUR::Processor::*)() const">display_name</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="void (*)()">isnil</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:Properties:BoolProperty" class="cls opaque"><abbr title="Opaque Object">&empty;</abbr>&nbsp;ARDOUR:Properties:BoolProperty</h3>
 <p class="cdecl"><em>C&#8225;</em>: PBD::PropertyDescriptor&lt;bool&gt;</p>
@@ -806,6 +1309,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 (ARDOUR::Region::*)()">raise_to_top</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 (ARDOUR::Region::*)(bool)">set_hidden</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Region::*)(long)">set_initial_position</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> A gui may need to create a region, then place it in an initial  position determined by the user.  When this takes place within one gui operation, we have to reset  _last_position to prevent an implied move.</p></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Region::*)(long)">set_length</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::Region::*)(bool)">set_locked</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Region::*)(bool)">set_muted</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</span></td><td class="fill"></td></tr>
@@ -814,6 +1318,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 (ARDOUR::Region::*)(bool)">set_position_locked</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Region::*)(long)">set_start</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::Region::*)(long)">set_sync_position</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set the region&#39;s sync point.  </p><dl><dt class="param-name-index-0">absolute_pos</dt><dd class="param-descr-index-0"> Session time.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Region::*)(bool)">set_video_locked</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</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 (ARDOUR::Region::*)() const">shift</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 (ARDOUR::Region::*)() const">start</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -821,7 +1326,9 @@ 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 (ARDOUR::Region::*)() const">sync_marked</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(<span class="em">long</span>, ...)</td><td class="decl"><span class="functionname"><abbr title="long (ARDOUR::Region::*)(int&amp;) const">sync_offset</abbr></span><span class="functionargs"> (<span class="em">int&amp;</span>)</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 (ARDOUR::Region::*)() const">sync_position</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>  Sync position in session time </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::Region::*)(long)">trim_end</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><dl><dt class="param-name-index-0">new_endpoint</dt><dd class="param-descr-index-0"> New region end point, such that, for example,  a region at 0 of length 10 has an endpoint of 9.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Region::*)(long)">trim_front</abbr></span><span class="functionargs"> (<span class="em">long</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 (ARDOUR::Region::*)(long, long)">trim_to</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">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 (ARDOUR::Region::*)() const">valid_transients</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -832,11 +1339,9 @@ 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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:RegionFactory" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:RegionFactory</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::RegionFactory</p>
@@ -845,6 +1350,35 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (*)(PBD::ID const&amp;)">region_by_id</abbr></span><span class="functionargs"> (<a class="" href="#PBD:ID">ID</a>)</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="ARDOUR:RegionList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:RegionList</h3>
+<p class="cdecl"><em>C&#8225;</em>: std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&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">ARDOUR.RegionList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&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">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt;::*)()">reverse</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::list&lt;boost::shared_ptr&lt;ARDOUR::Region&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="ARDOUR:RegionListPtr" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:RegionListPtr</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt;std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&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">ARDOUR.RegionListPtr</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="#ARDOUR:Region">Region</a>})</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;boost::shared_ptr&lt;ARDOUR::Region&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">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt;::*)(boost::shared_ptr&lt;ARDOUR::Region&gt; const&amp;)">push_back</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Region">Region</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::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt;::*)()">reverse</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::list&lt;boost::shared_ptr&lt;ARDOUR::Region&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>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt;::*)()">unique</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="ARDOUR:Route" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Route</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Route &gt;, boost::weak_ptr&lt; ARDOUR::Route &gt;</p>
  <p class="classinfo">is-a: <a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></p>
@@ -853,28 +1387,38 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">active</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, int, ARDOUR::Route::ProcessorStreams*, bool)">add_processor_by_index</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">int</span>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">add_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">amp</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 (ARDOUR::Route::*)()">comment</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, unsigned int, ARDOUR::ChanCount)">customize_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanCount">ChanCount</a>)</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Delivery">Delivery</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Delivery&gt; (ARDOUR::Route::*)() const">main_outs</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"> the signal processorat at end of the processing chain which produces output </p></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">muted</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_inputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_outputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Processor">Processor</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Processor&gt; (ARDOUR::Route::*)(unsigned int) const">nth_plugin</abbr></span><span class="functionargs"> (<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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*, bool)">remove_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">remove_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</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::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*)">replace_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>)</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">reset_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</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 (ARDOUR::Route::*)(bool, void*)">set_active</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">void*</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 (ARDOUR::Route::*)(std::string, void*)">set_comment</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">void*</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 (ARDOUR::Route::*)(std::string const&amp;)">set_name</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">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)(bool)">set_strict_io</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Route::*)() const">soloed</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 (ARDOUR::Route::*)() const">strict_io</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">trim</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Track">Track</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Track (ARDOUR::Route::*)()">to_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:Route:ProcessorStreams" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:Route:ProcessorStreams</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::Route::ProcessorStreams</p>
@@ -916,10 +1460,15 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h3 id="ARDOUR:Session" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:Session</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::Session</p>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state </p></div>
+<div class="classdox"><p class="para-brief"> Ardour Session </p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Session::*)()">abort_reversible_command</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 (ARDOUR::Session::*)() const">actively_recording</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 (ARDOUR::Session::*)(Command*)">add_command</abbr></span><span class="functionargs"> (<a class="" href="#PBD:Command">Command</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDiffCommand">StatefulDiffCommand</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDiffCommand* (ARDOUR::Session::*)(boost::shared_ptr&lt;PBD::StatefulDestructible&gt;)">add_stateful_diff_command</abbr></span><span class="functionargs"> (<a class="" href="#PBD:StatefulDestructiblePtr">StatefulDestructiblePtr</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 (ARDOUR::Session::*)(std::string const&amp;)">begin_reversible_command</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 (ARDOUR::Session::*)(Command*)">commit_reversible_command</abbr></span><span class="functionargs"> (<a class="" href="#PBD:Command">Command</a>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#PBD:Controllable">Controllable</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;PBD::Controllable&gt; (ARDOUR::Session::*)(PBD::ID const&amp;)">controllable_by_id</abbr></span><span class="functionargs"> (<a class="" href="#PBD:ID">ID</a>)</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 (ARDOUR::Session::*)() const">current_end_frame</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 (ARDOUR::Session::*)() const">current_start_frame</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -933,8 +1482,10 @@ 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 (ARDOUR::Session::*)()">goto_end</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 (ARDOUR::Session::*)()">goto_start</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 (ARDOUR::Session::*)() const">last_transport_start</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Location">Location</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Locations* (ARDOUR::Session::*)()">locations</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 (ARDOUR::Session::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:RouteList">RouteList</a></td><td class="decl"><span class="functionname"><abbr title="std::list&lt;boost::shared_ptr&lt;ARDOUR::Route&gt; &gt; (ARDOUR::Session::*)(unsigned int, std::string const&amp;, std::string const&amp;, ARDOUR::PlaylistDisposition)">new_route_from_template</abbr></span><span class="functionargs"> (<span class="em">unsigned int</span>, <span class="em">std::string</span>, <span class="em">std::string</span>, <a class="" href="#ARDOUR.PlaylistDisposition">PlaylistDisposition</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> create a new track or bus from a template (XML path) </p><dl><dt class="param-name-index-0">how_many</dt><dd class="param-descr-index-0"> how many tracks or busses to create </dd><dt class="param-name-index-1">template_path</dt><dd class="param-descr-index-1"> path to xml template file </dd><dt class="param-name-index-2">name</dt><dd class="param-descr-index-2"> name (prefix) of the route to create </dd><dt class="param-name-index-3">pd</dt><dd class="param-descr-index-3"> Playlist disposition </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  list of newly created routes</p></div></div></td></tr>
  <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (ARDOUR::Session::*)() const">nominal_frame_rate</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"> &quot;native&quot; sample rate of session, regardless of current audioengine rate, pullup&#47;down etc </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 (ARDOUR::Session::*)() const">path</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -947,6 +1498,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><a class="" href="#ARDOUR:Route">Route</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Route&gt; (ARDOUR::Session::*)(std::string)">route_by_name</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:Route">Route</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Route&gt; (ARDOUR::Session::*)(unsigned int)">route_by_remote_id</abbr></span><span class="functionargs"> (<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 (ARDOUR::Session::*)(std::string, bool, bool, bool)">save_state</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">bool</span>, <span class="em">bool</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> save session </p><dl><dt class="param-name-index-0">snapshot_name</dt><dd class="param-descr-index-0"> name of the session (use an empty string for the current name) </dd><dt class="param-name-index-1">pending</dt><dd class="param-descr-index-1"> save a &#39;recovery&#39;, not full state (default: false) </dd><dt class="param-name-index-2">switch_to_snapshot</dt><dd class="param-descr-index-2"> switch to given snapshot after saving (default: false) </dd><dt class="param-name-index-3">template_only</dt><dd class="param-descr-index-3"> save a session template (default: false) </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  zero on success</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::Session::*)()">scripts_changed</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 (ARDOUR::Session::*)()">set_dirty</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 (ARDOUR::Session::*)() const">snap_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -963,17 +1515,53 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  </table>
 <h3 id="ARDOUR:SessionObject" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:SessionObject</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::SessionObject &gt;, boost::weak_ptr&lt; ARDOUR::SessionObject &gt;</p>
- <p class="classinfo">is-a: <a class="" href="#PBD:StatefulDestructiblePtr">PBD:StatefulDestructiblePtr</a></p>
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
+<h3 id="ARDOUR:SideChain" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:SideChain</h3>
+<p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::SideChain &gt;, boost::weak_ptr&lt; ARDOUR::SideChain &gt;</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:IOProcessor">ARDOUR:IOProcessor</a></p>
+<div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:IOProcessor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">input</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_input_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::IOProcessor::*)() const">natural_output_streams</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IO">IO</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::IO&gt; (ARDOUR::IOProcessor::*)()">output</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:Processor</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::Processor::*)()">activate</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 (ARDOUR::Processor::*)() const">active</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AutomationControl">AutomationControl</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::AutomationControl&gt; (ARDOUR::Automatable::*)(Evoral::Parameter const&amp;, bool)">automation_control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Evoral:Control">Control</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;Evoral::Control&gt; (Evoral::ControlSet::*)(Evoral::Parameter const&amp;, bool)">control</abbr></span><span class="functionargs"> (<a class="" href="#Evoral:Parameter">Parameter</a>, <span class="em">bool</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 (ARDOUR::Processor::*)()">deactivate</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 (ARDOUR::Processor::*)() const">display_name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Automatable">Automatable</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Automatable (ARDOUR::Processor::*)()">to_automatable</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:PluginInsert">PluginInsert</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::PluginInsert (ARDOUR::Processor::*)()">to_insert</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:IOProcessor">IOProcessor</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::IOProcessor (ARDOUR::Processor::*)()">to_ioprocessor</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:SideChain">SideChain</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::SideChain (ARDOUR::Processor::*)()">to_sidechain</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:Source" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;ARDOUR:Source</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; ARDOUR::Source &gt;, boost::weak_ptr&lt; ARDOUR::Source &gt;</p>
@@ -999,7 +1587,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h3 id="ARDOUR:TempoMap" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:TempoMap</h3>
 <p class="cdecl"><em>C&#8225;</em>: ARDOUR::TempoMap</p>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state </p></div>
+<div class="classdox"><p class="para-brief"> Tempo Map - mapping of timecode to musical time. convert audio-samples, sample-rate to Bar&#47;Beat&#47;Tick, Meter&#47;Tempo</p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (ARDOUR::TempoMap::*)(ARDOUR::Meter const&amp;, Timecode::BBT_Time)">add_meter</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Meter">Meter</a>, <a class="" href="#Timecode:BBT_TIME">BBT_TIME</a>)</span></td><td class="fill"></td></tr>
@@ -1011,39 +1599,56 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Region">Region</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Region&gt; (ARDOUR::Track::*)(long, long, ARDOUR::InterThreadInfo&amp;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool)">bounce_range</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <a class="" href="#ARDOUR:InterThreadInfo">InterThreadInfo&amp;</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, bool) const">bounceable</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">bool</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 (ARDOUR::Track::*)()">can_record</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="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Playlist">Playlist</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Playlist&gt; (ARDOUR::Track::*)()">playlist</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 (ARDOUR::Track::*)() const">record_enabled</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 (ARDOUR::Track::*)() const">record_safe</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 (ARDOUR::Track::*)(std::string const&amp;)">set_name</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_enabled</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</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 (ARDOUR::Track::*)(bool, PBD::Controllable::GroupControlDisposition)">set_record_safe</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <a class="" href="#PBD.Controllable.GroupControlDisposition">GroupControlDisposition</a>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:AudioTrack">AudioTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::AudioTrack (ARDOUR::Track::*)()">to_audio_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:MidiTrack">MidiTrack</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::MidiTrack (ARDOUR::Track::*)()">to_midi_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from ARDOUR:Route</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">active</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, int, ARDOUR::Route::ProcessorStreams*, bool)">add_processor_by_index</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">int</span>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">add_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">amp</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 (ARDOUR::Route::*)()">comment</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, unsigned int, ARDOUR::ChanCount)">customize_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <span class="em">unsigned int</span>, <a class="" href="#ARDOUR:ChanCount">ChanCount</a>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Delivery">Delivery</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Delivery&gt; (ARDOUR::Route::*)() const">main_outs</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"> the signal processorat at end of the processing chain which produces output </p></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (ARDOUR::Route::*)() const">muted</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_inputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:ChanCount">ChanCount</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::ChanCount (ARDOUR::Route::*)() const">n_outputs</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:Processor">Processor</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Processor&gt; (ARDOUR::Route::*)(unsigned int) const">nth_plugin</abbr></span><span class="functionargs"> (<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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*, bool)">remove_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>, <span class="em">bool</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">remove_sidechain</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>)</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::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;, boost::shared_ptr&lt;ARDOUR::Processor&gt;, ARDOUR::Route::ProcessorStreams*)">replace_processor</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Processor">Processor</a>, <a class="" href="#ARDOUR:Route:ProcessorStreams">ProcessorStreams</a>)</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 (ARDOUR::Route::*)(boost::shared_ptr&lt;ARDOUR::Processor&gt;)">reset_plugin_insert</abbr></span><span class="functionargs"> (<a class="" href="#ARDOUR:Processor">Processor</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 (ARDOUR::Route::*)(bool, void*)">set_active</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">void*</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 (ARDOUR::Route::*)(std::string, void*)">set_comment</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">void*</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 (ARDOUR::Route::*)(bool)">set_strict_io</abbr></span><span class="functionargs"> (<span class="em">bool</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 (ARDOUR::Route::*)() const">soloed</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 (ARDOUR::Route::*)() const">strict_io</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Amp">Amp</a></td><td class="decl"><span class="functionname"><abbr title="boost::shared_ptr&lt;ARDOUR::Amp&gt; (ARDOUR::Route::*)() const">trim</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:Track">Track</a></td><td class="decl"><span class="functionname"><abbr title="ARDOUR::Track (ARDOUR::Route::*)()">to_track</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h4 class="cls">Inherited from ARDOUR:SessionObject</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 (ARDOUR::SessionObject::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
-</table>
-<h4 class="cls">Inherited from PBD:StatefulPtr</h4>
-<table class="classmembers">
- <tr><th colspan="3">Methods</th></tr>
- <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Cast</th></tr>
+ <tr><td class="def"><a class="" href="#PBD:Stateful">Stateful</a></td><td class="decl"><span class="functionname"><abbr title="PBD::Stateful (ARDOUR::SessionObject::*)()">to_stateful</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#PBD:StatefulDestructible">StatefulDestructible</a></td><td class="decl"><span class="functionname"><abbr title="PBD::StatefulDestructible (ARDOUR::SessionObject::*)()">to_statefuldestructible</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="ARDOUR:WeakAudioSourceList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:WeakAudioSourceList</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::list&lt;boost::weak_ptr&lt;ARDOUR::AudioSource&gt; &gt;</p>
@@ -1058,20 +1663,6 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::list&lt;boost::weak_ptr&lt;ARDOUR::AudioSource&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="ARDOUR:WeakPortSet" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:WeakPortSet</h3>
-<p class="cdecl"><em>C&#8225;</em>: std::set&lt;boost::weak_ptr&lt;ARDOUR::AudioPort&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">ARDOUR.WeakPortSet</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::AudioPort</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 (std::set&lt;boost::weak_ptr&lt;ARDOUR::AudioPort&gt; &gt; &gt;::*)()">clear</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::set&lt;boost::weak_ptr&lt;ARDOUR::AudioPort&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::set&lt;boost::weak_ptr&lt;ARDOUR::AudioPort&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="ARDOUR:WeakRouteList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ARDOUR:WeakRouteList</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::list&lt;boost::weak_ptr&lt;ARDOUR::Route&gt; &gt;</p>
 <div class="clear"></div>
@@ -1098,14 +1689,36 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><td class="def"><span class="em">unsigned long</span></td><td class="decl"><span class="functionname"><abbr title="unsigned long (std::list&lt;boost::weak_ptr&lt;ARDOUR::Source&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="ArdourUI:ArdourMarker" class="cls opaque"><abbr title="Opaque Object">&empty;</abbr>&nbsp;ArdourUI:ArdourMarker</h3>
+<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>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> Base class for objects with auto-disconnection. trackable must be inherited when objects shall automatically invalidate slots referring to them on destruction. A slot built from a member function of a trackable derived type installs a callback that is invoked when the trackable object is destroyed or overwritten.</p><p> add_destroy_notify_callback() and remove_destroy_notify_callback() can be used to manually install and remove callbacks when notification of the object dying is needed.</p><p> notify_callbacks() invokes and removes all previously installed callbacks and can therefore be used to disconnect from all signals.</p><p> Note that there is no virtual destructor. Don&#39;t use <tt>trackable*</tt> as pointer type for managing your data or the destructors of your derived types won&#39;t be called when deleting your objects.</p><pre> signal</pre></div>
-<p class="classinfo">This class object is only used indirectly as return-value and function-parameter. It provides no methods by itself.</p>
+<div class="classdox"><p class="para-brief"> Location Marker</p><p> Editor ruler representation of a location marker or range on the timeline.</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 (ArdourMarker::*)() const">name</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 (ArdourMarker::*)() const">position</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourMarker.Type">Type</a></td><td class="decl"><span class="functionname"><abbr title="ArdourMarker::Type (ArdourMarker::*)()">type</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h3 id="ArdourUI:ArdourMarkerList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:ArdourMarkerList</h3>
+<p class="cdecl"><em>C&#8225;</em>: std::list&lt;ArdourMarker* &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">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"><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>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)()">reverse</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::list&lt;ArdourMarker* &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>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)()">unique</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="ArdourUI:Editor" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:Editor</h3>
 <p class="cdecl"><em>C&#8225;</em>: PublicEditor</p>
 <div class="clear"></div>
+<div class="classdox"><p class="para-brief"> This class contains just the public interface of the Editor class, in order to decouple it from the private implementation, so that callers of PublicEditor need not be recompiled if private methods or member variables change.</p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)(std::string, std::string)">access_action</abbr></span><span class="functionargs"> (<span class="em">std::string</span>, <span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
@@ -1133,11 +1746,14 @@ 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 (PublicEditor::*)() const">follow_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 editor is following the playhead </p></div></div></td></tr>
  <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (PublicEditor::*)() const">get_current_zoom</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:Selection">Selection</a></td><td class="decl"><span class="functionname"><abbr title="Selection&amp; (PublicEditor::*)() const">get_cut_buffer</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">unsigned int</span></td><td class="decl"><span class="functionname"><abbr title="unsigned int (PublicEditor::*)(long)">get_grid_beat_divisions</abbr></span><span class="functionargs"> (<span class="em">long</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(<a class="" href="#Evoral:Beats">Beats</a>, ...)</td><td class="decl"><span class="functionname"><abbr title="Evoral::Beats (PublicEditor::*)(bool&amp;, long)">get_grid_type_as_beats</abbr></span><span class="functionargs"> (<span class="em">bool&amp;</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
  <tr><td class="def"><em>LuaTable</em>(<span class="em">long</span>, ...)</td><td class="decl"><span class="functionname"><abbr title="long (PublicEditor::*)(long, long&amp;)">get_nudge_distance</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long&amp;</span>)</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 (PublicEditor::*)(long, unsigned int, long)">get_paste_offset</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">unsigned int</span>, <span class="em">long</span>)</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::*)(double&amp;, double&amp;) const">get_pointer_position</abbr></span><span class="functionargs"> (<span class="em">double&amp;</span>, <span class="em">double&amp;</span>)</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:Selection">Selection</a></td><td class="decl"><span class="functionname"><abbr title="Selection&amp; (PublicEditor::*)() const">get_selection</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em>(<span class="em">bool</span>, ...)</td><td class="decl"><span class="functionname"><abbr title="bool (PublicEditor::*)(long&amp;, long&amp;) const">get_selection_extents</abbr></span><span class="functionargs"> (<span class="em">long&amp;</span>, <span class="em">long&amp;</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 (PublicEditor::*)() const">get_smart_mode</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 (PublicEditor::*)() const">get_videotl_bar_height</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (PublicEditor::*)() const">get_y_origin</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
@@ -1170,8 +1786,10 @@ 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::*)()">separate_region_from_selection</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 (PublicEditor::*)(bool, bool)">set_follow_playhead</abbr></span><span class="functionargs"> (<span class="em">bool</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set whether the editor should follow the playhead. </p><dl><dt class="param-name-index-0">yn</dt><dd class="param-descr-index-0"> true to follow playhead, otherwise false. </dd><dt class="param-name-index-1">catch_up</dt><dd class="param-descr-index-1"> true to reset the editor view to show the playhead (if yn == true), otherwise false.</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)(long, long, std::string)">set_loop_range</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <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 (PublicEditor::*)(Editing::MouseMode, bool)">set_mouse_mode</abbr></span><span class="functionargs"> (<a class="" href="#Editing.MouseMode">MouseMode</a>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set the mouse mode (gain, object, range, timefx etc.) </p><dl><dt class="param-name-index-0">m</dt><dd class="param-descr-index-0"> Mouse mode (defined in editing_syms.h) </dd><dt class="param-name-index-1">force</dt><dd class="param-descr-index-1"> Perform the effects of the change even if no change is required (ie even if the current mouse mode is equal to </dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PublicEditor::*)(long, long, std::string)">set_punch_range</abbr></span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>, <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 (PublicEditor::*)(bool)">set_show_measures</abbr></span><span class="functionargs"> (<span class="em">bool</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 (PublicEditor::*)(Editing::SnapMode)">set_snap_mode</abbr></span><span class="functionargs"> (<a class="" href="#Editing.SnapMode">SnapMode</a>)</span></td><td class="fill"></td></tr>
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Set the snap mode. </p><dl><dt class="param-name-index-0">m</dt><dd class="param-descr-index-0"> Snap mode (defined in editing_syms.h)</dd></dl></div></td></tr>
@@ -1194,6 +1812,25 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Undo some transactions. </p><dl><dt class="param-name-index-0">n</dt><dd class="param-descr-index-0"> Number of transactions to undo.</dd></dl></div></td></tr>
  <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (PublicEditor::*)() const">visible_canvas_height</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="ArdourUI:MarkerSelection" class="cls opaque"><abbr title="Opaque Object">&empty;</abbr>&nbsp;ArdourUI:MarkerSelection</h3>
+<p class="cdecl"><em>C&#8225;</em>: MarkerSelection</p>
+ <p class="classinfo">is-a: <a class="" href="#ArdourUI:ArdourMarkerList">ArdourUI:ArdourMarkerList</a></p>
+<div class="clear"></div>
+<p class="classinfo">This class object is only used indirectly as return-value and function-parameter. It provides no methods by itself.</p>
+<h4 class="cls">Inherited from ArdourUI:ArdourMarkerList</h4>
+<table class="classmembers">
+ <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"><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>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)()">reverse</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::list&lt;ArdourMarker* &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>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (std::list&lt;ArdourMarker* &gt;::*)()">unique</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
 <h3 id="ArdourUI:RegionSelection" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:RegionSelection</h3>
 <p class="cdecl"><em>C&#8225;</em>: RegionSelection</p>
 <div class="clear"></div>
@@ -1201,10 +1838,67 @@ 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">void</span></td><td class="decl"><span class="functionname"><abbr title="void (RegionSelection::*)()">clear_all</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"> Empty this RegionSelection.</p></div></td></tr>
  <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (RegionSelection::*)() const">end_frame</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 (RegionSelection::*)() const">n_midi_regions</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RegionList">RegionList</a></td><td class="decl"><span class="functionname"><abbr title="std::list&lt;boost::shared_ptr&lt;ARDOUR::Region&gt; &gt; (RegionSelection::*)() const">regionlist</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 (RegionSelection::*)() const">start</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="ArdourUI:Selection" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:Selection</h3>
+<p class="cdecl"><em>C&#8225;</em>: Selection</p>
+<div class="clear"></div>
+<div class="classdox"><p class="para-brief"> The Selection class holds lists of selected items (tracks, regions, etc. etc.). </p></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Selection::*)()">clear</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"> Clear everything from the Selection </p></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Selection::*)()">clear_all</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 (Selection::*)(bool)">empty</abbr></span><span class="functionargs"> (<span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> check if all selections are empty </p><dl><dt class="param-name-index-0">internal_selection</dt><dd class="param-descr-index-0"> also check object internals (e.g midi notes, automation points), when false only check objects. </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  true if nothing is selected.</p></div></div></td></tr>
+ <tr><th colspan="3">Data Members</th></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:MarkerSelection">ArdourUI:MarkerSelection</a></td><td class="decl"><span class="functionname">markers</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:RegionSelection">ArdourUI:RegionSelection</a></td><td class="decl"><span class="functionname">regions</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:TimeSelection">ArdourUI:TimeSelection</a></td><td class="decl"><span class="functionname">time</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#ArdourUI:TrackSelection">ArdourUI:TrackSelection</a></td><td class="decl"><span class="functionname">tracks</span></td><td class="fill"></td></tr>
+ </table>
+<h3 id="ArdourUI:TimeSelection" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:TimeSelection</h3>
+<p class="cdecl"><em>C&#8225;</em>: TimeSelection</p>
+ <p class="classinfo">is-a: <a class="" href="#ARDOUR:AudioRangeList">ARDOUR:AudioRangeList</a></p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname"><abbr title="long (TimeSelection::*)()">end_frame</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 (TimeSelection::*)()">length</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 (TimeSelection::*)()">start</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from ARDOUR:AudioRangeList</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Constructor</th></tr>
+ <tr><td class="def">&Copf;</td><td class="decl"><span class="functionname">ARDOUR.AudioRangeList</span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::list&lt;ARDOUR::AudioRange &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;ARDOUR::AudioRange &gt;::*)()">reverse</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::list&lt;ARDOUR::AudioRange &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="ArdourUI:TrackSelection" class="cls opaque"><abbr title="Opaque Object">&empty;</abbr>&nbsp;ArdourUI:TrackSelection</h3>
+<p class="cdecl"><em>C&#8225;</em>: TrackSelection</p>
+ <p class="classinfo">is-a: <a class="" href="#ArdourUI:TrackViewList">ArdourUI:TrackViewList</a></p>
+<div class="clear"></div>
+<p class="classinfo">This class object is only used indirectly as return-value and function-parameter. It provides no methods by itself.</p>
+<h4 class="cls">Inherited from ArdourUI:TrackViewList</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RouteList">RouteList</a></td><td class="decl"><span class="functionname"><abbr title="std::list&lt;boost::shared_ptr&lt;ARDOUR::Route&gt; &gt; (TrackViewList::*)() const">routelist</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h3 id="ArdourUI:TrackViewList" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;ArdourUI:TrackViewList</h3>
+<p class="cdecl"><em>C&#8225;</em>: TrackViewList</p>
+<div class="clear"></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:RouteList">RouteList</a></td><td class="decl"><span class="functionname"><abbr title="std::list&lt;boost::shared_ptr&lt;ARDOUR::Route&gt; &gt; (TrackViewList::*)() const">routelist</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="C:DoubleVector" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;C:DoubleVector</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::vector&lt;double &gt;</p>
 <div class="clear"></div>
@@ -1329,7 +2023,7 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> Makes a copy of the current state of the Context and saves it on an internal stack of saved states. When restore() is called, it will be restored to the saved state. Multiple calls to save() and restore() can be nested; each call to restore() restores the state from the matching paired save().</p><p> It isn&#39;t necessary to clear all saved states before a cairo_t is freed. Any saved states will be freed when the Context is destroyed.</p><p> restore()</p></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, 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;&amp;, double)">set_dash</abbr></span><span class="functionargs"> (<a class="" href="#C:DoubleVector">DoubleVector&amp;</a>, <span class="em">double</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 (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 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>
@@ -1377,7 +2071,25 @@ 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">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(double, double, bool, bool)">add</abbr></span><span class="functionargs"> (<span class="em">double</span>, <span class="em">double</span>, <span class="em">bool</span>, <span class="em">bool</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> add automation events </p><dl><dt class="param-name-index-0">when</dt><dd class="param-descr-index-0"> absolute time in samples </dd><dt class="param-name-index-1">value</dt><dd class="param-descr-index-1"> parameter value </dd><dt class="param-name-index-2">with_guards</dt><dd class="param-descr-index-2"> if true, add guard-points </dd><dt class="param-name-index-3">with_initial</dt><dd class="param-descr-index-3"> if true, add an initial point if the list is empty</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(double, double)">clear</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"> remove all automation events between the given time range </p><dl><dt class="param-name-index-0">start</dt><dd class="param-descr-index-0"> start of range (inclusive) in audio samples </dd><dt class="param-name-index-1">end</dt><dd class="param-descr-index-1"> end of range (inclusive) in audio samples</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (Evoral::ControlList::*)(double)">eval</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"> query value at given time (takes a read-lock, not safe while writing automation) </p><dl><dt class="param-name-index-0">where</dt><dd class="param-descr-index-0"> absolute time in samples </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  parameter value</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (Evoral::ControlList::*)() const">in_write_pass</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><a class="" href="#Evoral.ControlList.InterpolationStyle">InterpolationStyle</a></td><td class="decl"><span class="functionname"><abbr title="Evoral::ControlList::InterpolationStyle (Evoral::ControlList::*)() const">interpolation</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"> query interpolation style of the automation data </p><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  Interpolation Style</p></div></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><em>LuaTable</em>(<span class="em">double</span>, ...)</td><td class="decl"><span class="functionname"><abbr title="double (Evoral::ControlList::*)(double, bool&amp;)">rt_safe_eval</abbr></span><span class="functionargs"> (<span class="em">double</span>, <span class="em">bool&amp;</span>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> realtime safe version of eval, may fail if read-lock cannot be taken </p><dl><dt class="param-name-index-0">where</dt><dd class="param-descr-index-0"> absolute time in samples </dd><dt class="param-name-index-1">ok</dt><dd class="param-descr-index-1"> boolean reference if returned value is valid </dd></dl><div class="result-discussion"><p class="para-returns"><span class="word-returns">Returns</span>  parameter value</p></div></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(Evoral::ControlList::InterpolationStyle)">set_interpolation</abbr></span><span class="functionargs"> (<a class="" href="#Evoral.ControlList.InterpolationStyle">InterpolationStyle</a>)</span></td><td class="fill"></td></tr>
+<tr><td></td><td class="doc" colspan="2"><div class="dox"><p class="para-brief"> set the interpolation style of the automation data </p><dl><dt class="param-name-index-0">is</dt><dd class="param-descr-index-0"> interpolation style</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(double)">thin</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"> Thin the number of events in this list.</p><p> The thinning factor corresponds to the area of a triangle computed between three points in the list (time-difference * value-difference). If the area is large, it indicates significant non-linearity between the points.</p><p> Time is measured in samples, value is usually normalized to 0..1.</p><p> During automation recording we thin the recorded points using this value.  If a point is sufficiently co-linear with its neighbours (as defined by the area of the triangle formed by three of them), we will not include it in the list.  The larger the value, the more points are excluded, so this effectively measures the amount of thinning to be done.</p><dl><dt class="param-name-index-0">thinning_factor</dt><dd class="param-descr-index-0"> area-size (default: 20)</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(double)">truncate_end</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"> truncate the event list after the given time </p><dl><dt class="param-name-index-0">last_coordinate</dt><dd class="param-descr-index-0"> last event to include</dd></dl></div></td></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (Evoral::ControlList::*)(double)">truncate_start</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"> truncate the event list to the given time </p><dl><dt class="param-name-index-0">overall_length</dt><dd class="param-descr-index-0"> overall length</dd></dl></div></td></tr>
  </table>
 <h3 id="Evoral:ControlSet" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;Evoral:ControlSet</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; Evoral::ControlSet &gt;, boost::weak_ptr&lt; Evoral::ControlSet &gt;</p>
@@ -1440,6 +2152,16 @@ 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">toggled</span></td><td class="fill"></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>
  </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>
+<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">Evoral.Range</span><span class="functionargs"> (<span class="em">long</span>, <span class="em">long</span>)</span></td><td class="fill"></td></tr>
+ <tr><th colspan="3">Data Members</th></tr>
+ <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname">from</span></td><td class="fill"></td></tr>
+ <tr><td class="def"><span class="em">long</span></td><td class="decl"><span class="functionname">to</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="LuaSignal:Set" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;LuaSignal:Set</h3>
 <p class="cdecl"><em>C&#8225;</em>: std::bitset&lt;47ul&gt;</p>
 <div class="clear"></div>
@@ -1457,6 +2179,23 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <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>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (std::bitset&lt;47ul&gt;::*)(unsigned long) const">test</abbr></span><span class="functionargs"> (<span class="em">unsigned long</span>)</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="PBD:Command" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;PBD:Command</h3>
+<p class="cdecl"><em>C&#8225;</em>: Command</p>
+ <p class="classinfo">is-a: <a class="" href="#PBD:StatefulDestructible">PBD:StatefulDestructible</a></p>
+<div class="clear"></div>
+<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state with destruction notification </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 const&amp; (Command::*)() const">name</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 (Command::*)(std::string const&amp;)">set_name</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from PBD:Stateful</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
 <h3 id="PBD:Controllable" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;PBD:Controllable</h3>
 <p class="cdecl"><em>C&#8225;</em>: boost::shared_ptr&lt; PBD::Controllable &gt;, boost::weak_ptr&lt; PBD::Controllable &gt;</p>
  <p class="classinfo">is-a: <a class="" href="#PBD:StatefulDestructiblePtr">PBD:StatefulDestructiblePtr</a></p>
@@ -1465,10 +2204,13 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
  <tr><th colspan="3">Methods</th></tr>
  <tr><td class="def"><span class="em">double</span></td><td class="decl"><span class="functionname"><abbr title="double (PBD::Controllable::*)() const">get_value</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="void (*)()">isnil</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 (PBD::Controllable::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h4 class="cls">Inherited from PBD:StatefulPtr</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="PBD:ID" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;PBD:ID</h3>
@@ -1486,17 +2228,21 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state </p></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
 <h3 id="PBD:StatefulDestructible" class="cls opaque"><abbr title="Opaque Object">&empty;</abbr>&nbsp;PBD:StatefulDestructible</h3>
 <p class="cdecl"><em>C&#8225;</em>: PBD::StatefulDestructible</p>
  <p class="classinfo">is-a: <a class="" href="#PBD:Stateful">PBD:Stateful</a></p>
 <div class="clear"></div>
-<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state </p></div>
+<div class="classdox"><p class="para-brief"> Base class for objects with saveable and undoable state with destruction notification </p></div>
 <p class="classinfo">This class object is only used indirectly as return-value and function-parameter. It provides no methods by itself.</p>
 <h4 class="cls">Inherited from PBD:Stateful</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="PBD:StatefulDestructiblePtr" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;PBD:StatefulDestructiblePtr</h3>
@@ -1510,6 +2256,31 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h4 class="cls">Inherited from PBD:StatefulPtr</h4>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
+ <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+</table>
+<h3 id="PBD:StatefulDiffCommand" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;PBD:StatefulDiffCommand</h3>
+<p class="cdecl"><em>C&#8225;</em>: PBD::StatefulDiffCommand</p>
+ <p class="classinfo">is-a: <a class="" href="#PBD:Command">PBD:Command</a></p>
+<div class="clear"></div>
+<div class="classdox"><p class="para-brief"> A Command which stores its action as the differences between the before and after  state of a Stateful object.</p></div>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="bool (PBD::StatefulDiffCommand::*)() 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 (PBD::StatefulDiffCommand::*)()">undo</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
+<h4 class="cls">Inherited from PBD:Command</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 const&amp; (Command::*)() const">name</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 (Command::*)(std::string const&amp;)">set_name</abbr></span><span class="functionargs"> (<span class="em">std::string</span>)</span></td><td class="fill"></td></tr>
+</table>
+<h4 class="cls">Inherited from PBD:Stateful</h4>
+<table class="classmembers">
+ <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
 </table>
 <h3 id="PBD:StatefulPtr" class="cls pointerclass"><abbr title="Pointer Class">&Rarr;</abbr>&nbsp;PBD:StatefulPtr</h3>
@@ -1517,9 +2288,18 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <div class="clear"></div>
 <table class="classmembers">
  <tr><th colspan="3">Methods</th></tr>
+ <tr><td class="def"><span class="em">void</span></td><td class="decl"><span class="functionname"><abbr title="void (PBD::Stateful::*)()">clear_changes</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"> Forget about any changes to this object&#39;s properties </p></div></td></tr>
  <tr><td class="def"><span class="em">bool</span></td><td class="decl"><span class="functionname"><abbr title="void (*)()">isnil</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  <tr><td class="def"><a class="" href="#ARDOUR:OwnedPropertyList">OwnedPropertyList</a></td><td class="decl"><span class="functionname"><abbr title="PBD::OwnedPropertyList const&amp; (PBD::Stateful::*)() const">properties</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
  </table>
+<h3 id="PBD:XMLNode" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;PBD:XMLNode</h3>
+<p class="cdecl"><em>C&#8225;</em>: XMLNode</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 const&amp; (XMLNode::*)() const">name</abbr></span><span class="functionargs"> ()</span></td><td class="fill"></td></tr>
+ </table>
 <h3 id="Timecode:BBT_TIME" class="cls class"><abbr title="Class">&comp;</abbr>&nbsp;Timecode:BBT_TIME</h3>
 <p class="cdecl"><em>C&#8225;</em>: Timecode::BBT_Time</p>
 <div class="clear"></div>
@@ -1535,6 +2315,12 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li class="const">PBD.GroupControlDisposition.NoGroup</li>
 <li class="const">PBD.GroupControlDisposition.UseGroup</li>
 </ul>
+<h3 id="Evoral.ControlList.InterpolationStyle" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;Evoral.ControlList.InterpolationStyle</h3>
+<ul class="enum">
+<li class="const">Evoral.InterpolationStyle.Discrete</li>
+<li class="const">Evoral.InterpolationStyle.Linear</li>
+<li class="const">Evoral.InterpolationStyle.Curved</li>
+</ul>
 <h3 id="ARDOUR.ChanMapping" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ARDOUR.ChanMapping</h3>
 <ul class="enum">
 <li class="const">ARDOUR.ChanMapping.Invalid</li>
@@ -1569,6 +2355,8 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <h3 id="ARDOUR.AutomationType" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ARDOUR.AutomationType</h3>
 <ul class="enum">
 <li class="const">ARDOUR.AutomationType.PluginAutomation</li>
+<li class="const">ARDOUR.AutomationType.PluginAutomation</li>
+<li class="const">ARDOUR.AutomationType.PluginAutomation</li>
 </ul>
 <h3 id="ARDOUR.SrcQuality" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ARDOUR.SrcQuality</h3>
 <ul class="enum">
@@ -1580,6 +2368,12 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li class="const">ARDOUR.PlaylistDisposition.NewPlaylist</li>
 <li class="const">ARDOUR.PlaylistDisposition.SharePlaylist</li>
 </ul>
+<h3 id="ARDOUR.RegionPoint" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ARDOUR.RegionPoint</h3>
+<ul class="enum">
+<li class="const">ARDOUR.RegionPoint.Start</li>
+<li class="const">ARDOUR.RegionPoint.End</li>
+<li class="const">ARDOUR.RegionPoint.SyncPoint</li>
+</ul>
 <h3 id="ARDOUR.Session.RecordState" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ARDOUR.Session.RecordState</h3>
 <ul class="enum">
 <li class="const">ARDOUR.Session.RecordState.Disabled</li>
@@ -1655,6 +2449,20 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li class="const">LuaSignal.DiskUnderrun</li>
 <li class="const">LuaSignal.RegionPropertyChanged</li>
 </ul>
+<h3 id="ArdourMarker.Type" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;ArdourMarker.Type</h3>
+<ul class="enum">
+<li class="const">ArdourUI.MarkerType.Mark</li>
+<li class="const">ArdourUI.MarkerType.Tempo</li>
+<li class="const">ArdourUI.MarkerType.Meter</li>
+<li class="const">ArdourUI.MarkerType.SessionStart</li>
+<li class="const">ArdourUI.MarkerType.SessionEnd</li>
+<li class="const">ArdourUI.MarkerType.RangeStart</li>
+<li class="const">ArdourUI.MarkerType.RangeEnd</li>
+<li class="const">ArdourUI.MarkerType.LoopStart</li>
+<li class="const">ArdourUI.MarkerType.LoopEnd</li>
+<li class="const">ArdourUI.MarkerType.PunchIn</li>
+<li class="const">ArdourUI.MarkerType.PunchOut</li>
+</ul>
 <h3 id="Editing.SnapType" class="cls enum"><abbr title="Enum">&isin;</abbr>&nbsp;Editing.SnapType</h3>
 <ul class="enum">
 <li class="const">Editing.SnapToCDFrame</li>
@@ -1755,15 +2563,20 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 </ul>
 <h2 id="h_index" >Class Index</h2>
 <ul class="classindex">
+<li><a class="" href="#ARDOUR:Amp">ARDOUR:Amp</a></li>
 <li><a class="" href="#ARDOUR:AudioBackend">ARDOUR:AudioBackend</a></li>
 <li><a class="" href="#ARDOUR:AudioBackendInfo">ARDOUR:AudioBackendInfo</a></li>
 <li><a class="" href="#ARDOUR:AudioBuffer">ARDOUR:AudioBuffer</a></li>
 <li><a class="" href="#ARDOUR:AudioEngine">ARDOUR:AudioEngine</a></li>
+<li><a class="" href="#ARDOUR:AudioPort">ARDOUR:AudioPort</a></li>
+<li><a class="" href="#ARDOUR:AudioRange">ARDOUR:AudioRange</a></li>
+<li><a class="" href="#ARDOUR:AudioRangeList">ARDOUR:AudioRangeList</a></li>
 <li><a class="" href="#ARDOUR:AudioSource">ARDOUR:AudioSource</a></li>
 <li><a class="" href="#ARDOUR:AudioTrack">ARDOUR:AudioTrack</a></li>
 <li><a class="" href="#ARDOUR:AudioTrackList">ARDOUR:AudioTrackList</a></li>
 <li><a class="" href="#ARDOUR:Automatable">ARDOUR:Automatable</a></li>
 <li><a class="" href="#ARDOUR:AutomationControl">ARDOUR:AutomationControl</a></li>
+<li><a class="" href="#ARDOUR:AutomationList">ARDOUR:AutomationList</a></li>
 <li><a class="" href="#ARDOUR:BackendVector">ARDOUR:BackendVector</a></li>
 <li><a class="" href="#ARDOUR:BufferSet">ARDOUR:BufferSet</a></li>
 <li><a class="" href="#ARDOUR:ChanCount">ARDOUR:ChanCount</a></li>
@@ -1773,21 +2586,31 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li><a class="" href="#ARDOUR:DSP:DspShm">ARDOUR:DSP:DspShm</a></li>
 <li><a class="" href="#ARDOUR:DSP:LowPass">ARDOUR:DSP:LowPass</a></li>
 <li><a class="" href="#ARDOUR:DataType">ARDOUR:DataType</a></li>
+<li><a class="" href="#ARDOUR:Delivery">ARDOUR:Delivery</a></li>
 <li><a class="" href="#ARDOUR:DeviceStatus">ARDOUR:DeviceStatus</a></li>
 <li><a class="" href="#ARDOUR:DeviceStatusVector">ARDOUR:DeviceStatusVector</a></li>
+<li><a class="" href="#ARDOUR:GainControl">ARDOUR:GainControl</a></li>
+<li><a class="" href="#ARDOUR:IO">ARDOUR:IO</a></li>
+<li><a class="" href="#ARDOUR:IOProcessor">ARDOUR:IOProcessor</a></li>
+<li><a class="" href="#ARDOUR:InterThreadInfo">ARDOUR:InterThreadInfo</a></li>
 <li><a class="" href="#ARDOUR:Location">ARDOUR:Location</a></li>
+<li><a class="" href="#ARDOUR:LocationList">ARDOUR:LocationList</a></li>
 <li><a class="" href="#ARDOUR:LuaAPI">ARDOUR.LuaAPI</a></li>
 <li><a class="" href="#ARDOUR:LuaOSC:Address">ARDOUR:LuaOSC:Address</a></li>
 <li><a class="" href="#ARDOUR:Meter">ARDOUR:Meter</a></li>
 <li><a class="" href="#ARDOUR:MidiBuffer">ARDOUR:MidiBuffer</a></li>
+<li><a class="" href="#ARDOUR:MidiPort">ARDOUR:MidiPort</a></li>
 <li><a class="" href="#ARDOUR:MidiTrack">ARDOUR:MidiTrack</a></li>
 <li><a class="" href="#ARDOUR:MidiTrackList">ARDOUR:MidiTrackList</a></li>
 <li><a class="" href="#ARDOUR:OwnedPropertyList">ARDOUR:OwnedPropertyList</a></li>
 <li><a class="" href="#ARDOUR:ParameterDescriptor">ARDOUR:ParameterDescriptor</a></li>
+<li><a class="" href="#ARDOUR:Playlist">ARDOUR:Playlist</a></li>
 <li><a class="" href="#ARDOUR:Plugin">ARDOUR:Plugin</a></li>
 <li><a class="" href="#ARDOUR:PluginControl">ARDOUR:PluginControl</a></li>
 <li><a class="" href="#ARDOUR:PluginInfo">ARDOUR:PluginInfo</a></li>
 <li><a class="" href="#ARDOUR:PluginInsert">ARDOUR:PluginInsert</a></li>
+<li><a class="" href="#ARDOUR:Port">ARDOUR:Port</a></li>
+<li><a class="" href="#ARDOUR:PortSet">ARDOUR:PortSet</a></li>
 <li><a class="" href="#ARDOUR:PresetRecord">ARDOUR:PresetRecord</a></li>
 <li><a class="" href="#ARDOUR:Processor">ARDOUR:Processor</a></li>
 <li><a class="" href="#ARDOUR:Properties:BoolProperty">ARDOUR:Properties:BoolProperty</a></li>
@@ -1797,23 +2620,31 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li><a class="" href="#ARDOUR:PropertyList">ARDOUR:PropertyList</a></li>
 <li><a class="" href="#ARDOUR:Region">ARDOUR:Region</a></li>
 <li><a class="" href="#ARDOUR:RegionFactory">ARDOUR:RegionFactory</a></li>
+<li><a class="" href="#ARDOUR:RegionList">ARDOUR:RegionList</a></li>
+<li><a class="" href="#ARDOUR:RegionListPtr">ARDOUR:RegionListPtr</a></li>
 <li><a class="" href="#ARDOUR:Route">ARDOUR:Route</a></li>
 <li><a class="" href="#ARDOUR:Route:ProcessorStreams">ARDOUR:Route:ProcessorStreams</a></li>
 <li><a class="" href="#ARDOUR:RouteList">ARDOUR:RouteList</a></li>
 <li><a class="" href="#ARDOUR:RouteListPtr">ARDOUR:RouteListPtr</a></li>
 <li><a class="" href="#ARDOUR:Session">ARDOUR:Session</a></li>
 <li><a class="" href="#ARDOUR:SessionObject">ARDOUR:SessionObject</a></li>
+<li><a class="" href="#ARDOUR:SideChain">ARDOUR:SideChain</a></li>
 <li><a class="" href="#ARDOUR:Source">ARDOUR:Source</a></li>
 <li><a class="" href="#ARDOUR:Tempo">ARDOUR:Tempo</a></li>
 <li><a class="" href="#ARDOUR:TempoMap">ARDOUR:TempoMap</a></li>
 <li><a class="" href="#ARDOUR:Track">ARDOUR:Track</a></li>
 <li><a class="" href="#ARDOUR:WeakAudioSourceList">ARDOUR:WeakAudioSourceList</a></li>
-<li><a class="" href="#ARDOUR:WeakPortSet">ARDOUR:WeakPortSet</a></li>
 <li><a class="" href="#ARDOUR:WeakRouteList">ARDOUR:WeakRouteList</a></li>
 <li><a class="" href="#ARDOUR:WeakSourceList">ARDOUR:WeakSourceList</a></li>
 <li><a class="" href="#ArdourUI:ArdourMarker">ArdourUI:ArdourMarker</a></li>
+<li><a class="" href="#ArdourUI:ArdourMarkerList">ArdourUI:ArdourMarkerList</a></li>
 <li><a class="" href="#ArdourUI:Editor">ArdourUI:Editor</a></li>
+<li><a class="" href="#ArdourUI:MarkerSelection">ArdourUI:MarkerSelection</a></li>
 <li><a class="" href="#ArdourUI:RegionSelection">ArdourUI:RegionSelection</a></li>
+<li><a class="" href="#ArdourUI:Selection">ArdourUI:Selection</a></li>
+<li><a class="" href="#ArdourUI:TimeSelection">ArdourUI:TimeSelection</a></li>
+<li><a class="" href="#ArdourUI:TrackSelection">ArdourUI:TrackSelection</a></li>
+<li><a class="" href="#ArdourUI:TrackViewList">ArdourUI:TrackViewList</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:IntArray">C:IntArray</a></li>
@@ -1828,16 +2659,19 @@ Pointer Classes cannot be created in lua scripts. It always requires a call to C
 <li><a class="" href="#Evoral:MidiEvent">Evoral:MidiEvent</a></li>
 <li><a class="" href="#Evoral:Parameter">Evoral:Parameter</a></li>
 <li><a class="" href="#Evoral:ParameterDescriptor">Evoral:ParameterDescriptor</a></li>
+<li><a class="" href="#Evoral:Range">Evoral:Range</a></li>
 <li><a class="" href="#LuaSignal:Set">LuaSignal:Set</a></li>
+<li><a class="" href="#PBD:Command">PBD:Command</a></li>
 <li><a class="" href="#PBD:Controllable">PBD:Controllable</a></li>
 <li><a class="" href="#PBD:ID">PBD:ID</a></li>
 <li><a class="" href="#PBD:Stateful">PBD:Stateful</a></li>
 <li><a class="" href="#PBD:StatefulDestructible">PBD:StatefulDestructible</a></li>
 <li><a class="" href="#PBD:StatefulDestructiblePtr">PBD:StatefulDestructiblePtr</a></li>
+<li><a class="" href="#PBD:StatefulDiffCommand">PBD:StatefulDiffCommand</a></li>
 <li><a class="" href="#PBD:StatefulPtr">PBD:StatefulPtr</a></li>
+<li><a class="" href="#PBD:XMLNode">PBD:XMLNode</a></li>
 <li><a class="" href="#Timecode:BBT_TIME">Timecode:BBT_TIME</a></li>
 </ul>
+<!-- 208 / 902 !-->
 </div>
-<div class="luafooter">Ardour 4.7-469-g3f71e66 &nbsp;-&nbsp; Sat, 26 Mar 2016 21:11:56 +0100</div>
-
+<div class="luafooter">Ardour 4.7-687-gdd57b33 &nbsp;-&nbsp; Tue, 12 Apr 2016 14:06:18 +0200</div>