+<p>
+ Ardour sends any feedback to the port and address that sent any
+ feedback request. The port does not have to match Ardour's port. In
+ fact it is better not to. This means that Ardour can deal with more
+ than one controller at a time. The two controllers can bank
+ independantly and even use different math for faders. This could be
+ used to allow talent to adjust their own monitor mix using a tablet
+ or phone that can run an OSC controller.
+</p>
+
+<h2>Control Surface Set Up</h2>
+
+<p>
+ Control surface set up allows the controller to tell Ardour about it's
+ capabilities. The surface can tell Ardour how many control strips it
+ has for banking, if it is capable of setting it's faders or buttons
+ to valuse set by Aurdour's GUI or automation, What kind of math the
+ faders use and more.
+</p>
+<dl class="bindings">
+ <dt><kbd class="osc">/set_surface <em>bank_size</em> <em>strip_types</em>
+ <em>feedback</em> <em>fadermode</em></kbd></dt>
+ <dd>where <em>bank_size</em> is an int ranging from 0 to about 65000
+ (16bits) The value 0 means no banking (or infinite bank size).
+ <em>strip_types</em> (when implemented) is a bitset that will
+ determine what kind of channels will be included in the bank.
+ <em>feedback</em> is a bitset that determines what things should send
+ feedback to the control surface. <em>fadermode</em> is a string that
+ tells Ardour what kind of math the control surface's faders use.</dd>
+</dl>
+<p class="note">
+ <em>Strip Types</em> Coming soon... check for more info sometime.
+</p>
+<p class="note">
+ <em>Feedback</em> This is an integer made up of bits. The easy way to
+ deal with this is to think of feedback items being worth a number and
+ then adding all those numbers together for a value to send.
+ <ul>
+ <li>
+ 1 - feedback values of controls in strips.
+ </li>
+ <li>
+ 2 - Send meter values (not coded yet).
+ </li>
+ <li>
+ 4 - Send timecode (not codeed yet).
+ </li>
+ <li>
+ 8 - Send Bar and Beat (not coded yet).
+ </li>
+ <li>
+ 16 - Enable master section feedback (not coded yet).
+ </li>
+ So using a value of 17 would turn on feedback for strip and master
+ controls, but leave meters, timecode and bar/beat feedback off.
+ </ul>
+</p>
+<p class="note">
+ Gainmode is a string that is one of:
+ <ul>
+ <li><em>ABS</em> Absolute Gain as a float value from 0.0 to 2.0
+ sent in the same manner as the OSC command. For example:
+ /strip/gainabs RID Value.</li>
+ <li><em>DB</em> dB value as a float from -200 to +6. Sent as
+ /strip/gaindB RID value.</li>
+ <li><em>FADER</em> A positional fader based on the same math as
+ Ardour's GUI. A float from 0.0 to 1.0.
+ Sent as /strip/fader RID value</li>
+ <li><em>INT1024</em> Also a positonal value, but an Integer from
+ 0 to 1023 (1024 values) for controllers with no FPU. Sent as
+ /strip/fader1024 RID value</li>
+ </ul>
+<p>
+ Any time the <em>/set_surface</em> command is sent, the current bank
+ is recalculated and if feedback is turned on, the values of each
+ strip's controls are sent (or refreshed) as well.
+</p>
+<p>If /set_surface is not sent, the default values of:
+ <ul>
+ <li><em>Bank Size</em>: 0 - No banking (or infinite bank size).</li>
+ <li><em>Strip Types</em>: All strip types except hidden.</li>
+ <li><em>Feedback</em>: Off.</li>
+ <li><em>Fader Mode</em>: ABS - Absolute gain.</li>
+ </ul>
+ These values give the same behaviour as prior versions of Ardour.
+</p>
+